// Fonction de gestion du retour de la requète
// Appelée par doAjax
// 1) Suit l'état de la requète
// 2) Agit sur la page en cours

// id : id de l'objet html à editer
function getHTTPObject( id )
{
	var xmlhttp = false;

        if(window.XMLHttpRequest) // Firefox
	{
                xmlhttp = new XMLHttpRequest();
	}
        else if(window.ActiveXObject) // Internet Explorer
	{
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e1) {
				xmlhttp = null;
			}
		}
	}
	else
	{
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
		return;
	}

	if( xmlhttp )
	{
		xmlhttp.onreadystatechange = function()
		{
			switch( xmlhttp.readyState )
			{
				case 4: /* 4 : ?tat "complete" */
					if ( xmlhttp.status == 200 ) // 200 : code HTTP pour OK
					{
						document.getElementById( id ).innerHTML = xmlhttp.responseText;
					}
					else
						document.getElementById('myReturn').innerHTML = 'Echec de la requête ( erreur ' + xmlhttp.status + ' ).';
					break;

				default: /* ?tats interm?diaires */
				//document.getElementById('myReturn').innerHTML = 'Sauvegarde 70%...';
			}
		}
	}

	return xmlhttp;
}


function buildForm( myForm )
{
	var datalist = new Object();
	var request = new String;

	for( var i=0; i < myForm.length; i++ )
	{
		var myElem = myForm[i] ;
		var elemName = myElem.name ;
		var elemType = myElem.type ;
		var elemValue = '' ;

		switch( elemType )
		{
			case 'radio':
			case 'checkbox':
				if( myElem.checked ) elemValue = myElem.value ;
				break;

			case 'select-one':
				elemValue = myElem.options[myElem.selectedIndex].value;
				break;

			default:
				var elemValue = myElem.value ;
		}
		if( elemName != '' && elemValue != '' )
		{
			//datalist[escape(elemName)] = escape(elemValue);
			//datalist[encodeURI(elemName)] = encodeURI(elemValue);
			datalist[elemName] = elemValue;
		}
	}

	for( var i in datalist )
	{
		request += i + '=' + datalist[i] + '&';
	}
	request = request.substring( 0, request.length-1 ); // supprimer le '&' final
	//alert( 'req ' + request ) ;

	return request;
}



// argument[0] : id de l'objet html à éditer
// argument[2] : les data à envoyer;
// argument[3] : le message/image d'attente
function doAjax( id, data, waitmsg )
{
	if( waitmsg ) document.getElementById( id ).innerHTML = waitmsg ;
	var xmlhttp = getHTTPObject( id );

	xmlhttp.open( "GET", "index.php?" + data, true ); // true = asynchrone
	xmlhttp.send( data ); // ??
}


function doAjaxForm( id, page, myForm, waitmsg )
{

	data = buildForm( myForm ); //faire avant le message, sinon ça vide le formulaire!! (sous IE)

	if( waitmsg ) document.getElementById( id ).innerHTML = waitmsg ;
	//if( waitmsg ) document.getElementById( id ).innerHTML = data ; return;

	var xmlhttp = getHTTPObject( id );

	xmlhttp.open( "POST", "index.php?page=" + page, true ); // true = asynchrone
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
	xmlhttp.send( data );
}



function addLoadEvent(func)
{
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}


