// JavaScript Document
var Namae_FW = {
    Name: 'namae javascript framework',
    Version: '0.4b3',
	Web: 'http://www.namaestudio.com/'
};

function $(){
	var elementi = new Array();
    var n = arguments.length;
    for(var i=0;i<n;i++){
        var el = arguments[i];
        if(typeof(el) == "string"){
            if(document.getElementById) el=document.getElementById(el);
            else if(document.all) el=document.all[el];
        }
        if(n==1) return el;
        elementi.push(el);
    }
    return elementi;
}

//--------- Estensione del DOM -----------
function insertAfter(parent, node, referenceNode){
	parent.insertBefore(node, referenceNode.nextSibling);
}

function isset(variabile){
	try{
		if(variabile) return true;
		return false;
	}catch(e){
		return false;
	}
}

function in_array(val,array){ //funzione come in_array di php
	for(var i=0,flag=false;i<array.length;i++){
		if(array[i]==val){
			flag=true;
			break;
		}
	}
	return flag;
}

//-------- AJAX ----------
function NS_Ajax(){
	var postCharset = "UTF-8"; //charset usato per l'invio in post es. "iso-8859-15";
	var Ajax={
		Send: function(str,url,method,callBackFunction){
			//callBackFunction può essere una stringa (nome della funzione da chiamare) o un oggetto formato dai seguenti valori: {callback: "nome funzione da chiamare", obj: oggetto contenente la funzione, solitamente this}
			method=method.toLowerCase();
			if(method!="get" && method!="post") method = "post";
			this.callBackFunction = callBackFunction ? callBackFunction : false;
			//str = decodeURIComponent(str);
			//this.obj.setRequestHeader("connection", "close"); //chiude ogni altra connessione dell'elemento.
			if(method=="get"){
				this.obj.open("get",url+"?"+str,true);
				this.obj.onreadystatechange=this.Load;
				this.obj.send(null);
			}else{
				this.obj.open("post",url,true);
				this.obj.onreadystatechange=this.Load;
				this.obj.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset="+postCharset);
				this.obj.send(str);
			}
		},
		Load: function(){
			//alert(Ajax.obj.readyState); //for debug
			switch(Ajax.obj.readyState){
				case 0:
				case 1:
				case 2:
				case 3:
					break;
				case 4:
					//alert(Ajax.obj.status);
					//alert(Ajax.obj.responseText);
					if(Ajax.obj.status==200 || Ajax.obj.status==304){
						Ajax.text=Ajax.obj.responseText;
						Ajax.xml=Ajax.obj.responseXML;
						//alert(Ajax.callBackFunction); //for debug
						if(Ajax.callBackFunction){
							if(typeof(Ajax.callBackFunction)=="string"){
								eval(Ajax.callBackFunction+"()");
							}else{
								eval("Ajax.callBackFunction.obj."+Ajax.callBackFunction.callback+"();");
							}
						}
					}
					break;
			}
		},
		Reset: function(){
			this.support=false;
			if (window.XMLHttpRequest){
				this.obj=new XMLHttpRequest()
				if (this.obj.overrideMimeType){
					this.obj.overrideMimeType('text/xml');
					this.support="w3c";
				}
			}else if (window.ActiveXObject){
				try {
					this.obj=new ActiveXObject("Msxml2.XMLHTTP");
					this.support="ie2";
				} 
				catch (e){
					try{
						this.obj=new ActiveXObject("Microsoft.XMLHTTP");
						this.support="ie";
					}
					catch (e){}
				}
			}
			this.status=0;
			this.callback=null;
			this.text="";
			this.xml="";
		},
		analizzaXML: function(){
			if(arguments[0]){
				//XML in formato well-formed
				var x = window.XMLHttpRequest && !document.all ? 0 : 1;
				var xmlObj = {
					n: this.xml.childNodes.length>0 ? this.xml.childNodes[x].childNodes.length : 0,
					dati: this.xml.childNodes.length>0 ? this.xml.childNodes[x].childNodes : false
				};
			}else{
				try{
					xml = new ActiveXObject("Microsoft.XMLDOM");
					xml.loadXML(this.text);
				}catch(e){
					xml = this.xml;
				}
				var xmlObj = {
					n: xml.childNodes.length>0 ? xml.childNodes[0].childNodes.length : 0,
					dati: xml.childNodes.length>0 ? xml.childNodes[0].childNodes : false
				};
			}
			return xmlObj;
		},
		sendForm: function(form,callBackFunction){
			if(typeof(form)=="string") form=document.forms[form];
			for(i=0,str="";i<form.elements.length;i++){
				e=form.elements[i];
				switch(e.type){
					case "select-one":
						if(e.options.selectedIndex>-1){
							var v=e.options[e.options.selectedIndex].value;
							var name = e.name ? e.name : e.id;
							v=NS_encodeText(v,false);
							str+="&"+name+"="+v;
						}
						break;
					case "select-multiple":
						for(var value="",j=0;j<e.options.length;j++)
							if(e.options[j].selected) value+=e.options[j].value+",";
						value=value.substr(0,value.length-1);
						var name = e.name ? e.name : e.id;
						value=NS_encodeText(value,false);
						str+="&"+name+"="+value;
						break;
					case "text":
					case "hidden":
					case "textarea":
						var name = e.name ? e.name : e.id;
						value=NS_encodeText(e.value,false);
						str+="&"+name+"="+value;
						break;
					case "checkbox":
						if(e.value) v = e.checked ? e.value : "";
						else v = e.checked ? 1 : 0;
						var name = e.name ? e.name : e.id;
						v=NS_encodeText(v,false);
						str+="&"+name+"="+v;
						break;
					case "radio":
						if(e.checked){
							var name = e.name ? e.name : e.id;
							v=NS_encodeText(e.value,false);
							if(e.checked) str+="&"+name+"="+v;
						}
						break;
				}
			}

			str = str.length>0 ? str=str.substr(1) : "";
			method = form.method;
			url = (form.action=="" || form.action==null) ? false : form.action;
			if(!url) alert("Debug: action non specificata");
			this.Send(str,url,method,callBackFunction);
		},
		loadSelect: function(e,method,page,str){
			//se si vuole la funzione di callback settare nella variabile ajax la variabile callback (esempio: ajaxLista.callback = "nomefunzione"
			/*la pagina xml deve essere nel seguente formato:
			<DATI>
				<OP id="1" selected="1">Testo</OP>
				...
			</DATI> */
			if(typeof(e)=="string") e=$(e);
			if(!e) alert("Error loading select");
			e.options.length=1;
			e.options[0].text="Caricamento...";
			e.options[0].value="";
			e.disabled=true;
			Ajax.e=e;

			Ajax.Send(str,page,method,"Ajax.subLoadSelect");
		},
		subLoadSelect: function(){
			xml = Ajax.analizzaXML(true);
			e=Ajax.e;
			e.options.length=xml.n;
			for(i=0;i<xml.n;i++){
				l=xml.dati[i].childNodes[0].nodeValue;
				v=xml.dati[i].getAttribute("id");
				sel = xml.dati[i].getAttribute("selected");
				if(sel==1) e.options[i].selected=true;
				e.options[i].text=l;
				e.options[i].value=v;
			}
			e.disabled=false;
			//alert(this.callback); //for debug
			if(this.callback){
				if(typeof(this.callback)=="string"){
					eval(this.callback+"()");
				}else{
					eval("this.callback.obj."+this.callback.callback+"();");
				}
			}
		}
	};

	Ajax.Reset(); //inizializza le variabili
	
	return Ajax;
}

function NS_encodeText(t,Escape){
	var pattern;
	t = t.replace(/%/g,"%25");
	t = t.replace(/\+/g,"%2B");

	if(!Escape){
		pattern = new RegExp("/Ä/g");
		t = t.replace(pattern,"%80");
		t = t.replace(/&/g,"%26");
	}else{
		try{
			t=encodeURIComponent(t);
		}catch(e){
			t=escape(t);
		}
	}
	return t;
}
//------- END AJAX------

//------- IE FIX -------
function NS_ieFix(){
	var ieFix = {
		br: NS_browser(),
		selShow: function(show){ //nasconde/mostra le select
			//passare in arguments gli id delle forms o id delle select su cui non agire
			if(this.br.type=="ie" && this.br.version<=6){
				var f = document.forms;
				var args = new Array();
				for(var i=1;i<this.selShow.arguments.length;i++){
					args[i-1] = this.selShow.arguments[i];	
				}
				for(var iF=0;iF<f.length;iF++){
					//controllo che non ci siano form da "saltare" nel controllo
					if(!in_array(f[iF].id,args)){
						for(var iE=0;iE<f[iF].elements.length;iE++){
							var el = f[iF].elements[iE];
							if( (el.type=="select-one" || el.type=="select-multiple") && !in_array(el.id,args)){
								el.style.visibility = show ? "visible" : "hidden";
							}
						}
					}
				}
			}
		},
		
		selWidth: function(obj, Increase, normal_position, normal_width){ //errore explorer 6: allarga/restringe le select se il testo dentro è troppo grande. Uso: sull'elemento utilizzare onFocus e onBlur -> 
		//onmousedown="NS_ieFix().selWidth(this,true,'relative','120px');" onBlur="NS_ieFix().selWidth(this,false,'relative','120px');" onchange="this.onblur();"
		//relative può essere qualsiasi valore normale per position
		
			if(this.br.type=="ie" && this.br.version<=7){
				if(Increase){
					obj.style.position = "absolute";
					obj.style.width = "auto";
				}else{
					obj.style.position = normal_position;
					obj.style.width = normal_width;
				}
			}
		}
	};
	return ieFix;	
}
//----- END IE FIX -----

//------- UTILITY FORMS -------
function NS_VerForm(f,el,nameCssErrorStyle,verificaForm){
	/*
	inserire nella pagina web una chiamata a questa funzione in forma simile a questa
	elem_contr = NS_VerForm(Array("select","select2","textfield","textarea"),Array("","","text_eq_10","text_5"),Array("","","",""),0);
	dove il primo array passato indica il nome degli elementi della form da controllare, il secondo array indica i tipi di variabili (controllare i tipi nella lista lista seguente) e il terzo array indica i messaggi di errore (se vuoto saranno utilizzati i messaggi di errore predefiniti)
	
	nella form poi inserire questa stringa
	onsubmit="return NS_VerForm(this,elem_contr,'errorStyle',1);"
	dove al posto di elem_contr si metter? il nome della variabile creata con il passaggio precedente e al posot di errorStyle il nome del foglio di stile creato per i messaggi di error (se il campo Ë vuoto sar? usato lo stile predefinito);
	
	i tipi di variabili sono:
	int -> intero (negativo e positivo)
	float -> float (negativo e positivo)
	int_pos -> intero positivo
	float_pos -> float positivo
	email -> campo mail
	text_n -> campo di tipo testo, al posto di n inserire il numero di caratteri minimi (0 indica che il campo non puÚ essere vuoto
	text_eq_n -> campo di tipo testo, al posto di n inserire il numero di caratteri precisi che il campo deve avere
	*/
	
	if(verificaForm==0){
		var elem_contr = new Array(f.length);
		for(var i=0;i<f.length;i++){
			var errorMsg = nameCssErrorStyle[i] ? nameCssErrorStyle[i] : "";
			elem_contr[i] = {
				name: f[i], type: el[i], error: errorMsg
			};
		}
		return elem_contr;
	}
	var Error = {
		msg: function(e,msg){
			//var l=document.createElement("LABEL");
			l=document.createElement("NE_formMessageError");
			l.NS_VerFormErrorMessage=true;
			
			//impostazione style del messaggio
			if(nameCssErrorStyle.length>0) l.className=nameCssErrorStyle;
			else{
				var ls = l.style;
				ls.border = "1px solid #d2b80b";
				ls.backgroundColor = "#ebd43b";
				ls.padding = "2px";
				ls.fontFamily = "Verdana, Arial, Helvetica, sans-serif";
				ls.fontSize = "10px";
				ls.color="#d2480b";
				ls.verticalAlign="middle";
			}
			l.style.marginLeft="4px";
			l.style.marginRight="4px";

			var t=document.createTextNode(msg);
			l.appendChild(t);
			e.parentNode.appendChild(l);
			e.focus();
			e.select();
		},
		clear: function(){
			var l=document.getElementsByTagName("NE_formMessageError");
			if(l.length>0){
				for(var j=l.length-1;j>=0;j--){
					var n = l[j].parentNode.childNodes.length;
					for(var i=0;i<n;i++){
						if(l[j].parentNode.childNodes[i].NS_VerFormErrorMessage){
							l[j].parentNode.removeChild(l[j].parentNode.childNodes[i]);
						}
					}
				}
			}
		}
	};
	
	var n = el.length;
	var ok = true;
	Error.clear();

	for(var i=0;i<n;i++){
		var e=f.elements[el[i].name];

		if(e.type=="select-one" || e.type=="select-multiple"){
			if(e.options.selectedIndex==0){
				if(el[i].error.length>0) Error.msg(e,el[i].error);
				else Error.msg(e,"Selezionare un valore");
				ok=false;
			}
		}else if(e.type=="text" || e.type=="textarea"){
			if(e){
				var c = el[i].type.indexOf("text_eq")>-1 ? "text_eq" : el[i].type.indexOf("text")>-1 ? "text" : el[i].type;
				var v = e.value;

				switch(c){
					case "int":
						if(isNaN(parseInt(v))){
							if(el[i].error.length>0) Error.msg(e,el[i].error);
							else Error.msg(e,"Valore inserito non valido");
							ok = false;	
						}
						break;
					case "float":
						if(isNaN(parseFloat(v))){
							if(el[i].error.length>0) Error.msg(e,el[i].error);
							else Error.msg(e,"Valore inserito non valido");
							ok = false;	
						}
						break;
					case "int_pos":
						if(isNaN(parseInt(v)) && parseInt(v)<0){
							if(el[i].error.length>0) Error.msg(e,el[i].error);
							else Error.msg(e,"Il valore inserito non puÚ essere inferiore a 0");
							ok = false;	
						}
						break;
					case "float_pos":
						if(isNaN(parseFloat(v)) && parseFloat(v)<0){
							if(el[i].error.length>0) Error.msg(e,el[i].error);
							else Error.msg(e,"Il valore inserito non puÚ essere inferiore a 0");
							ok = false;	
						}
						break;
					case "email":			
						if(!NS_checkMail(v)){
							if(el[i].error.length>0) Error.msg(e,el[i].error);
							else Error.msg(e,"Indirizzo E-mail non valido");
							ok = false;	
						}
						break;
					case "text":
						var nmin = parseInt(el[i].type.substr(5));

						if((v.length<nmin && nmin>0) || (nmin==0 && v.length==0)){
							if(el[i].error.length>0) Error.msg(e,el[i].error);
							else Error.msg(e,"Campo non compilato o non corretto");
							ok = false;	
						}
						break;
					case "text_eq":
						var nnec = parseInt(el[i].type.substr(8));
						if(v.length!=nnec){
							if(el[i].error.length>0) Error.msg(e,el[i].error);
							else Error.msg(e,"Campo non compilato o non corretto");
							ok = false;	
						}
						break;
					default:
						break;
				}
			}
		}
	}
	return ok;
}

function NS_checkMail(email){
	return email.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/);
}

function NS_setOption(el,v){
	for(var i=0;i<el.options.length;i++){
		if(el.options[i].value==v){
			el.options[i].selected = true;
			break;
		}
	}
}

//----- END UTILITY FORMS -----

//----- DRAG'N'DROP -----
function NS_dragNDrop(){	
	var dnd = new Object();
	window.NS_dragNDropVars={oDrag: null, drag: false, leave: false, oAction: false, x: false,y: false, firstStep: true};

	dnd.mousedown = function(e){
		var e = e ? e : window.event;
		window.NS_dragNDropVars.oDrag = e.target ? e.target : e.srcElement;

	if(window.NS_dragNDropVars.oDrag.NE_draggable){
			with(window.NS_dragNDropVars){
				
				oDrag.style.position="relative";
				drag=true;
				x = e.clientX;
				y = e.clientY;
			}
			
			document.subOnmousemove = document.onmousemove && window.NS_dragNDropVars.firstStep ? document.onmousemove : false;
			document.subOnmouseup = document.onmouseup && window.NS_dragNDropVars.firstStep ? document.onmouseup : false;
			window.NS_dragNDropVars.firstStep=false;
			
			document.onmousemove = function(e){
				if(document.subOnmousemove) document.subOnmousemove(e);
				dnd.mousedragOn(e);
			}
			document.onmouseup = function(e){
				if(document.subOnmouseup) document.subOnmouseup(e);
				dnd.mousedragOff(e);
			}
		}else{
			window.NS_dragNDropVars.drag=false;
			window.NS_dragNDropVars.oDrag=null;
		}
		return false;
	}
	dnd.mousedragOn = function(e){
		var e = e ? e : window.event;
		with(window.NS_dragNDropVars){
			if(drag){
				oDrag.style.left = (e.clientX-x)+"px";
				oDrag.style.top = (e.clientY-y)+"px";
			}
		}
		return false;
	}
	dnd.mousedragOff = function(e){
		var e = e ? e : window.event;
		with(window.NS_dragNDropVars){
			drag=false;
			//leave=true;
			org_pos=true;
			if(org_pos){
				try{
					oDrag.style.left=oDrag.style.top="0px";
				}catch(er){}
			}					
		}
	}
	
	dnd.mousemove = function(e){
		e = e ? e : window.event;
		
		if(window.NS_dragNDropVars.NE_draggable){
				
		}
	}
	
	dnd.Start = function(){
		document.onmousedown = dnd.mousedown;
		document.onmousemove = dnd.mousemove;	
	}
	
	dnd.Draggable = function(o){
		var o = typeof(o)=="string" ? $(o) : o;
		o.NE_draggable=true;
	}
	
	return dnd;	
}
//----- END DRAG'N'DROP -----

function RG_addEvent(object, event, functionName, capture) {	
 	if (object.addEventListener) {
 	 event = event.length > 2 ? event.substring(2) : event;
 	 capture = capture ? capture : false;
	 object.addEventListener(event, functionName, capture);
	} else if (object.attachEvent) {
		object.attachEvent(event, functionName);
	} else {
		try {
	  object.setAttribute(event, functionName);
	  } catch (e)  {  }
	}
}

function NS_browser(){
    /*
    type -> il browser (text)
    version -> la versione (float)
    os -> il sistema operativo (text)
    sup -> metodo supportato (all, getElementById, layers) (text)
    */
    var Browser = new Object();
    var ua = window.navigator.userAgent;

    if(ua.indexOf("Safari")>-1) Browser.type="safari";
    else if(ua.indexOf("Firefox")>-1) Browser.type="firefox";
    else if(ua.indexOf("Opera")>-1) Browser.type="opera";
    else if(ua.indexOf("Mozilla")>-1 && ua.indexOf("Gecko")>-1) Browser.type="moz";
    else if(ua.indexOf("MSIE")>-1){
        if(ua.indexOf("Mac")>-1) Browser.type="ie_mac";
        else Browser.type="ie";
    }
    else if(ua.indexOf("Netscape")>-1) Browser.type="ns";
    else Browser.type=false;
    
    switch(Browser.type){
        case "ie":
        case "ie_mac":
            Browser.version=parseFloat(ua.split("MSIE")[1]);
            break;
        case "safari":
            Browser.version=parseFloat(ua.substr(ua.indexOf("Safari/")+7));
            break;
        case "opera":
            //as Opera
            if(ua.indexOf("Opera/")==0) Browser.version=parseFloat(ua.substr(6));
            //as IE or Mozilla
            else Browser.version=parseFloat(ua.substr(ua.indexOf("Opera")+6));
            break;
        case "firefox":
            Browser.version=parseFloat(ua.substr(ua.indexOf("Firefox")+8));
            break;
        case "mozilla":
            Browser.version=parseFloat(ua.substr(ua.indexOf("rv:")+3));
            break;
        case "netscape":
            Browser.version=parseFlot(navigator.appVersion);
            break;
        default:
            Browser.version=false;
            break;
    }
    
    if(ua.indexOf("Windows")>-1) Browser.os="win";
    else if(ua.indexOf("Macintosh")>-1) Browser.os="mac";
    else if(ua.indexOf("Linux")>-1) Browser.os="linux";
    else if(ua.indexOf("OS/2")>-1) Browser.os="os2";
    else Browser.os=false;
    
    if(document.getElementById) Browser.sup="id";
    else if(document.all) Browser.sup="all";
    else if(document.layers) Browser.sup="layer";
    else Browser.sup=false;
    
    return Browser;
}

function NS_generaId(){
	var time=new Date();
	time = time.getTime();
	var r = Math.random(0,1000000000);
	r=r.toString().substr(2);
	return "idNS_"+time+"_"+r;
}

function NS_formatNumber(num,dec){
	dec = parseInt(dec);
	num = dec>0 ? parseFloat(num) : parseInt(num);
	num = isNaN(num) ? 0 : parseInt(num*Math.pow(10,dec))/Math.pow(10,dec);
	
	num=num.toString();
	var p=num.split(".");

	if(p[0]){
		var cifra = new Array();
		var i=0;
		var s=p[0];
		while(s.length>3){
			cifra[i]=s.substr(s.length-3);
			s=s.substr(0,s.length-3);
			i++;
		}
		cifra[i]=s;

		for(i=cifra.length-1,s="";i>=0;i--){
			s+=cifra[i];
			if(i>0) s+=".";
		}
		var num=s;

	}else num="0";
	
	if(dec>0){
		if(!p[1]) p[1]="";
	
		if(p[1].length<dec){
			for(var i=p[1].length;i<dec;i++)
				p[1]+="0";
		}
		num += ","+p[1];
	}

	return num;
}

function NS_htmlspecialchars(str){
	str=str.replace(/"/g,"&quot;");
	return str;
}

//-------- GRAPHIC LIBRARY ----------
function NS_LoadImage(){
	var d=document;
	if(!d.NE_images)
		d.NE_images = new Array();
	for(var i=0,j=0;i<arguments.length;i++){
		if(arguments[i].indexOf("#")!=0){
			d.NE_images[j]=new Image();
			d.NE_images[j++].src=arguments[i];
		}
	}		
};
var NS_dimObj = function(o){
	var Obj = {
		W: 0,
		H: 0,
		Construct: function(obj){
			o = typeof(o)=="string" ? $(o) : o;
			var styles = new Array();
			styles["visibility"] = o.style.visibility;
			styles["display"] = o.style.display;
			styles["overflow"] = o.style.overflow;
			styles["height"] = o.style.height;
			styles["width"] = o.style.width;
			
			o.style.visibility = "hidden";
			o.style.display = "block";
			o.style.width = "auto";
			o.style.height = "auto";
			o.style.overflow = "auto";
			
			this.W = o.offsetWidth;
			this.H = o.offsetHeight;
			
			o.style.visibility = styles["visibility"];
			o.style.display = styles["display"];
			o.style.width = styles["width"];
			o.style.height = styles["height"];
			o.style.overflow = styles["overflow"];
		}
	};
	Obj.Construct(o);
	return Obj;
};
function NS_positionObj(o){ //restituisce la posizione x,y di un oggetto in un pagina
	if(typeof(o)=="string") o=$(o);
	var curleft = 0, curtop = 0;
	otmp = o;
	if (otmp.offsetParent){
		while (otmp.offsetParent){
			curleft += otmp.offsetLeft;
			otmp = otmp.offsetParent;
		}
	}else if (otmp.x) curleft += otmp.x;

	otmp = o;
	if (otmp.offsetParent){
		while (otmp.offsetParent){
			curtop += otmp.offsetTop;
			otmp = otmp.offsetParent;
		}
	}else if (otmp.y) curtop += otmp.y;
	
	var position=new Array(2);
	position[0] = curleft;
	position[1] = curtop;
	
	return position;
}

function NS_dimWindow(){
	//dimensione schermo
	var wScreen = screen.width;
	var wScreenAv = screen.availWidth;
	var hScreen = screen.height;
	var hScreenAv = screen.availHeight;
	
	//dimensione finestra
	var body_width = document.body.clientWidth;
	var body_height = document.body.clientHeight;
	var offset_width = document.body.offsetWidth;
	var offset_height = document.body.offsetHeight;
	
	//scroll finestra (questi sono da verificare nei vari browsers)
	var scroll_left = NS_browser().type=="ie" ? document.body.scrollLeft : window.pageXOffset;// document.body.scrollWidth;
	var scroll_top = NS_browser().type=="ie" ? document.body.scrollTop : window.pageYOffset;// document.body.scrollWidth;
	
	//var dim = new Array("wScreen" => wScreen,"hScreen"=>hScreen,"wScreenAv"=>wScreenAv,"hScreenAv"=>hScreenAv,"body_width"=>body_width,"body_height"=>body_height,"offset_width"=>offset_width,"offset_height"=>offset_height,"scroll_left"=>scroll_left,"scroll_top"=>scroll_top);
	var dim = new Array();
	dim["wScreen"] = wScreen;
	dim["hScreen"] = hScreen;
	dim["wScreenAv"] = wScreenAv;
	dim["hScreenAv"] = hScreenAv;
	dim["body_width"] = body_width;
	dim["body_height"] = body_height;
	dim["offset_width"] = offset_width;
	dim["offset_height"] = offset_height;
	dim["scroll_left"] = scroll_left;
	dim["scroll_top"] = scroll_top;
	
	return dim;
}

function NS_fade(o,startFade,endFade,tempo,backFunction){//o Ë o l'oggetto oppure l'id dell'oggetto, tempo indica i secondi nel quale il fade deve avvenire
	//backFunction può essere una stringa (nome della funzione da chiamare) o un oggetto formato dai seguenti valori: {callback: "nome funzione da chiamare", obj: oggetto contenente la funzione, solitamente this}

	//assegnazione oggetto
	if(typeof(o)=="string") o=$(o);
	if(!o) return false;
	//impostazione variabili
	startFade = parseInt(startFade);
	startFade = startFade>100 ? 100 : startFade<0 ? 0 : startFade;
	endFade = parseInt(endFade);
	endFade = endFade>100 ? 100 : endFade<0 ? 0 : endFade;
	tempo = parseFloat(tempo);
	//calcolo della velocit?
	var ms = 25; //Parametro. Indica i millisecondi tra una chiamata e l'altra della funzione
	if(tempo==0) vel=0;
	else{
		x = tempo / (ms/1000);
		vel = Math.abs(endFade-startFade)/x;	
	}
	
	o.NS_FadeVars = {
		start: startFade, end: endFade, vel: vel, backFunction: backFunction, fade: startFade, idTime: 0, MS:ms	
	};
	o.NS_Fade = function(){
		with(this.NS_FadeVars){
			if(start<end) fade+=vel;
			else fade-=vel;
		}
		if(this.NS_FadeVars.fade>0) this.style.visibility="visible";
		else this.style.visibility="hidden";
		var br=NS_browser().type;
		if(br=="ie" || br=="ie_mac") this.style.filter = "Alpha(Opacity="+parseInt(this.NS_FadeVars.fade)+")";
		else this.style.opacity=parseInt(this.NS_FadeVars.fade)/100;
		if((o.NS_FadeVars.start<o.NS_FadeVars.end && o.NS_FadeVars.fade>=o.NS_FadeVars.end) || (o.NS_FadeVars.start>o.NS_FadeVars.end && o.NS_FadeVars.fade<=o.NS_FadeVars.end)){
			//clearTimeout(this.NS_FadeVars.idTime);
			if(o.NS_FadeVars.backFunction){
				if(typeof(o.NS_FadeVars.backFunction)=="string"){
					eval(o.NS_FadeVars.backFunction+"()");
				}else{
					eval("o.NS_FadeVars.backFunction.obj."+o.NS_FadeVars.backFunction.callback+"();");
				}
			}
		}else this.NS_FadeVars.idTime = setTimeout('$("'+o.id+'").NS_Fade()',this.NS_FadeVars.MS);
	}
	o.NS_backFade = function(){
		clearTimeout(o.NS_FadeVars.idTime);
		with(o.NS_FadeVars){
			end = start;
			start = fade;
			backFunction = null;
		}
		o.NS_Fade();
	}
	o.NS_Fade();
}

function NS_colorTo(o,fromColor,toColor,tempo,backFunction){//o Ë o l'oggetto oppure l'id dell'oggetto, tempo indica i secondi nel quale il cambiamento di colori deve avvenire

	if(typeof(o)=="string") o=$(o);

	if(o.NS_toColorVars){
		clearTimeout(o.NS_toColorVars.idTime);
		fromColor = o.NS_toColorVars.color;
	}
	
	var colorConvert = {
		esadec: '0123456789ABCDEF',
		rgb2hex: function(r,g,b){
			esadec=this.esadec;
			r2=Math.floor(r/16);
			stringar=esadec.charAt(r2);
			r1=(r%16);
			stringar+=esadec.charAt(r1);
			r2=Math.floor(g/16);
			stringar+=esadec.charAt(r2);
			r1=(g%16);
			stringar+=esadec.charAt(r1);
			r2=Math.floor(b/16);
			stringar+=esadec.charAt(r2);
			r1=(b%16);
			stringar+=esadec.charAt(r1);
			stringa='#';
			return stringa+stringar;
		},
		hex2rgb: function(e){
			a='0x'+e.charAt(1);
			es1=eval(a);
			b='0x'+e.charAt(2);
			es2=eval(b);
			r=es1*16+es2;
			a='0x'+e.charAt(3);
			es1=eval(a);
			b='0x'+e.charAt(4);
			es2=eval(b);
			g=eval(es1*16+es2);
			a='0x'+e.charAt(5);
			es1=eval(a);
			b='0x'+e.charAt(6);
			es2=eval(b);
			b=eval(es1*16+es2);
			return r+","+g+","+b;
		},
		dec2hex: function(n){
			var hex=n.toString(16);
			while(hex.length<6){
				hex="0"+hex;	
			}				
			return hex.toUpperCase();
		},
		hex2dec: function(hex){
			if(hex.substr(0,1)=="#") hex=hex.substr(1);
			return parseInt(hex,16);	
		}
	};
	var ms = 25;
	o.NS_toColorVars = {
		fromColor: fromColor, toColor: toColor, direction: 0, color: '', N: 0, I: 0, idTime: 0
	};
	o.NS_tmpColorVars={
		r: null, g: null, b: null, rCoef: null, gCoef:null, bCoef:null, to: null	
	};
	
	o.NS_colorToColor = function(){
		clearTimeout(o.NS_toColorVars.idTime);
		o.NS_toColorVars.color = o.NS_toColorVars.fromColor;
		if(o.NS_toColorVars.direction==0) to=o.NS_toColorVars.toColor;
		else to=o.NS_toColorVars.fromColor;

		to=o.NS_toColorVars.toColor;
		from=o.NS_toColorVars.color;
		
		color = colorConvert.hex2rgb(from);
		rgbFrom = color.split(",");
		color = colorConvert.hex2rgb(to);
		rgbTo = color.split(",");
		o.NS_toColorVars.N = tempo / (ms/1000);
		o.NS_toColorVars.I = 0;
		rCoef = (rgbTo[0] - rgbFrom[0])/o.NS_toColorVars.N;
		gCoef = (rgbTo[1] - rgbFrom[1])/o.NS_toColorVars.N;
		bCoef = (rgbTo[2] - rgbFrom[2])/o.NS_toColorVars.N;
		o.NS_subColorToColor(rgbFrom[0],rgbFrom[1],rgbFrom[2],rCoef,gCoef,bCoef,to);
	}
	
	o.NS_subColorToColor = function(r,g,b,rCoef,gCoef,bCoef,to){
		clearTimeout(o.NS_toColorVars.idTime);
		o.NS_tmpColorVars.r=r;
		o.NS_tmpColorVars.g=g;
		o.NS_tmpColorVars.b=b;
		o.NS_tmpColorVars.rCoef=rCoef;
		o.NS_tmpColorVars.gCoef=gCoef;
		o.NS_tmpColorVars.bCoef=bCoef;
		o.NS_tmpColorVars.to=to;
		r=parseFloat(r);
		g=parseFloat(g);
		b=parseFloat(b);
		r += rCoef;
		g += gCoef;
		b += bCoef;
		o.NS_toColorVars.color = color = colorConvert.rgb2hex(r,g,b);
		o.style.backgroundColor=color;
		o.NS_toColorVars.I++;
		if(o.id=="undefined" || o.id=="" || o.id==null){
			o.id=NS_generaId();
			o.NS_id=true;
		}
		if(o.NS_toColorVars.I<=o.NS_toColorVars.N-parseInt(o.NS_toColorVars.N/10)) o.NS_toColorVars.idTime=setTimeout('$("'+o.id+'").NS_subColorToColor('+r+','+g+','+b+','+rCoef+','+gCoef+','+bCoef+',"'+to+'")',ms);
		else o.NS_toColorVars.color = o.style.backgroundColor = to;
	}
	
	o.NS_backColorTo = function(){
		clearTimeout(o.NS_toColorVars.idTime);
		o.NS_toColorVars.N = o.NS_toColorVars.I;
		o.NS_toColorVars.I = 0;

		NS_colorTo(o,o.NS_toColorVars.color,o.NS_toColorVars.fromColor,tempo,null);
	}
	o.NS_colorToColor();
}

function NS_getScroll() { //ritorna le posizioni x,y dello scroll della pagina
  var scrOfX = 0, scrOfY = 0;
  if(typeof(window.pageYOffset) == 'number'){
    //Netscape
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  }else if(document.body && (document.body.scrollLeft || document.body.scrollTop )){
    //DOM
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  }else if(document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop )){
    //IE6
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [scrOfX,scrOfY];
}

function NS_resizeObj(){
	var Obj={
		//parametri
		MS: 25, //millisecondi
		Tempo: 0.5, //tempo di esecuzione tra inizio e fine
		Mode: "linear", //"linear" => lineare incrementa dello stesso numero di pixel ad ogni giro. "exponent" => sale in maniera esponenziale
		Divisore: 4, //nel caso di Mode "exponent"
		Margine_4_exponentMode: 5, //margine per bloccare il modo esponenziale (inteso in percentuale)
		callback: false,
		
		//variabili di sistema
		obj: null,
		Temp: new Array(),
		idTime: 0,
		
		Init: function(obj){
			obj = typeof(obj)=="string" ? $(obj) : obj;
			this.obj = obj;
			this.Temp["width"] = obj.offsetWidth;
			this.Temp["height"] = obj.offsetHeight;
		},
		cDelta: function(from,to){ //calcola il numero di passaggi ed il delta (spazio in pixel da passare) nel caso di linear mode
			var n = this.Tempo/(this.MS/1000); //numero di passaggi

			var delta = (to-from)/n;
			if(Math.abs(delta)<1){
				//Tempo troppo basso, imposta 1px
				delta=1;	
				n = (to-from)/delta;
				n = Math.abs(n);
			}
			//alert(n+" "+delta);
			var ret = new Array(n,delta);
			return ret;
		},
		cMS: function(from,to){ //calcola i MS necessari nel caso di exponent mode
			var a = from<to ? from : to;
			var b = from<to ? to : from;
			var flag=true,n=0,x=a;
			do{
				x += (b-x)/this.Divisore;
				n++;
				if(x>b-(b*this.Margine_4_exponentMode/100) ){
					flag = false;	
				}
				if(n>1000){
					flag = false;
					alert("Superata variabile di controllo: N: "+n+"\r\nX: "+x);
					return false;
				}
			}while(flag);
			var MS = 1000*(this.Tempo/n)
			a=b=to=from=flag=null;
			//alert(n+" "+MS);
			var ret = new Array(n,MS);
			return ret;
		},
		Width: function(from,to){
			from = from=="auto" ? this.Temp["width"] : from;
			to = to=="auto" ? NS_dimObj(this.obj).W : to;
			
			this.obj.style.width = parseInt(from)+"px";
			this.Temp["width"] = from;
			
			switch(this.Mode){
				case "linear":
					var tmp = this.cDelta(from,to);
					var n = tmp[0];
					var Delta = tmp[1];
					this.setWidth(from,to,0,n,Delta);
					break;
				case "exponent":
					var tmp = this.cMS(from,to);
					var n = tmp[0];
					var MS = tmp[1];
					this.setWidth(from,to,0,n,MS);
					break;
			}
			tmp=n=MS=null;
		},
		setWidth: function(from,to,i,n){
			if(i<n){
				//alert(i+" "+n+" "+this.Temp["height"]);
				switch(this.Mode){
					case "linear":
						var val = arguments[4];
						var x = this.Temp["width"]+parseInt(val);
						var MS = this.MS;
						break;
					case "exponent":
						var val = arguments[4];
						var x = this.Temp["width"]+( (to-this.Temp["width"])/this.Divisore );
						var MS = val;
						break;
				}
				i++;
				this.Temp["width"] = x;
				this.obj.style.width = parseInt(this.Temp["width"])+"px";
				
				var This=this;
				this.idTime = setTimeout(function(){ This.setWidth(from,to,i,n,val); },MS);
			}else{
				this.ClearTimeout();
				this.Temp["width"] = to;
				this.obj.style.width = parseInt(this.Temp["width"])+"px";
				this.Callback();
			}
		},
		Height: function(from,to){
			from = from=="auto" ? this.Temp["height"] : from;
			to = to=="auto" ? NS_dimObj(this.obj).H : to;
			
			this.obj.style.height = parseInt(from)+"px";
			this.Temp["height"] = from;
			
			switch(this.Mode){
				case "linear":
					var tmp = this.cDelta(from,to);
					var n = tmp[0];
					var Delta = tmp[1];
					this.setHeight(from,to,0,n,Delta);
					break;
				case "exponent":
					var tmp = this.cMS(from,to);
					var n = tmp[0];
					var MS = tmp[1];
					this.setHeight(from,to,0,n,MS);
					break;
			}
			tmp=n=MS=null;
		},
		setHeight: function(from,to,i,n){			
			if(i<n){
				//alert(i+" "+n+" "+this.Temp["height"]);
				switch(this.Mode){
					case "linear":
						var val = arguments[4];
						var x = this.Temp["height"]+parseInt(val);
						var MS = this.MS;
						break;
					case "exponent":
						var val = arguments[4];
						var x = this.Temp["height"]+( (to-this.Temp["height"])/this.Divisore );
						var MS = val;
						break;
				}
				i++;
				this.Temp["height"] = x;
				this.obj.style.height = parseInt(this.Temp["height"])+"px";
				
				var This=this;
				this.idTime = setTimeout(function(){ This.setHeight(from,to,i,n,val); },MS);
			}else{
				this.ClearTimeout();
				this.Temp["height"] = to;
				this.obj.style.height = parseInt(this.Temp["height"])+"px";
				this.Callback();
			}
		},
		ClearTimeout: function(){
			if(this.idTime>0)
				clearTimeout(this.idTime);
		},
		Callback: function(){
			if(this.callback){
				if(typeof(this.callback)=="string"){
					eval(this.callback+"()");
				}else{
					eval("this.callback.obj."+this.callback.callback+"();");
				}
			}	
		}
	};
	if(arguments.length>0){ //passare come 1° argomento l'id dell'oggetto se si vuole inizializzare direttamente
		Obj.Init(arguments[0]);	
	}
	return Obj;
}
function NS_moveObj(){
	var Obj={
		//parametri
		MS: 25, //millisecondi
		Tempo: 0.5, //tempo di esecuzione tra inizio e fine
		Mode: "linear", //"linear" => lineare incrementa dello stesso numero di pixel ad ogni giro. "exponent" => sale in maniera esponenziale
		Divisore: 4, //nel caso di Mode "exponent"
		Margine_4_exponentMode: 5, //margine per bloccare il modo esponenziale (inteso in percentuale)
		callback: false,
		
		//variabili di sistema
		obj: null,
		Temp: new Array(),
		idTime: 0,
		
		Init: function(obj){
			obj = typeof(obj)=="string" ? $(obj) : obj;
			this.obj = obj;
			var tmp = NS_positionObj(obj);
			this.Temp["x"] = tmp[0];
			this.Temp["y"] = tmp[1];
		},
		cDelta: function(from,to){ //calcola il numero di passaggi ed il delta (spazio in pixel da passare) nel caso di linear mode
			var n = this.Tempo/(this.MS/1000); //numero di passaggi

			var delta = (to-from)/n;
			if(Math.abs(delta)<1){
				//Tempo troppo basso, imposta 1px
				delta=1;	
				n = (to-from)/delta;
				n = Math.abs(n);
			}
			//alert(n+" "+delta);
			var ret = new Array(n,delta);
			return ret;
		},
		cMS: function(from,to){ //calcola i MS necessari nel caso di exponent mode
			var a = from<to ? from : to;
			var b = from<to ? to : from;
			var flag=true,n=0,x=a;
			do{
				x += (b-x)/this.Divisore;
				n++;
				if(x>b-(b*this.Margine_4_exponentMode/100) ){
					flag = false;	
				}
				if(n>1000){
					flag = false;
					alert("Superata variabile di controllo: N: "+n+"\r\nX: "+x);
					return false;
				}
			}while(flag);
			var MS = 1000*(this.Tempo/n)
			a=b=to=from=flag=null;
			//alert(n+" "+MS);
			var ret = new Array(n,MS);
			return ret;
		},
		MoveX_To: function(from,to){
			from = from=="auto" ? this.Temp["x"] : from;
			this.obj.style.left = parseInt(from)+"px";
			this.Temp["x"] = from;
			
			switch(this.Mode){
				case "linear":
					var tmp = this.cDelta(from,to);
					var n = tmp[0];
					var Delta = tmp[1];
					this.setMoveX(from,to,0,n,Delta);
					break;
				case "exponent":
					var tmp = this.cMS(from,to);
					var n = tmp[0];
					var MS = tmp[1];
					this.setMoveX(from,to,0,n,MS);
					break;
			}
			tmp=n=MS=null;
		},
		setMoveX: function(from,to,i,n){
			if(i<n){
				//alert(i+" "+n+" "+this.Temp["height"]);
				switch(this.Mode){
					case "linear":
						var val = arguments[4];
						var x = this.Temp["x"]+parseInt(val);
						var MS = this.MS;
						break;
					case "exponent":
						var val = arguments[4];
						var x = this.Temp["x"]+( (to-this.Temp["x"])/this.Divisore );
						var MS = val;
						break;
				}
				i++;
				this.Temp["x"] = x;
				this.obj.style.left = parseInt(this.Temp["x"])+"px";
				
				var This=this;
				this.idTime = setTimeout(function(){ This.setMoveX(from,to,i,n,val); },MS);
			}else{
				//alert(this.obj.style.left+" "+to);
				this.ClearTimeout();
				this.Temp["x"] = to;
				this.obj.style.left = parseInt(this.Temp["x"])+"px";
				this.Callback();
			}
		},
		MoveY_To: function(from,to){
			from = from=="auto" ? this.Temp["y"] : from;
			this.obj.style.top = parseInt(from)+"px";
			this.Temp["y"] = from;
			
			switch(this.Mode){
				case "linear":
					var tmp = this.cDelta(from,to);
					var n = tmp[0];
					var Delta = tmp[1];
					this.setMoveY(from,to,0,n,Delta);
					break;
				case "exponent":
					var tmp = this.cMS(from,to);
					var n = tmp[0];
					var MS = tmp[1];
					this.setMoveY(from,to,0,n,MS);
					break;
			}
			tmp=n=MS=null;
		},
		setMoveY: function(from,to,i,n){			
			if(i<n){
				//alert(i+" "+n+" "+this.Temp["height"]);
				switch(this.Mode){
					case "linear":
						var val = arguments[4];
						var x = this.Temp["y"]+parseInt(val);
						var MS = this.MS;
						break;
					case "exponent":
						var val = arguments[4];
						var x = this.Temp["y"]+( (to-this.Temp["y"])/this.Divisore );
						var MS = val;
						break;
				}
				i++;
				this.Temp["y"] = x;
				this.obj.style.top = parseInt(this.Temp["y"])+"px";
				
				var This=this;
				this.idTime = setTimeout(function(){ This.setMoveY(from,to,i,n,val); },MS);
			}else{
				this.ClearTimeout();
				this.Temp["y"] = to;
				this.obj.style.left = parseInt(this.Temp["y"])+"px";
				this.Callback();
			}
		},
		ClearTimeout: function(){
			if(this.idTime>0)
				clearTimeout(this.idTime);
		},
		Callback: function(){
			if(this.callback){
				if(typeof(this.callback)=="string"){
					eval(this.callback+"()");
				}else{
					eval("this.callback.obj."+this.callback.callback+"();");
				}
			}	
		}
	};
	if(arguments.length>0){ //passare come 1° argomento l'id dell'oggetto se si vuole inizializzare direttamente
		Obj.Init(arguments[0]);	
	}
	return Obj;
}

function NS_openLayer(o,minW,maxW,minH,maxH,fade){
	if(typeof(o)=="string") o=$(o);
	if(!o) return false;

	if(!isset(o.NS_openLayerVars)){
		o.NS_openLayerVars={
			aperto:false,inApertura:false,minW:minW,minH:minH,maxW:maxW,maxH:maxH,w:minW,h:minH,idTime:null,DIVISORE_VEL:3,MS:50
		};
	}
		
	o.NS_openLayer = function(){
		clearTimeout(this.NS_openLayerVars.idTime);
		this.NS_openLayerVars.inApertura=true;
		this.style.display="";
		var nextW,nextH;
		var rapp_limite=1/10;
		var stopW=false,stopH=false;
		var DIVISORE_VEL=this.NS_openLayerVars.DIVISORE_VEL;
		var MS=this.NS_openLayerVars.MS;

		if(this.NS_openLayerVars.w!="auto"){
			if(!this.NS_openLayerVars.aperto){
				nextW=this.NS_openLayerVars.w+((this.NS_openLayerVars.maxW-this.NS_openLayerVars.w)/DIVISORE_VEL);
				if(nextW>this.NS_openLayerVars.maxW-this.NS_openLayerVars.maxW*rapp_limite){
					nextW=this.NS_openLayerVars.maxW;
					stopW=true;
				}
			}else{
				nextW=this.NS_openLayerVars.w+((this.NS_openLayerVars.minW-this.NS_openLayerVars.w)/DIVISORE_VEL);
				if(nextW<this.NS_openLayerVars.minW+this.NS_openLayerVars.minW*rapp_limite || (nextW<8 && this.NS_openLayerVars.minW==0)){
					nextW=this.NS_openLayerVars.minW;
					stopW=true;
				}
			}
			this.NS_openLayerVars.w=nextW;
			this.style.height=nextW+"px";
		}else stopW=true;
		if(this.NS_openLayerVars.h!="auto"){
			if(!this.NS_openLayerVars.aperto){
				nextH=this.NS_openLayerVars.h+((this.NS_openLayerVars.maxH-this.NS_openLayerVars.h)/DIVISORE_VEL);
				if(nextH>this.NS_openLayerVars.maxH-this.NS_openLayerVars.maxH*rapp_limite){
					nextH=this.NS_openLayerVars.maxH;
					stopH=true;
				}
			}else{
				nextH=this.NS_openLayerVars.h+((this.NS_openLayerVars.minH-this.NS_openLayerVars.h)/DIVISORE_VEL);
				if(nextH<this.NS_openLayerVars.minH+this.NS_openLayerVars.minH*rapp_limite || (nextH<8 && this.NS_openLayerVars.minH==0)){
					nextH=this.NS_openLayerVars.minH;
					stopH=true;
				}
			}
			this.NS_openLayerVars.h=nextH;
			this.style.height=nextH+"px";
		}else stopH=true;
		if(stopW && stopH){
			this.NS_openLayerVars.idTime=null;
			this.NS_openLayerVars.aperto=!this.NS_openLayerVars.aperto;
			this.NS_openLayerVars.inApertura=false;
			if(this.NS_openLayerVars.minH==0 && !this.NS_openLayerVars.aperto) this.style.display="none";
		}
		else this.NS_openLayerVars.idTime=setTimeout('$("'+this.id+'").NS_openLayer();',MS);
	}
	
	if(!o.NS_openLayerVars.inApertura){
		if(fade){
			var tempo = 10*(o.NS_openLayerVars.DIVISORE_VEL/o.NS_openLayerVars.MS);
			
			if(!o.NS_openLayerVars.aperto)
				NS_fade(o,0,100,tempo,null);
			else 
				NS_fade(o,100,0,tempo,null);
		}
		o.NS_openLayer();
	}
}

function NS_tabs(path,class_enable,width_br,height,a_className){
	/*
	path: path delle immagini (le immagini devono essere sx.gif,center.gif,dx.gif)
	classEnable: nome della classe da ricercare per applicare il tab
	width_br: width delle immagini sx.gif e dx.gif
	height: height
	a_className: nome della class CSS da applicare al link interno
	*/
		
	//altri argomenti
	extImg = 'gif';
	if(NS_tabs.arguments.length>5){ 
		/*argomenti a partire da dopo a_className
		1: estensione delle immagini (valori 'gif','png','jpg')
		*/
		extImg = NS_tabs.arguments[5];
	}
	
	path += path.substring(path.length-1)=="/" ? "" : "/";
		
	try{
		var el = document.getElementsByTagName('div');
		for(var i=0;i<el.length;i++){
			if(el[i].className.indexOf(class_enable)>-1 && el[i].className.indexOf(a_className)==-1){
				var e=el[i];
				var lnk = e.innerHTML;
				
				e.innerHTML = '<div style="float:left; background-repeat:no-repeat; background-image:url('+path+'sx.'+extImg+'); width:'+width_br+'px; height: '+height+'px;"></div>';
				e.innerHTML += '<div style="background-repeat:repeat-x; background-image:url('+path+'center.'+extImg+'); height: '+height+'px; line-height: '+(1+height)+'px; float:left;" class="'+a_className+'">'+lnk+'</div>';
				e.innerHTML += '<div style="float: left; background-repeat: no-repeat; background-image:url('+path+'dx.'+extImg+'); width: '+width_br+'px; height: '+height+'px;"></div>';
			}
		}
	}catch(e){}
}

/*function NS_colorTo(o,fromColor,toColor,tempo,backFunction){//o Ë o l'oggetto oppure l'id dell'oggetto, tempo indica i secondi nel quale il cambiamento di colori deve avvenire
fromColor="#ff0000";
toColor="#0000ff";
	if(typeof(o)=="string") o=$(o);
	
	if(o.NS_colorToVar){
		if(o.NS_colorToVars.color){
			o.NS_colorToVars.toColor = toColor;
			o.NS_colorTovars.fromColor = o.NS_colorToVars.color;
			o.NS_colorToVars.backFunction = backFunction;
		}
	}
	
	var colorConvert = {
		esadec: '0123456789ABCDEF',
		rgb2hex: function(r,g,b){
			esadec=this.esadec;
			r2=Math.floor(r/16);
			stringar=esadec.charAt(r2);
			r1=(r%16);
			stringar+=esadec.charAt(r1);
			r2=Math.floor(g/16);
			stringar+=esadec.charAt(r2);
			r1=(g%16);
			stringar+=esadec.charAt(r1);
			r2=Math.floor(b/16);
			stringar+=esadec.charAt(r2);
			r1=(b%16);
			stringar+=esadec.charAt(r1);
			stringa='#';
			return stringa+stringar;
		},
		hex2rgb: function(e){
			a='0x'+e.charAt(1);
			es1=eval(a);
			b='0x'+e.charAt(2);
			es2=eval(b);
			r=es1*16+es2;
			a='0x'+e.charAt(3);
			es1=eval(a);
			b='0x'+e.charAt(4);
			es2=eval(b);
			g=eval(es1*16+es2);
			a='0x'+e.charAt(5);
			es1=eval(a);
			b='0x'+e.charAt(6);
			es2=eval(b);
			b=eval(es1*16+es2);
			return r+","+g+","+b;
		},
		dec2hex: function(n){
			var hex=n.toString(16);
			while(hex.length<6){
				hex="0"+hex;	
			}				
			return hex.toUpperCase();
		},
		hex2dec: function(hex){
			if(hex.substr(0,1)=="#") hex=hex.substr(1);
			return parseInt(hex,16);	
		}
	};
	
	var tempo = parseFloat(tempo);
	//calcolo della velocit?
	var ms = 25; //Parametro. Indica i millisecondi tra una chiamata e l'altra della funzione
	var vel=0;
	
	if(tempo>0){
		var x = tempo / (ms/1000);

		var c1=colorConvert.hex2dec(fromColor);
		var c2=colorConvert.hex2dec(toColor);
		vel = Math.abs(c2-c1)/x;
		var rgbFrom = colorConvert.hex2rgb(fromColor).split(",");
		var rgbTo = colorConvert.hex2rgb(toColor).split(",");
		
		var colorCoef = new Array(3);
		
		var cod_col=new Array("r","g","b");
		for(var i=0;i<3;i++)
			colorCoef[cod_col[i]] = (rgbTo[i] - rgbFrom[i])/x;// >= 1 ? (rgbTo[i] - rgbFrom[i])/x : 0.5;
	}
	
	o.NS_colorToVars = {
		fromColor: fromColor, toColor: toColor, color: fromColor, colorCoef: colorCoef, vel: vel, backFunction: backFunction, idTime: 0
	};

	o.NS_colorToColor = function(direction){
		clearTimeout(this.NS_colorToVars.idTime);
		
		var color = this.NS_colorToVars.color;

		if(colorConvert.hex2dec(this.NS_colorToVars.fromColor) > colorConvert.hex2dec(this.NS_colorToVars.toColor)){
			var c1 = colorConvert.hex2dec(this.NS_colorToVars.toColor);
			var c2 = colorConvert.hex2dec(this.NS_colorToVars.color);
		}else{
			var c1 = colorConvert.hex2dec(this.NS_colorToVars.color);
			var c2 = colorConvert.hex2dec(this.NS_colorToVars.toColor);
		}
		
		if(c1<c2){
			var rgb = colorConvert.hex2rgb(this.NS_colorToVars.color).split(",");

			for(var i=0;i<3;i++)
				rgb[i] = parseFloat(rgb[i]);

			rgb[0] += direction*parseFloat(this.NS_colorToVars.colorCoef["r"]);
			rgb[1] += direction*parseFloat(this.NS_colorToVars.colorCoef["g"]);
			rgb[2] += direction*parseFloat(this.NS_colorToVars.colorCoef["b"]);

			this.NS_colorToVars.color = colorConvert.rgb2hex(rgb[0],rgb[1],rgb[2]);
//			if(direction==-1) alert(this.NS_colorToVars.color);
			this.style.backgroundColor = this.NS_colorToVars.color;
			if(o.id=="undefined" || o.id=="" || o.id==null){
				o.id=NS_generaId();
				o.NS_id=true;
			}

			this.NS_colorToVars.idTime = setTimeout('$("'+o.id+'").NS_colorToColor('+direction+')',ms);
		}else{
			//processo terminato
			this.style.backgroundColor = this.NS_colorToVars.color = this.NS_colorToVars.toColor;
			if(o.NS_id) o.NS_id=o.id=null;
			if(this.NS_colorToVars.backFunction) eval(o.NS_colorToVars.backFunction+"()");	
		}
	}
	
	o.NS_backColorTo = function(){
		with(this.NS_colorToVars){
			clearTimeout(idTime);
			toColor = fromColor;
			
			fromColor = color;
			backFunction = "";
		}

		this.style.backgroundColor = this.NS_colorToVars.color;
		this.NS_colorToColor(-1);
	}
	
	o.NS_colorToColor(1);
}*/
//-------- END GRAPHIC LIBRARY ----------
