if( "undefined" == typeof __)
{
    __ = function(idname)
    {
        return document.getElementById(idname);
    }
}

// Renvoie le texte de l'objet ActiveXObject le plus récent depuis une liste
var pickRecentProgID = function (idList){
	// found progID flag
	var bFound = false;
	for(var i=0; i < idList.length && !bFound; i++){
		try{
			var oDoc = new ActiveXObject(idList[i]);
			o2Store = idList[i];
			bFound = true;
		}catch (objException){
			// trap; try next progID
		};
	};
	if (!bFound)
		throw ("Aucun ActiveXObject n'est valide sur votre ordinateur, pensez à mettre à jour votre navigateur");
	idList = null;
	return o2Store;
}
 
// Retourne un nouvel objet XmlHttpRequest
var GetXmlHttpRequest_AXO=null
var xx = 0;
var GetXmlHttpRequest=function () {
	if (window.XMLHttpRequest) {
		xx++;	
		if(xx == 0)
			return new XMLHttpRequest();
		if(xx > 0)
			return this.XMLHttpRequest();
	}
	else if (window.ActiveXObject) {
		if (!GetXmlHttpRequest_AXO) {
			GetXmlHttpRequest_AXO=pickRecentProgID(["Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]);
		}
			return new ActiveXObject(GetXmlHttpRequest_AXO)
	}
	return false;
}
 
function getFileContent(url) {
	var Xhr=GetXmlHttpRequest();
	Xhr.open("GET",url,false);
	Xhr.send(null);
   return Xhr.responseText;
}

/*Ecriture dans un div*/
function writediv(idName, txtHtml)
{
	d = __(idName);	
	try{
		d.innerHTML=txtHtml;
	}catch(error){
		detailError(error);
	}
	// forcer l'executtion des script si présents
	var AllScripts=d.getElementsByTagName('script');
	for (var i=0; i<AllScripts.length; i++){
	//for(var x in AllScripts[i]) alert(x);
	var s=AllScripts[i];
	if (s.src && s.src!="") { 
		// Précédement asynchrone, mis en synchrone pour éviter des problèmes de dépendances de scripts
		eval(getFileContent(s.src));
	 }
	 else if(s.text && s.text!=""){
	    eval(s.text);
	 }else{
		eval(s.innerHTML);
	 }
  }
}

function writeOptions(select,xml,protege)
{
	if(xml == null) return;
	var options = xml.getElementsByTagName("option");
	var elt,selected;
	var select = __(select);
	try
	{
		while(select.length > protege)
			select.remove(protege);
		for(var i = 0; i < options.length; i++)
		{
			elt =  document.createElement("option");
			select.appendChild(elt);
			elt.setAttribute("value",options[i].getAttribute("value"));
			selected    = options[i].getAttribute("selected");
			if(selected != null)
			{
				elt.setAttribute("selected","selected");
			}
			elt.text    = options[i].firstChild.data;           
		}
	}
	catch(e)
	{
		alert(e);
	}        
}

function detailError(a){
	if(typeof a=="string"){
		d=a+"\n string"
	}else{
		for(var e in a){
			try{
				d += e + ": " + a[e] + "\n"
			}catch(f){}
		}
	}
	alert(a);
}

/*
	procedures d'appel générique ajax
	- ajaxGetObject    
	- ajaxSyncPOST  a faire
	- ajaxASyncPOST a faire
	- ajaxSyncGET
	- ajaxSyncGETXML
	- ajaxASyncGET a faire
*/
function ajaxGetObject()
{
	if("undefined" != typeof XMLHttpRequest)
	{
		return new XMLHttpRequest();
	}
	else if("undefined" != typeof ActiveXObject)
	{
		try
		{
			return new ActiveXObjet("Msxml2.XMLHTTP.4.0");
		}
		catch(e)
		{
			try
			{
				return new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch(e2)
			{
				return new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
	}
	else if(window.createRequest)
	{
		return window.createRequest();
	}
	return null;
}

function ajaxSyncGET(url)
{
	var xhr = null;
	//        if(window.XMLHttpRequest)       // pour firefox
	//            xhr = new XMLHttpRequest();
	//        else if(window.ActiveXObject)   // pour IE
	//            xhr = new ActiveXObject("Microsoft.XMLHTTP");
	//           else
	//        return "";
	xhr = ajaxGetObject();
	if(xhr)
	{
		xhr.open("GET",url,false);
		xhr.send(null);
		return xhr.responseText;
	}
	return "";
}

function ajaxSyncGETXML(url,debug)
{
	var xhr = null;
	xhr = ajaxGetObject();
	if(xhr)
	{
		xhr.open("GET",url,false);
		xhr.send(null);
		if("undefined" != typeof debug)
			alert("1-->"+xhr.responseText);	
		return xhr.responseXML;
	}    
	return "";
}

function ajaxSyncPOST(url,params)
{
	var xhr = ajaxGetObject();
	if(xhr)
	{
		xhr.open("POST",url,false);
		xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
		xhr.send(params);
		return xhr.responseText;
	}
	return "";
}

function ajaxSyncPOSTXML(url,params,debug)
{
	var xhr = ajaxGetObjet();
	if(xhr)
	{
		xhr.open("POST",url,false);
		xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
		xhr.send(params);        
		if("undefined" != typeof debug)
			alert("1-->"+hxr.responseText);   
		return xhr.responseXML;
	}    
	return "";
}

function champEntree(obj)
{
	obj.style.backgroundColor = "#ffffff";
}

function champErreur(obj)
{
	obj.style.backgroundColor = "#e52121";
	obj.onfocus = function() { this.style.backgroundColor="#ffffff";}
}

function ajaxAsyncGET(url,callback)
{
	var xhr = null;
	xhr = ajaxGetObject();
	if(xhr)
	{
	    xhr.onreadystatechange  = function()
		{ 
			if(xhr.readyState  == 4)
			{
				if(xhr.status  == 200 )
				{
				    if(callback) eval(callback)(xhr.responseText);

					return xhr.responseText;
				}
				else
				{
					return xhr.statut;
				}
			}
		}; 

		xhr.open("GET",url,true);   
		xhr.send(null);
		//return xhr.responseText;
	}
	return "";
}

/*Recupere tous les parametres du formulaire*/
function getFormsParams(obj){
	tmp = obj.elements.length;
	for(var i=0; i<obj.elements.length;i++){
		if(obj.elements[i].type == "hidden"){
            tmp +='&'+obj.elements[i].name+'='+obj.elements[i].value;
		}
		if(obj.elements[i].type == "radio" && obj.elements[i].checked){
			tmp +='&'+obj.elements[i].name+'='+obj.elements[i].value;		
		}	
		if(obj.elements[i].type == "checkbox" && obj.elements[i].checked){
			tmp +='&'+obj.elements[i].name+'='+obj.elements[i].value;		
		}
		if(obj.elements[i].type == "select-one" && obj.elements[i].options.length>0){
			tmp +='&'+obj.elements[i].name+'='+obj.elements[i].options[obj.elements[i].selectedIndex].value;		
		}
		if(obj.elements[i].type == "text" || obj.elements[i].type == "textarea" ){
			tmp +='&'+obj.elements[i].name+'='+obj.elements[i].value;		
		}
//		debug(obj.elements[i].type);
	}
//	debug(tmp);
	return tmp;
}

function verifierEmail(email)
{
	var exp = new RegExp("^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$");
	return exp.test(email);
}

