function	Ajax(obj)
{
  if (document.getElementById('div_error'))
     document.getElementById('div_error').innerHTML = '';
	var Xhr = getXMLHttpRequest();
	if (!Xhr)
		return false;

	Xhr.onreadystatechange = function()
	{
		if (Xhr.readyState == 4 && Xhr.status == 200)
			obj.callback(Xhr);
	}
	Xhr.open(obj.method, obj.url, true);
	if (obj.method == "POST")
	{
		Xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		Xhr.send(obj.data);
	}
	else if (obj.method == "GET")
		Xhr.send(null);
}

function	getXMLHttpRequest()
{
	var Xhr = null;
	
	try
	{
		Xhr = new XMLHttpRequest();
		if(Xhr.overrideMimeType)
			Xhr.overrideMimeType('text/xml');
	}
	catch (e)
	{
		try
		{
			Xhr = new ActiveXObject("Msxml2.XMLHTTP");
		} 
                catch (e) 
                {
			try
			{
				Xhr = new ActiveXObject("Microsoft.XMLHTTP");
			} 
                        catch (e) {}
		}
	}
	if(!Xhr)
		alert('Error: could not create XMLHTTP object.');
	return Xhr;
}

function	buildData(arg)
{
	if (!arg)
		return null;
	var tab		= arg.split(":");
	var data	= "";
	for (key in tab)
	{
		if (data.length)
			data = data.concat("&");
		data = data.concat(tab[key], "=", getElementValue(tab[key]));
	}
	return data;
}

function getElementValue(key)
{
	if (key && document.getElementById(key))
	{
		switch (document.getElementById(key).type)
		{
			case "checkbox":
				if (document.getElementById(key).checked == false)
					return 0;
				else
					return document.getElementById(key).value;
			case "radio":
				if (document.getElementById(key).checked == false)
					return 0;
				else
					return document.getElementById(key).value;
			default:
				return document.getElementById(key).value;
		}
	}
	return "";
}

function getElementValueByElement(key)
{
	if (key)
	{
		switch (key.type)
		{
			case "checkbox":
				if (key.checked == false)
					return "";
				else
					return key.value;
			case "radio":
				if (key.checked == false)
					return "";
				else
					return key.value;
			default:
				return key.value;
		}
	}
	return "";
}

function getAction(response)
{
	if (response && response.length > 2)
		return response.substr(0, 2);
	return null;
}

function getResponse(response)
{
	if (response && response.length > 3)
		return response.substr(3);
	return response;
}

/**
* MISC
*/

function	clearDiv(div)
{
	var elem	= document.getElementById(div);
	if (elem)
	{
		var child	= elem.firstChild;
		var tmp		= null;
		while (child != null)
		{
			tmp		= child;
			child	= child.nextSibling;
			elem.removeChild(tmp);
		}
	}
 }

function	clearParentDiv(div)
{
	parent.document.getElementById(div).innerHTML = "";
}

/* parsage du javascript */
function	parseResponse(div, content)
{
	var	elem		= document.getElementById(div);
	if (elem)
	{
		elem.innerHTML	= content;
		var scripts		= elem.getElementsByTagName('script');
		for (var i = 0; i < scripts.length; i++)
		{
			var newScript = document.createElement('script');
			for (var j = 0; j < scripts[i].attributes.length; j++)
			{
				if (typeof(scripts[i].attributes[j]) != 'undefined'
					&& typeof(scripts[i].attributes[j].nodeName) != 'undefined'
					&& scripts[i].attributes[j].nodeValue != null
					&& scripts[i].attributes[j].nodeValue != '')
					newScript.setAttribute(scripts[i].attributes[j].nodeName, scripts[i].attributes[j].nodeValue);
			}
			newScript.text = scripts[i].text;
			scripts[i].parentNode.replaceChild(newScript, scripts[i]);
		}
		return true;
	}
	return false;
}

function strReplace(s, r, w){
     return s.split(r).join(w);
}

function	GET(url, div)
{
	var str = url;

	if (div == "contain_2")
		div = "contain_1";
	if (div == "detailContainer_2")
		div = "detailContainer_1";

	var container = div+"=true&old_navigator=true&";

	str = strReplace(str, "ajax/ajax.php?", "index.php?"+container);
	//str = strReplace(str, "section", "");
	//str.replace("/ajax/ajax.php?/", "index.php?"+container);
	//alert(str);
	document.location = str;
}

function POST(url, fdata, div)
{
	var str = url;

	if (div == "contain_2")
		div = "contain_1";
	if (div == "detailContainer_2")
		div = "detailContainer_1";

	var container = div+"=true&old_navigator=true&";

	str = strReplace(str, "ajax/ajax.php?", "index.php?"+container);

	document.location = str+"&"+_parseForm(fdata);
}

function	parentGET(url, div)
{
	callback =	function(Xhr)
		 		{
			 		parent.document.getElementById(div).innerHTML = Xhr.responseText;
		 		}
	Ajax({'method': 'GET', 'url': url, 'callback': callback});
}

function                POSTForm(url, formul, div)
{
  	callback =	function(Xhr)
				{
					parseResponse(div, Xhr.responseText);
				}

        var str = "";
        for (var i = 0; document.forms[formul] && document.forms[formul].elements[i]; i++)
        {
                str += document.forms[formul].elements[i].name+"="+escape(getElementValueByElement(document.forms[formul].elements[i]))+"&";
        }
	Ajax({'method': 'POST', 'url': url, 'data': str, 'callback': callback});
}

function	_parseForm(formId)
{
	var	f = document.getElementById(formId);
	var data = '';
	if (f)
	{
		var c = f.getElementsByTagName("input" );
		for(var i = 0; i < c.length; i++)
		{
			if (data.length)
				data = data.concat("&");
			data = data.concat(c[i].name, "=", _getElementValue(c[i]));
		}
		var s = f.getElementsByTagName("select" );
		for(var i = 0; i < s.length; i++)
		{
			if (data.length)
				data = data.concat("&");
			data = data.concat(s[i].name, "=", _getElementValue(s[i]));
		}
		var t = f.getElementsByTagName("textarea" );
		for(var i = 0; i < t.length; i++)
		{
			if (data.length)
				data = data.concat("&");
			data = data.concat(t[i].name, "=", _getElementValue(t[i]));
		}
	}
	return data;
}

function	_getElementValue(key)
{
	if (key)
	{
          var elem = key;
		if (elem)
		{
			switch (elem.type)
			{
				case "checkbox":
				case "radio":
					if (elem.checked == false)
						return 0;
					else
						return encodeURIComponent(elem.value);
				default:
					return encodeURIComponent(elem.value);
			}
		}
	}
	return "";
}
