// JavaScript Document

//  majax : mini ajax


var globallevel=this;
function execjsfile(filename)
{

	var http=createHttp();
	http.open("GET",filename,false);	
	eval(http.responseText);
	
}
function setInnerHTML(divContent, HTML) 
{
	divContent.innerHTML=HTML; 
	try 
	{
		var All=divContent.getElementsByTagName("*");
		for (var i=0; i<All.length; i++) 
		{
			var v=All[i];
			switch(v.nodeName.toUpperCase())
			{
				case "SCRIPT":
					if (v.src!="") execjsfile(v.src);														
					globallevel.eval(v.innerHTML);					
					break;
				
			}
		}
	} catch (ex) {}
		
}	
function htmlDecode(st)
{
	var elm=document.createElement("div");	
	elm.innerHTML=st;	
	return elm.childNodes[0].nodeValue;
}
function createHttp()
{
	try
	{
		return new XMLHttpRequest();
	}
	catch (e)
	{
		try
		{
			return new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				return new ActiveXObject("Microsoft..XMLHTTP");
			}
			catch (e)
			{
				alert("Votre navigateur ne permet pas l'affichage correcte de cette page.");
				return false;
			}
		}
	}
}

function majax()
{
	this.init=function()
	{
		this.xmlHttp=createHttp();		

		
		this.receive=function(st,xm)
		{
			if (this.action) 
			{
				this.action(st,xm);				
			} else
			{
			}

		}
		this.stateChanged=function()
		{

			if(this.xmlHttp.readyState==4)
			{
				if((this.xmlHttp.status == 200))
				{
					this.receive(this.xmlHttp.responseText,this.xmlHttp.responseXML);
				} else
				{
					this.receive("Erreur de chargement :"+this.xmlHttp.statusText);
				}
				
			} 
		}


		this.xmlHttp.onreadystatechange=function(par){return function(){par.stateChanged();}}(this);

		
		this.reload=function()
		{
			if (this.curl!=null)
			{
				if (this.params!=null)
				{
					if (typeof(this.params)=="string")
					{
						this.xmlHttp.open("POST",this.curl,true);
						this.xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
						this.xmlHttp.setRequestHeader("Content-length", this.params.length);
						this.xmlHttp.setRequestHeader("Connection", "close");						
						this.xmlHttp.send(this.params);
					}
					if (this.params instanceof multpartreq)
					{
						this.xmlHttp.open("POST",this.curl,true);
						this.xmlHttp.setRequestHeader("Content-type", "multipart/form-data; boundary=" + this.params.boundary);	
						this.xmlHttp.sendAsBinary(this.params.data);
						
					}
				} else
				{
					this.xmlHttp.open("GET",this.curl,true);
					this.xmlHttp.send("");
				}
			}
		}
		this.load=function(url,pars)
		{
			
			this.curl=url;
			this.params=pars;
			this.reload();
		}
	}
	this.init();	
}
function multpartreq()
{
	this.data="";
	this.CRLF="\r\n";
	this.boundary="-----------------------------805533938738";

	this.addData1=function(name,value)
	{
		this.data+="--"+this.boundary+this.CRLF;
		this.data+="Content-Disposition: form-data; name=\""+name+"\" "+this.CRLF;
		this.data+=this.CRLF;
		this.data+=this.value+this.CRLF;
	}
	this.addFile1=function(name,fname,content)
	{
		this.data+="--"+this.boundary+this.CRLF;
		this.data+="Content-Disposition: form-data; name=\""+name+"\"; filename=\""+fname+"\" "+this.CRLF;
		this.data+="Content-Type: text/xml "+this.CRLF;
		this.data+=this.CRLF;
		this.data+=content+this.CRLF;				
	}
	this.addEnd=function()
	{
		this.data+="--"+this.boundary+"--"+this.CRLF;
	}
	this.addField=function(tfm)
	{
		switch (tfm.tagName.toUpperCase())
		{
			case "INPUT":
				switch (tfm.type.toLowerCase())
				{
					case "text":
					case "radio":
					case "hidden":
						this.addData1(tfm.name,tfm.value);
						break;
					case "checkbox":
						if (tfm.checked)
						{
							this.addData1(tfm.name,tfm.value);
							}else{
							this.addData1(tfm.name,"");
						}
						break;
					case "file":
						var file;
						// marche pas sous IE !!
					   for(var it=0;(file = tfm.files[it])!=null;it++)
					   {						   
						   this.addFile1(tfm.name,file.fileName,file.getAsBinary());
					   }
						break;
					
				}
				break;
			
			case "TEXTAREA":			
				this.addData1(tfm.name,tfm.value);
				isformObject = true;
				break;			
			case "SELECT":
				this.addData1(tfm.name,tfm.options[tfm.selectedIndex].value);
				break;
		}		
	}
	this.addForm=function(theform)
	{
		for(i=0; i < theform.elements.length; i++)
		{
			this.addField(theform.elements[i]);
		}

	}

}
function setCharge(elm)
{
	var els=document.createElement("DIV");
	
	
	
	mask(elm,els);
	
	
}
function setopacity(elm,op)
{
	var stl=elm.style;	
	op=parseFloat(op);
	stl.opacity = op;
    stl.MozOpacity = op;
    stl.KhtmlOpacity =op;
    stl.filter = "alpha(opacity=" + op*100+ ")"; 		

}
function mask(elm,inelm)
{
	var vx=parseInt(elm.offsetWidth);	
	var vy=parseInt(elm.offsetHeight);		

	var msq=document.createElement("DIV");
	var msd=document.createElement("DIV");
		
	msq.style.position="absolute";	
	msq.style.zIndex="99998";	
	msd.style.minHeight=vy+"px";	
	msd.style.minWidth=vx+"px";		
	msq.appendChild(msd);



	msd.style.position="absolute";
	msd.style.minHeight=vy+"px";	
	msd.style.minWidth=vx+"px";		
	msd.style.background="#FFFFFF";
	msd.style.background="#FFFFFF";



	setopacity(msd,0.8);
	
	if (inelm!=null)
	{
		msq.appendChild(inelm);

	}
		
	if (elm.hasChildNodes)	
	{ 
		elm.insertBefore(msq,elm.firstChild);
	} else
	{
		elm.appendChild(msq);
	}

    elm.style.filter = "progid:DXImageTransform.Microsoft.Blur(PixelRadius='2')"; 		
	
}
function unmask(elm)
{
    elm.style.filter = "";	
	
}
function checkform(form)
{
	if (form!=null)
	{
		if (form.onsubmit!=null)
		{
			if (!form.onsubmit()) return false;
		}
	}
	return true;

}
function divload(url,elm,form)
{
	if (typeof(elm)=="string") elm=document.getElementById(elm);
	if (!checkform(form)) return;
	var mj=new majax();

	mj.elm=elm;	
	setCharge(elm);
	
	mj.action=function(stm)
	{		
		unmask(this.elm);
		setInnerHTML(this.elm, stm);
	}
	if (form!=null)
	{
		mj.load(url,create_request_string(form));
	} else
	{
		mj.load(url);
	}
}
function showelem(id)
{
	document.getElementById(id).style.visibility="visible";
}
function hideelem(id)
{
	window.setTimeout("hideelemtm("+id+");",100);

}
function hideelemtm(id)
{
	document.getElementById(id).style.visibility="hidden";
}
function create_request_string_fromarray(ar)
{
	var reqStr = "";
	for(it in ar)
	{
		if (reqStr!="") reqStr+="&";
		reqStr+=it+"="+encodeURIComponent(ar[it]);
	}
	return reqStr;	
}

function create_request_string(theform)
{
	if (theform==null) return "";
	var reqStr = "";
	for(i=0; i < theform.elements.length; i++)
	{
		isformObject = false;
		var tfm=theform.elements[i];
		
		switch (tfm.tagName)
		{
			case "INPUT":
				switch (tfm.type)
				{
					case "text":
					case "hidden":
						reqStr += tfm.name + "=" + encodeURIComponent(tfm.value);
						isformObject = true;
						break;
					case "checkbox":
						if (tfm.checked)
						{
							reqStr += tfm.name + "=" +  encodeURIComponent(tfm.value);
							}else{
							reqStr += tfm.name + "=";
						}
						isformObject = true;
						break;
					
					case "radio":
						if (tfm.checked)
						{
							reqStr += tfm.name + "=" +  encodeURIComponent(tfm.value);
							isformObject = true;
						}
				}
				break;
			
			case "TEXTAREA":			
				reqStr += tfm.name + "=" + encodeURIComponent(tfm.value);
				isformObject = true;
				break;			
			case "SELECT":
				var sel = tfm;
				reqStr += sel.name + "=" +  encodeURIComponent(sel.options[sel.selectedIndex].value);
				isformObject = true;
				break;
		}
		
		if ((isformObject) && ((i+1)!= theform.elements.length))
		{
			reqStr += "&";
		}
		
	}

	return reqStr;
} 

function mform(frm)
{
	return document.forms[frm];
}


function prefresh()
{
	 window.location.reload( false );
}

function selgoajax(selects,elm)
{
	if (selects.selectedIndex != 0)
	{
		var url;
		url=selects.options[selects.selectedIndex].value+"";
		divload(url,elm);
	}
}
function submitto(fm,ur)
{
	fm.action =ur;
	if (!checkform(fm)) return;
	fm.submit();

}
function replace2(st,a,b)
{
	while (st.indexOf(a)>=0)
	{
		st=st.replace(a,b);
	}
	return st;
	

}
function mattribsXML(elm)
{
	var rs="";
	var elmc;
	if(elmc=elm.attributes)
	{
		for (var  id=0;id<elmc.length;id++)
		{
			var sem=elmc[id];
			rs+=mouterXML(sem);			
		}
	}
	return rs;
	
}

function minnerXML(elm)
{
	var rs="";
	if(elm.hasChildNodes())
	{
		var elmc=elm.childNodes;
		for (var id=0;id<elmc.length;id++)
		{
			var sem=elmc[id];
			rs+=mouterXML(sem);			
		}		
	}
	return rs;
	
}

function mouterXML(elm)
{
	var rs="";
	switch(elm.nodeType)
	{
		case 1:
			var cnt=minnerXML(elm);			
			{
				rs+="<"+elm.nodeName;				
				rs+=mattribsXML(elm);
				rs+=">";
				rs+=cnt;
				rs+="</"+elm.nodeName+">";
			}
			break;
		case 2:
			rs+=" "+elm.nodeName+"=\""+elm.nodeValue+"\" ";			
			break;
		case 3:
			rs+=elm.nodeValue;		
			break;
		default:
			rs+=minnerXML(elm);
			break;
	}	
	
	return rs;
	
}

function mxml(xm)
{


	this.elements=new Array();
	if (xm)
	{
		if ((typeof(xm)=='object')&&(xm.length))	
		{
			for(var it in xm)
			{
				this.elements.push(xm[it]);
			}
		} else
		{
			this.elements.push(xm);
		}
	}

	this.childrenByName=function(nm)
	{
		var res=new mxml();
		for(var it=0;it<this.elements.length;it++)
		{
			var elm=this.elements[it];
			var elmc=elm.childNodes;
			for (id=0;id<elmc.length;id++)
			{
				var sem=elmc[id];
				if (sem.nodeName.toLowerCase()==nm.toLowerCase())
				{
					res.elements.push(sem);
				}
			}
			
		}
		return res;
	}
	this.childrenByPath=function(nm)	
	{
		var it=nm.indexOf("/");
		if (it>=0)
		{
			var nm1=nm.substr(0,it);
			var nm2=nm.substr(it+1);
			var res=this.childrenByName(nm1);
			return res.childrenByPath(nm2);						
		} else
		{		
			return this.childrenByName(nm);
		}
	}
	this.textContent=function()
	{
		var rs="";
		for(var it=0;it<this.elements.length;it++)
		{
			var elm=this.elements[it];
			if (elm.textContent) rs+=elm.textContent;
			if (elm.text) rs+=elm.text;
		}
		return rs;
	}
	this.attributesValues=function(tb)
	{
		var tb=new Array();
		
		for(var it=0;it<this.elements.length;it++)
		{
			var elm=this.elements[it];
			if (elm.nodeValue) tb.push(elm.nodeValue);

		}
		return tb;
	}	
	this.outerXML=function()
	{
		var rs="";
		for(var it=0;it<this.elements.length;it++)
		{
			var elm=this.elements[it];
			rs+=mouterXML(elm);

		}
		return rs;
	}
	this.innerXML=function()
	{
		var rs="";
		for(var it=0;it<this.elements.length;it++)
		{
			var elm=this.elements[it];
			rs+=minnerXML(elm);

		}
		return rs;
	}
	this.childLength=function()
	{
		return this.elements.length;
	}
	this.childByIndex=function(id)
	{
		return new mxml(this.elements[id]);
	}
	
	this.attributesByName=function(nm)
	{
		var res=new mxml();
		for(var it=0;it<this.elements.length;it++)
		{
			var elm=this.elements[it];
			var elmc=elm.attributes;
			for (id=0;id<elmc.length;id++)
			{
				var sem=elmc[id];
				if (sem.nodeName.toLowerCase()==nm.toLowerCase())
				{
					res.elements.push(sem);
				}
			}
			
		}
		return res;
	}
	
}
	


function addCSS(sc)
{
	var link = document.createElement('link');
	link.href=sc;
	link.type='text/css';link.rel='stylesheet';
	document.getElementsByTagName('head')[0].appendChild(link);
}



