   var http_request = false;
   var poststr = "";
   document.FormID;
   document.MessageID;
   document.LoadingID;

   function makePOSTRequest(url, parameters) {
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/xml');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Ajax stuck!');
         return false;
      }
      
      http_request.onreadystatechange = alertContents;
      http_request.open('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
   }

   function alertContents() {
      if (http_request.readyState == 4) {

		//remove loading
		toggleElementDisplay(document.LoadingID, false);
         if (http_request.status == 200) {
            responseText = http_request.responseText;
			return showResponse(responseText);
         } else {
            alert('Un pb de Requete AJAX.');
			return false
         }
      }
	  else
	  {
	  }
	  
   }
   
   function processForm(FormID, MessageID, LoadingID) {
	   document.FormID = FormID;
	   document.MessageID = MessageID;
	   document.LoadingID = LoadingID;
	   	//remove loading
		toggleElementDisplay(LoadingID, false);

	   poststr = "";
   		FormObj = document.getElementById(FormID);
		//lookup form elements and build post string
		recurseFormNodes(FormObj.name);
		//add closing var
	  	poststr += "Done=" + encodeURI( "Yes" );
		//Post!!
		makePOSTRequest(FormObj.action, poststr);
		return false;
   }
   function recurseFormNodes(FormName){
	   	FormObj = document.forms[FormName];
		for (i=0; i<FormObj.elements.length; i++) {
				Element = FormObj.elements[i];
			 if (Element.tagName == "INPUT") {
				if (Element.type == "text" | Element.type == "hidden" | Element.type == "image") {
				   poststr += Element.name + "=" + encodeURI(Element.value) + "&";

				}
				if (Element.type == "checkbox") {

				   if (Element.checked) {
					  poststr += Element.name + "=" + encodeURI(Element.value) + "&";
				   } else {
					  poststr += Element.name + "=&";
				   }
				}
				if (Element.type == "radio") {

				   if (Element.checked) {
					  poststr += Element.name + "=" + encodeURI(Element.value) + "&";
				   }
				}
			 }   
			 else if (Element.tagName == "SELECT") {

				var sel = Element;
				poststr += sel.name + "=" + encodeURI(sel.options[sel.selectedIndex].value) + "&";
			 }
			 else if (Element.tagName == "TEXTAREA") {
				   poststr += Element.name + "=" + encodeURI(Element.value) + "&";
			 }
			 else {
				   poststr += Element.name + "=" + encodeURI(Element.value) + "&";
			 }
		 
		}
   }
   function showResponse(responseText){
	   var ServerSuccess = 0;
	   var ServerMessage = '';
	  if (responseText){
	  			eval(responseText);
	  			if (ServerMessage){
					//Show error
					document.getElementById(document.MessageID).innerHTML = ServerMessage;
					document.getElementById(document.MessageID).style.display = "block";
				}
				if(ServerSuccess == 1) {
				// Show success
				document.getElementById(document.FormID).style.display = "none";
				}

	  }
	  else{
	  	alert("Pas de Retour");
	  }
	  //scroll(0,0);  
   
   }
   function toggleElementDisplay(elementId, focusElement){
		element = document.getElementById(elementId);
		if (!element)
		{
			alert(elementId);
			return false;
		}
		if (element.style.display == "none")
		{
			element.style.display = "block";
			if (focusElement)
			{
				element.focus();
			}
		}
		else{
			element.style.display = "none";
		}
		return true;
   }

   function hideElement(elementId){
		element = document.getElementById(elementId);
		if (!element)
		{
			return false;
		}
		element.style.display = "none";
		return true;
   }
	function changeElementContent(elementId, newContent)
	{
		element = document.getElementById(elementId);
		if (!element)
		{
			return false;
		}
		element.innerHTML = newContent; 
	}
	function changeElementClass(elementId, newClass)
	{
		element = document.getElementById(elementId);
		if (!element)
		{
			return false;
		}
		element.className = newClass; 
	}
   function addToInput(stringToAdd, elementId, recapDivId){
		element = document.getElementById(elementId);
		if (!element)
		{
			return false;
		}
   		if (element.tagName == "INPUT")
		{
			element.disabled = false;
			element.value += stringToAdd + ' | ';
			element.disabled = true;
		}
		else {
			alert("no")
			return false;
		}
		//special, show in div
		recapDiv = document.getElementById(recapDivId);
		if (recapDiv)
		{
			recapDiv.innerHTML += '<b>' + stringToAdd + '</b>' + ' | ';
		}
		else
		{
			alert("no recap")
		}


  } 

