var global;
var hoffset=0;
	waiterOn=function(name) {
		trt= '<div id="wait" style="display:block">Requesting data...<br><img src="mc_public/img/ajax-loader_default.gif" /><div class="subwait">In caso di attesa eccessiva <a href=index.php>fare click qui</a></div></div>';
		return trt;
	}
	waiter2=function(name) {
		trt= '<div id="wait" style="display:block">Request sent...<br><img src="mc_public/img/ajax-loader_default.gif" /><div class="subwait">In caso di attesa eccessiva <a href=index.php>fare click qui</a></div></div>';
		return trt;
	}
	waiter3=function(name) {
		trt= '<div id="wait" style="display:block">Receiving data...<br><img src="mc_public/img/ajax-loader_default.gif" /><div class="subwait">In caso di attesa eccessiva <a href=index.php>fare click qui</a></div></div>';
		return trt;
	}
	little_waiterOn=function(name) {
		trt= '<span class="subwait" style="display:block"> <img src="mc_public/img/ajax-loader_very_little.gif" /></span>';
		return trt;
	}
	little_waiter2=function(name) {
		trt= '<span class="subwait" style="display:block"> <img src="mc_public/img/ajax-loader_very_little.gif" /></span>';
		return trt;
	}
	little_waiter3=function(name) {
		trt= '<span class="subwait" style="display:block"> <img src="mc_public/img/ajax-loader_very_little.gif" /></span>';
		return trt;
	}
	post_waiterOn=function(name) {
		trt= '<div id="wait" style="display:block">Saving data...<br><img src="../shared/img/ajax-loader_bar.gif" /><span class="subwait">In caso di attesa eccessiva <a href=index.php>fare click qui</a></span></div>';
		return trt;
	}
	post_waiter2=function(name) {
		trt= '<div id="wait" style="display:block">data saved...<br><img src="../shared/img/ajax-loader_bar.gif" /></div><div id="subwait">In caso di attesa eccessiva <a href=index.php>fare click qui</a></div>';
		return trt;
	}
	post_waiter3=function(name) {
		trt= '<div id="wait" style="display:block">Receiving data...<br><img src="../shared/img/ajax-loader_bar.gif" /><span class="subwait">In caso di attesa eccessiva <a href=index.php>fare click qui</a></span></div>';
		return trt;
	}
var viwi_totimer;
function viwi (distance) {
	this.distance=distance;
	this.pages=[];
	this.divs=[];
	this.titles=[];
	this.current=true;
	this.hoffset=0;
	this.currentPage='';
	this.currentDiv='';
	this.GetXMLHttpRequest=function () {
		var obj;
		var creato = false;
		try {
			obj = new XMLHttpRequest();
			creato = true;
		} catch (e) {
			var IEXMLHttpRequestNames = new Array("Microsoft.XmlHttp", "MSXML4.XmlHttp", "MSXML3.XmlHttp",
			"MSXML2.XmlHttp", "MSXML.XmlHttp");
			for (var i = 0; i < IEXMLHttpRequestNames .length; i++) {
				try {
				obj = new ActiveXObject(IEXMLHttpRequestNames[i]);
				creato = true;
				} catch (e) { }
			}
		}
		if (creato) return obj;
		else return null;    
	}
	this.getEl=function (id) {
		var begin="trt=";
		var parents="";
		for (i=0;i<distance;i++) {
			parents+="window.parent.";
		}
		var aller=parents+"document.getElementById('"+id+"');";
		if (eval(aller))	eval(begin+aller);
		else trt=false;
		return trt;
	}
	this.evalCode=function (text) {
		starting='<script type="text/javascript">';
		ending='</script>';
		var trt=false;
		start=text.search(starting);
		end=text.search(ending);
		if (start!=-1 && end!=-1) {
			trt=text.slice(start+starting.length,end);
		}
		eval (trt);
		return trt;
	}
	this.startWait=function(elem) {
		document.body.style.cursor="wait";
		//alert(this.titles[this.titles.length-1]);
		var name=this.titles[this.titles.length-1]
		elem.innerHTML=this.waiterOn(name);
	}
	this.stopWait=function() {
		document.body.style.cursor="auto";
	}
	this.getquerystring=function (formDiv) {
		 function GetElemValue(name, value) {
			  qstr += (qstr.length > 0 ? "&" : "")
					+ escape(name).replace(/\+/g, "%2B") + "="
					+ value.replace(/&/g,escape('&'));
		 }
		var qstr = "";
		 var formObj = this.getEl(formDiv);
		var elemArray = formObj.getElementsByTagName('input');
		var selectArray = formObj.getElementsByTagName('select');
		var textareaArray = formObj.getElementsByTagName('textarea');
		for (i=0;i<selectArray.length;i++) {
			sele=selectArray[i];
			GetElemValue(sele.name,sele.value);
		}
		for (i=0;i<textareaArray.length;i++) {
			var tx=textareaArray[i];
			GetElemValue(tx.name,tx.value);
		}
		 for (var i = 0; i < elemArray.length; i++) {
				var element = elemArray[i];
				var elemType = element.type.toUpperCase();
				var elemName = element.name;
				if (elemName) {
					if (elemType == "TEXT"
					|| elemType == "PASSWORD"
					|| elemType == "BUTTON"
					|| elemType == "RESET"
					|| elemType == "SUBMIT"
					|| elemType == "FILE"
					|| elemType == "IMAGE"
					|| elemType == "HIDDEN")
					GetElemValue(elemName, element.value);
					else if (elemType == "CHECKBOX") {
						if (!element.checked) {
							element.value="notChecked";
							GetElemValue(elemName,element.value);
						}
						else {
							GetElemValue(elemName,element.value);
						}
					}
					else if (elemType == "RADIO" && element.checked)
					GetElemValue(elemName, element.value);
					else if (elemType == "SELECT")
					for (var j = 0; j < element.options.length; j++) {
						alert(element.value);
						var option = element.options[j];
						if (option.selected)
						GetElemValue(elemName,
						option.value);
					}
				}
		 }
		 return qstr;
	}
	this.getOnly=function(page,targetDiv,noEval) {
		var evalCode=this.evalCode;
		var request = this.GetXMLHttpRequest();
		if (request == null) return true;
		request.open("GET", page, false);
		request.send(null);
		var viwi_target=document.getElementById(targetDiv);
		viwi_target.innerHTML=request.responseText;
		var toEval=request.responseText;
		if (!noEval)  code=evalCode(toEval);
	}
	this.get=function  (page,targetDiv,noEval,titlePage,waitMode) {
	//alert(page+" => "+targetDiv);
		var evalCode=this.evalCode;
		var request = this.GetXMLHttpRequest();
		if (!titlePage) titlePage="page";
		if (request == null) return true;
		request.open("GET", page, true);
		request.send(null);
		var viwi_target=document.getElementById(targetDiv);
		if (waitMode) viwi_target.innerHTML=waiterOn(titlePage);
		else viwi_target.innerHTML=little_waiterOn(titlePage);
		request.onreadystatechange=function () {
			if(request.readyState == 4) {
				if (request.status==200) {
					viwi_target.innerHTML=request.responseText;
					var toEval=request.responseText;
					if (!noEval)  code=evalCode(toEval);
				}
				else viwi_target.innerHTML='<span style="font-size:16px"><br>Siamo spiacenti, la pagina "'+page+'" non &eacute; attualmente disponibile.</span><br>'+request.status+' @ '+targetDiv;
			}
			else {
				if (waitMode) viwi_target.innerHTML=eval("waiter"+request.readyState+"()");
				else viwi_target.innerHTML=eval("little_waiter"+request.readyState+"()");
			}
		}
	}
	this.post=function (page,formDiv,targetDiv,noEval,newpage) {
		var evalCode=this.evalCode;
		var get=this.get;
		var requestString=this.getquerystring(formDiv);
		var viwi_target=document.getElementById(targetDiv);
	    var request = this.GetXMLHttpRequest();
		 if (request == null) return false;
		request.open('POST',page, false);
		//alert(requestString);
		request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		request.send(requestString);
		if(request.status == 200) {
			viwi_target.innerHTML=request.responseText;
			var toEval=request.responseText;
			if (!noEval)  code=evalCode(toEval);
			effects.fadeIn('sysTray',0.2);
			viwi_totimer=function() {
				effects.fadeOut('sysTray',0.05);
			}
			this.get('topMessage.php','topMessage');
			window.clearTimeout(timer);
			var timer=window.setTimeout("viwi_totimer()",4000);
		} else viwi_target.innerHTML="ehm...oops!";
	}
	this.open=function (page,targetDiv,direct,titleDiv) {
			this.get(page,targetDiv,false,titleDiv,true);
//alert(titleDiv);
		this.currentPage=page;
		this.currentDiv=targetDiv;
		return false;
	}
	this.putInHistory=function(page,targetDiv,titleDiv) {
		var num=this.pages.length-this.hoffset;
		this.pages.splice(num,this.pages.length-num);
		this.divs.splice(num,this.divs.length-num);
		var tryout=this.titles.splice(num,this.titles.length-num);
		this.hoffset=0;
		this.pages[this.pages.length]=page;
		this.divs[this.divs.length]=targetDiv;
		this.titles[this.titles.length]=htmlentities(titleDiv);
		document.getElementById('prevPage').innerHTML=document.getElementById('currentPage').innerHTML;
		document.getElementById('currentPage').innerHTML=this.titles[this.titles.length-1];
		document.getElementById('nextPage').innerHTML='';
	}
	
	this.load=function (page,targetDiv,titleDiv) {
		//alert(num+": "+tryout);
		this.open(page,targetDiv,false,titleDiv);
		this.putInHistory(page,targetDiv,titleDiv);
		return false;
	}
	
	this.close=function(targetDiv) {
		this.getEl(targetDiv).style.display="none";
	}
	this.refresh=function() {
	//alert(this.currentPage+" => "+this.currentDiv);
		this.open(this.currentPage,this.currentDiv);
	}
	this.getFromHistory=function(num,titleDiv) {
		if (this.hoffset!=0 && num==1) num=this.hoffset+1;
		var num=this.pages.length-num;
		//alert(num+": "+this.pages[num]);
		if (!titleDiv) this.open(this.pages[num],this.divs[num]);
		else this.load(this.pages[num],this.divs[num],this.titles[num]);
	}
	this.goback = function() {
		var num=this.pages.length-this.hoffset-2;
		//alert(num);
		if (num<0) { //if it's the beginning
			document.getElementById('prevPage').innerHTML='';
		}
		else {
			this.hoffset+=1;
			document.getElementById('nextPage').innerHTML=document.getElementById('currentPage').innerHTML;
			document.getElementById('currentPage').innerHTML=this.titles[this.titles.length-this.hoffset-1];
			if (num==0) document.getElementById('prevPage').innerHTML='';
			else document.getElementById('prevPage').innerHTML=this.titles[this.titles.length-this.hoffset-2];
			this.getFromHistory(this.hoffset+1);
			
		}
	}
	this.goforward = function() {
		//alert(hoffset);
		if (this.hoffset>0) {
			this.hoffset-=1;
			document.getElementById('prevPage').innerHTML=document.getElementById('currentPage').innerHTML;
			document.getElementById('currentPage').innerHTML=this.titles[this.titles.length-this.hoffset-1];
			document.getElementById('nextPage').innerHTML=this.titles[this.titles.length-this.hoffset];
			if (this.hoffset==0) document.getElementById('nextPage').innerHTML='';
			this.getFromHistory(this.hoffset+1);
		}
	}
	this.setCurrentPageName = function(pname) {
		document.getElementById('currentPage').innerHTML=pname;
	}
	this.create = function (page,targetDiv,classe) {
		this.currentPage=page;
		this.currentDiv=targetDiv;
		if(!classe) classe='edit';
		if (document.getElementById(targetDiv)) {
			this.get(page,targetDiv);
		}
		else {
			var newDiv=document.createElement("div");
			newDiv.id=targetDiv;
			newDiv.className=classe;
			newDiv.style.zIndex=40;
			var elem=document.body.appendChild(newDiv);
			elem.style.display="block";
			elem.innerHTML=this.waiter;
		//alert(elem.className);
			elem.style.overflow="hidden";
			this.get(page,targetDiv);
			elem.style.display="block";
			elem.style.width="600px";
			elem.style.width=elem.offsetWidth+"px"; //IE SUCKS!
			elem.style.height="auto";
		}
	}
	this.remove = function(targetDiv) {
		var elem=this.getEl(targetDiv);
		if (!document.body.removeChild(elem)) alert('Avviso! finestra non chiusa correttamente');
	}
	this.resize = function (targetDiv,wi,he) {
		var divObj=this.getEl(targetDiv);
		if (wi) divObj.style.height=wi+"px";
		if (he) divObj.style.height=he+"px";
	}
	this.empty= function(targetElem) {
		try{document.getElementById(targetElem).innerHTML='';}
		catch(e) {
			//alert(e+" - target: "+targetElem);
		};
	}
	this.hide=function (targetDiv,checkDiv) {
		var ok=true;
		if (checkDiv) {
			if (!document.getElementById(checkDiv)) ok=false;
		}
		if (ok) {
				
				document.getElementById(targetDiv).style.display='none';
				if (checkDiv) document.getElementById(checkDiv).style.display='block';
		}
	}
	this.show=function (targetDiv,checkDiv,mode) {
		var ok=true;
		if (checkDiv) {
			if (!document.getElementById(checkDiv)) ok=false;
		}
		if (ok) {
				document.getElementById(targetDiv).style.display=mode;
				if (checkDiv) document.getElementById(checkDiv).style.display='none';
		}
	}
	this.invertDisplay=function (targetDiv,checkDiv,mode) {
		if (!mode) mode='block';
		if (getEl(targetDiv).style.display==mode) getEl(targetDiv).style.display='none';
		else getEl(targetDiv).style.display=mode;
	}
	this.invertHeight=function(el,head,tails) {
	if (head>getEl(el).offsetHeight-10 && head<getEl(el).offsetHeight+10) getEl(el).style.height=tails+"px";
	else getEl(el).style.height=head+"px";
	}
	var e;
}

function htmlentities(s){
	var c_div=document.createElement('div');
	var c_text=document.createTextNode(s);
	c_div.appendChild(c_text);
	trt=c_div.innerHTML;
	return trt;
	}
	

			
			
			
		
	
