// 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
// redirOK : redirection de page si retour === __OK__
function getHTTPObject( id, redirOK )
{
	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
					{
						if( redirOK && redirOK != '' && xmlhttp.responseText == '__OK__' )
						{
							//alert( redirOK );
							document.location.href = redirOK;
							//document.location.href = 'http://www.google.com/';
							return;
						}
						else
						{
							document.getElementById( id ).innerHTML = xmlhttp.responseText;
						}
					}
					else
						document.getElementById(id).innerHTML = 'Échec de la requète (erreur ' + xmlhttp.status + ' ), merci de réessayer plus tard.';
					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);
		}
	}

	for( var i in datalist )
	{
		request += i + '=' + datalist[i] + '&';
	}
	request = request.substring( 0, request.length-1 ); // supprimer le '&' final

	return request;
}



// argument[0] : id de l'objet html à editer
// argument[2] : les data à envoyer;
// argument[3] : le message/image d'attente
function doAjax( id, data, waitmsg, redirOK )
{
	if( waitmsg ) document.getElementById( id ).innerHTML = waitmsg ;
	var xmlhttp = getHTTPObject( id, redirOK );

	xmlhttp.open( "GET", "index.php?" + data, true ); // true = asynchrone
	xmlhttp.send( data ); // ??
}


function doAjaxForm( id, page, myForm, waitmsg, redirOK )
{
	data = buildForm( myForm ); //faire avant le message, sinon ça vide le formulaire!! (sous IE)

	if( waitmsg ) document.getElementById( id ).innerHTML = waitmsg ;

	var xmlhttp = getHTTPObject( id, redirOK );

	xmlhttp.open( "POST", "index.php?page=" + page, true ); // true = asynchrone
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xmlhttp.setRequestHeader('Charset', 'iso-8859-15');
	xmlhttp.setRequestHeader('Accept-Charset', 'iso-8859-15');

	xmlhttp.send( data );
}

