// JavaScript Document
var ajax = new Object();

function majSelectAjax(id,url,idSelect)
{
	ajaxCallback(url, "", "GET", "html", true, insertSelectAjax, {'id' : id,'idSelect':idSelect});
}

function insertSelectAjax(retour,p)
{
	retourJSON = JSON.decode(retour);
	elementSelect = document.getElementById(p.id);
	elementSelect.length = 0;

	for(var i=0;i < retourJSON.length;i++)
	{
		var elementOption = document.createElement("option");
		elementOption.setAttribute('value',retourJSON[i].id)
		if(p.idSelect && retourJSON[i].id == p.idSelect)
			elementOption.setAttribute('selected','selected')
		
		var valeurElementOption = document.createTextNode(retourJSON[i].texte);
		elementOption.appendChild(valeurElementOption); 
		
		//Recupération du Noeud "position"
		//var NodeListe = elementSelect.getElementsByTagName("option");
		//var position = NodeListe.item(1);
		
		//Insertion
		elementSelect.appendChild(elementOption);
		//return;
	}
	elementSelect.length = retourJSON.length;
	//elementSelect.length = elementSelect.length+1;
}

/*
@url = Page demandée
@args= Paramètres de l'url
@meth= POST | GET
@mode= xml | html
@differe = true | false
@fct = fonction de retour
@params = paramètres envoyées à la fonction de retour
*/
function ajaxCallback(url, args, meth, mode, differe, fct, params)
{
	var xmlhttp = false;
	var html = '';


	if (!xmlhttp)
	{
		if(!window.XMLHTTPRequest && window.ActiveXObject)
		{
			try
			{
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(exc)
			{
			}
		}
		else if(typeof XMLHttpRequest!='undefined')
		{
			xmlhttp = new XMLHttpRequest();	
		}

	}
	
	if (!differe)
	{
		xmlhttp.open(meth, url, false);

		if (meth == 'POST')
		{
			xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

		}
		xmlhttp.send(args);

		if (mode == 'xml')
			return xmlhttp.responseXML.childNodes[0];
		else
		{
			return xmlhttp.responseText;
		}
			
	}
	else
	{
		xmlhttp.open(meth, url, true);
		xmlhttp.onreadystatechange = function()
		{
			if(xmlhttp.readyState == 4 && fct.length != 0)
			{
				if (mode == 'xml')
					fct(xmlhttp.responseXML.childNodes[0], params);
				else
					fct(xmlhttp.responseText, params);
			}
		};
		
		if (meth == 'POST')
		{
			xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		}
			xmlhttp.send(args);
	}
	return false;
}

/*
	Envoi des données du formulaire 
	Extrait les données du formulaire et renvoi une chaine variable valeur
*/
function getFormValues(fobj)
{
   var str = "";
   var valueArr = null;
   var val = "";
   var cmd = "";

   for(var i = 0;i < fobj.elements.length;i++)
   {
	   if (!fobj.elements[i].disabled)
	   switch(fobj.elements[i].type)
	   {
		   case "text":
		   case "hidden":
		   case "textarea":
		   case "password":

				str += fobj.elements[i].name +
				 "=" + escape(fobj.elements[i].value).replace(/%u20AC/g, '%80').replace(/\+/g, '%2B') + "&";
				 break;

		   case "select-one":
					try
					{
				str += fobj.elements[i].name +
				"=" + escape(fobj.elements[i].options[fobj.elements[i].selectedIndex].value).replace(/%u20AC/g, '%80').replace(/\+/g, '%2B') + "&";
					}
					catch(e){};

				break;
		   case "select-multiple":
					var elt = fobj.elements[i];
					for (var a in elt.childNodes)
					{
						if (elt.childNodes[a].nodeType == 1) if (elt.childNodes[a].selected)
						{
						str += fobj.elements[i].name +
						"=" + escape(elt.childNodes[a].value).replace(/%u20AC/g, '%80').replace(/\+/g, '%2B') + "&";
						}
					}
				break;
		   case "checkbox":
		   case "radio":
					if (fobj.elements[i].checked)
					{
					str += fobj.elements[i].name +
					"=" + escape(fobj.elements[i].value).replace(/%u20AC/g, '%80').replace(/\+/g, '%2B') + "&";
					}
					else
					{
					/*str += fobj.elements[i].name + "=&";*/
					}
					break;
	   }
   }
   str = str.substr(0,(str.length - 1));
   return str;
}

/*
	Envoi un formulaire et affiche le contenu retourne dans le div de destination
	f nom du formulaire a envoye
	xdiv identifiant du div recevant le contenu retourne de l'envoi du formulaire
*/
function sendForm(f, xdiv)
{
	var args = getFormValues(document.forms[f]);
	var meth = document.forms[f].method;

	if (!meth)
		meth = 'get';
	meth = meth.toUpperCase();


	ajaxCallback(document.forms[f].action + (meth == 'GET' ? '?' + args : ''), (meth == 'GET' ? null : args), meth, 'html', true, loadPageRes, {'xdiv' : xdiv});
}


function loadPage(url, xdiv, cacheVar)
{
	ajaxCallback(url, null, 'GET', 'html', true, loadPageRes, {'xdiv' : xdiv, 'loading' : false, 'cacheVar' : cacheVar});
}


/**
*
*/
function loadPageRes(html, p)
{
		var a;
		var js = '';
	
		var e = /<script[^>]+src\="(.+)"[^>]*><\/script>/gi;
		var r;
		var h;
		h = html;
		while (r = e.exec(h))
		{
			var elt = document.createElement('script');
			elt.type = 'text/javascript';
			elt.src = r[1];
			document.getElementsByTagName('body')[0].appendChild(elt);
	
			// On enlève de h
			var h = h.substr(0, r.index) + h.substr(r.index + r[0].length);
			if (r = e.exec(h)){} // A laisser... sinon Firefox fait le moisi :|
			var e = /<script[^>]+src\="(.+)"[^>]*><\/script>/gi;
		}
	
		
		while ((a = h.indexOf('<script ')) != -1)
		{
			var b = h.substr(a, h.length - a);
			var fin = h.indexOf('</script>' /**/);
			if (fin > -1)
			{
				var js2 = b.substr(0, fin - a);
				var c = js2.indexOf('>');
				js += js2.substr(c + 1);
				h = h.substr(0, a) + h.substr(fin + /**/ 9);
			}
		}
	if (document.getElementById(p.xdiv))
	{
		document.getElementById(p.xdiv).innerHTML = h;
	}
	
	if (p.cacheVar)
	{
		eval(p.cacheVar + " = h;");
	}
	try
	{
		if (js)
			eval(js);
	}
	catch(e){alert(e);};	
}
