function	myAjax(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	RemoveTinyMceGET(url, div)
{
    for (var i = 1; i < 100; i++)
      if (document.getElementById('div_language_'+i))
	{
	  tinyMCE.execCommand('mceRemoveControl', true, 'elm'+i);
	  tinyMCE.execCommand('mceRemoveControl', true, 'elm-2-'+i);
        }
    GET(url, div);
}
*/
/*
function RemoveTinyMce(obj) {
  if (obj.id && ((obj.nodeName=="DIV") || (obj.nodeName=="TEXTAREA")))
  {
    tinyMCE.execCommand('mceRemoveControl', true, obj.id);
  }
  for (var i=0;i < obj.childNodes.length;i++)
  {
    if (obj.childNodes[i].nodeType==1)
       RemoveTinyMce(obj.childNodes[i]);
  }
}

function	RemoveTinyMceGET(url, div)
{
    RemoveTinyMce(document.getElementsByTagName("body")[0]);
    modAjax.GET(url, div);
}

function	RemoveTinyMcePOST(url, formId, div)
{
    RemoveTinyMce(document.getElementsByTagName("body")[0]);
    modAjax.POST(url, formId, div);
}
*/
function	GET(url, div)
{
	callback =	function(Xhr)
				{
					parseResponse(div, Xhr.responseText);
				}
	myAjax({'method': 'GET', 'url': url, 'callback': callback});
}

function POST(url, fdata, div)
{
	callback =	function(Xhr)
				{
					parseResponse(div, Xhr.responseText);
				}
	myAjax({'method': 'POST', 'url': url, 'data': buildData(fdata), 'callback': callback});
}

function	parentGET(url, div)
{
	callback =	function(Xhr)
		 		{
			 		parent.document.getElementById(div).innerHTML = Xhr.responseText;
		 		}
	myAjax({'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]));
        }
	myAjax({'method': 'POST', 'url': url, 'data': str, 'callback': callback});
}

