function SetupFormHandler(target){
	
	var loc = 'content/setupsharedresources/';
	
	var target=target;	
	var req=null;
	this.a=0;
	
	try{
		req=new XMLHttpRequest();
	}
	catch(e){
		try{
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch(e){
			try{
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch(e){}
		}  
	}
	
	function buildQuery(fName){
		//var s=target.indexOf('?')!=-1?"&":"?";
		var s='?rand='+(new Date()).getTime()+'&';
		var el=document.forms[fName].elements;
		for(var i=0;i<el.length;i++){
			var el_=el[i];
			if((el_.type!="checkbox"&&el_.type!="radio")||((el_.type=="checkbox"||el_.type=="radio")&&el_.checked)){
				s+=el_.name+"="+el_.value+"&";
			}
		}
		return s;
	}
	
	this.update=function(){
		var q=buildQuery('setupForm')+'&a='+this.a+'&target='+target;
		document.getElementById('previewFrame').src=loc+'codewrapper.php'+q;
		req.open("GET",loc+'codespitter.php'+q,true);
		var self=this;
		var cf=document.getElementById("codetf");
		req.onreadystatechange=function(){
			if(req.readyState==4){
				switch(req.status){
				case 200:
					cf.innerHTML=req.responseText;
					break;
				case 503:
					cf.innerHTML="Service temporarily unavailable, will retry...";
					setTimeout(function(){self.update();},2000);
					break;
				default:
					cf.innerHTML="Error: HTTP status "+req.status;
				}
			}
		}
		req.send(null);
	}

	this.set=function(div,form){
		req.open("GET",loc+'upd.php'+buildQuery(form),true);
		div.innerHTML='processing...';
		var obj=this;
		req.onreadystatechange=function(){
			if(req.readyState==4){
				switch(req.status){
				case 200:
					var t=req.responseText;
					t=t.split(';');
					if(t[0]=='ok'){
						obj.a=t[1];
						div.innerHTML='Ok.<br>Please replace your old code with the code on the left.';
						obj.update();
					}
					else{
						div.innerHTML=t[0];
						obj.reset();
					}
					break;
				case 503:
					div.innerHTML="Service temporarily unavailable, please retry...";
					break;
				default:
					div.innerHTML='Error: HTTP status '+req.status;
					obj.reset();
				}
			}
		}
		req.send(null);
	}
	
	this.reset=function(){
		this.a=0;
		this.update();
	}
	
	this.update();
	
}

