   var http_request = false;
   var urlTabsScript = 'includes/tabs.php';
   var urlCodesList = 'codes_list.php';
   var urlCriteriasList = 'criterias_list.php';
   var urlItemState = 'includes/list_state_manage.php';
   var urlForgetSessionSQL = 'includes/forget_session_sql.php';
   
   // Affichage des onglets
   function makeTabsGETRequest(pageType) {

      http_request = getXMLHttpObj();
	  if (!http_request) {
         alert('Votre fureteur ne supporte pas Ajax. Vous ne pourrez vous servir de cette application.');
         return false;
	  }
	  url = urlTabsScript;
	  
      http_request.onreadystatechange = stateChangedTabs;
      http_request.open('GET', url + '?page_type=' + pageType, true);
      http_request.send(null);
   }
   
   function stateChangedTabs() {
	   
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            //alert(http_request.responseText);
            result = http_request.responseText;
            document.getElementById('CastingsTabs').innerHTML = result;            
         } else {
            alert('Une erreur systeme est survenue lors du choix d\'onglet.');
         }
      }
   }
   
   
   // Script PHP pour changer le state de active
   function makeItemStateGETRequest(pageType, itemType, itemNo, itemVal) {

	   // pageType == tyle de liste | itemType == 'voice' ou 'extract' || itemNo = son numéro dans la bdd

      http_request = getXMLHttpObj();
	  if (!http_request) {
         alert('Votre fureteur ne supporte pas Ajax. Vous ne pourrez vous servir de cette application.');
         return false;
	  }
	  url = urlItemState;
	  
      //http_request.onreadystatechange = stateChangedItemState;
      http_request.open('GET', url + '?page_type='+pageType+'&item_type='+itemType+'&item_no='+itemNo+'&item_val='+itemVal, true);
      http_request.send(null);
   }
   
   function stateChangedItemState() {
	   
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            //alert(http_request.responseText);
            pageType = http_request.responseText;
			alert(pageType);
			if ( pageType == 'codes' ) {
	            makeCodesNoValuesRequest();
			} else if ( pageType == 'criterias' ) {
			    makeCriteriasNoValuesRequest();
			}
         } else {
            alert('Une erreur systeme est survenue lors du choix d\'onglet.');
         }
      }
   }
   
   
   // Script PHP pour effacer la requête SQL en mémoire
   function makeForgetSessionSQLGETRequest() {

      http_request = getXMLHttpObj();
	  if (!http_request) {
         alert('Votre fureteur ne supporte pas Ajax. Vous ne pourrez vous servir de cette application.');
         return false;
	  }
	  url = urlForgetSessionSQL;
	  
      http_request.onreadystatechange = stateChangedForgetSessionSQL;
      http_request.open('GET', url, true);
      http_request.send(null);
   }
   
   function stateChangedForgetSessionSQL() {
	   
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            //alert(http_request.responseText);
            result = http_request.responseText;
			// do nothing special
         } else {
            alert('Une erreur systeme est survenue lors du choix d\'onglet.');
         }
      }
   }
   

   // Affichage des options et résultats de recherche par codes
   function makeCodesNoValuesRequest() { // Faire afficher la recherche par codes avec liste complète
	   
      http_request = getXMLHttpObj();
	  if (!http_request) {
         alert('Votre fureteur ne supporte pas Ajax. Vous ne pourrez vous servir de cette application.');
         return false;
	  }

	  url = urlCodesList;

	  http_request.onreadystatechange = stateChangedCodesList;
      http_request.open('GET', url, true);
      http_request.send(null);
   }
   
   function makeCodesTriGETRequest(t1, t2) { // Faire afficher la recherche par codes avec liste complète triée
	   
      http_request = getXMLHttpObj();
	  if (!http_request) {
         alert('Votre fureteur ne supporte pas Ajax. Vous ne pourrez vous servir de cette application.');
         return false;
	  }

	  url = urlCodesList;

	  http_request.onreadystatechange = stateChangedCodesList;
      http_request.open('GET', url+'?t1='+t1+'&t2='+t2, true);
      http_request.send(null);
   }
   
   function makeCodesPOSTRequest() { // Faire afficher la recherche par codes avec liste filtrée
	   
      http_request = getXMLHttpObj();
	  if (!http_request) {
         alert('Votre fureteur ne supporte pas Ajax. Vous ne pourrez vous servir de cette application.');
         return false;
	  }
	  url = urlCodesList;
	  
	  var parameters = "no_voice=" + encodeURI( document.getElementById("frmSearchCode").no_voice.value ) +
                    "&no_extract=" + encodeURI( document.getElementById("frmSearchCode").no_extract.value ) +
					"&search=" + encodeURI( document.getElementById("frmSearchCode").search.value );

      http_request.onreadystatechange = stateChangedCodesList;
      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 stateChangedCodesList() {
	   
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            //alert(http_request.responseText);
            result = http_request.responseText;
            document.getElementById('CastingsListBox').innerHTML = result;
			makeTabsGETRequest('codes');
         } else {
            alert('Une erreur système est survenue lors de la recherche.');
         }
      }
   }


   // Affichage des options et résultats de recherche par critères
   function makeCriteriasNoValuesRequest() { // Faire afficher la recherche par codes avec liste complète

      http_request = getXMLHttpObj();
	  if (!http_request) {
         alert('Votre fureteur ne supporte pas Ajax. Vous ne pourrez vous servir de cette application.');
         return false;
	  }
	  url = urlCriteriasList;

      http_request.onreadystatechange = stateChangedCriteriasList;
      http_request.open('GET', url, true);
      http_request.send(null);
   }
   
   function makeCriteriasTriGETRequest(t1, t2) { // Faire afficher la recherche par codes avec liste complète triée
	   
      http_request = getXMLHttpObj();
	  if (!http_request) {
         alert('Votre fureteur ne supporte pas Ajax. Vous ne pourrez vous servir de cette application.');
         return false;
	  }

	  url = urlCriteriasList;

	  http_request.onreadystatechange = stateChangedCriteriasList;
      http_request.open('GET', url+'?t1='+t1+'&t2='+t2, true);
      http_request.send(null);
   }
   
   function makeCriteriasPOSTRequest() { // Faire afficher la recherche par codes avec liste filtrée

      http_request = getXMLHttpObj();
	  if (!http_request) {
         alert('Votre fureteur ne supporte pas Ajax. Vous ne pourrez vous servir de cette application.');
         return false;
	  }
	  url = urlCriteriasList;

	  var parameters = ewd_convertFormDataToPostContent2("frmSearchCriterias");

      http_request.onreadystatechange = stateChangedCriteriasList;
      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 stateChangedCriteriasList() {
	   
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            //alert(http_request.responseText);
            result = http_request.responseText;
            document.getElementById('CastingsListBox').innerHTML = result;
			makeTabsGETRequest('criterias');
         } else {
            alert('Une erreur système est survenue lors de la recherche.');
         }
      }
   }


	// Créer l'objet XMLHttpRequest
	function getXMLHttpObj() {
	   
		if (window.XMLHttpRequest) { // Mozilla, Safari,...
        	http_request = new XMLHttpRequest();
         	if (http_request.overrideMimeType) {
         		// set type accordingly to anticipated content type
            	//http_request.overrideMimeType('text/xml');
            	http_request.overrideMimeType('text/html');
         	}
		} else if (window.ActiveXObject) { // IE
			try {
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
         	} catch (e) {
            	try {
               		http_request = new ActiveXObject("Microsoft.XMLHTTP");
            	} catch (e) {}
         	}
      	}
		
		return http_request;
	}


// Monté liste de paramètres POST à partir des checkboxes
function ewd_convertFormDataToPostContent(form_y){
	
	var f=document.getElementById(form_y);
	var content_to_submit = '';
	var form_element;
	var last_element_name = '';
	
	for (i = 0; i < f.elements.length; i++){
		form_element = f.elements[i];
		switch (form_element.type){
			// text fields, hidden form elements
			case 'text':
			case 'hidden':
			case 'password':
			case 'textarea':
			case 'select-one':
				content_to_submit += form_element.name + '=' + escape(form_element.value) + '&';
				break;
			// radio buttons
			case 'radio':
				if (form_element.checked){
					content_to_submit += form_element.name + '=' + escape(form_element.value) + '&';
				}
				break;
			// checkboxes
			case 'checkbox':
				if (form_element.checked){
					// Continuing multiple, same-name checkboxes
					if (form_element.name == last_element_name){
						// Strip of end ampersand if there is one
						if (content_to_submit.lastIndexOf('&') == content_to_submit.length - 1){
							content_to_submit = content_to_submit.substr(0, content_to_submit.length - 1);
						}
						// Append value as comma-delimited string
						content_to_submit += ',' + escape(form_element.value);
					}else{
						content_to_submit += form_element.name + '=' + escape(form_element.value);
					}
					content_to_submit += '&';
					last_element_name = form_element.name;
					}
				break;
		}//end switch
	} //end for

	// remove trailing separator
	content_to_submit = content_to_submit.substr(0, content_to_submit.length - 1);
	
	return content_to_submit;
}

/*
Modifié de l'original pour générer les valeurs des checkboxes name[] sous format:
age[]=1&age[]=2&age[]=3
plutôt que:
age[]=1,2,3
*/
function ewd_convertFormDataToPostContent2(form_y){
	
	var f=document.getElementById(form_y);
	var content_to_submit = '';
	var form_element;
	var last_element_name = '';
	
	for (i = 0; i < f.elements.length; i++){
		form_element = f.elements[i];
		switch (form_element.type){
			// text fields, hidden form elements
			case 'text':
			case 'hidden':
			case 'password':
			case 'textarea':
			case 'select-one':
				content_to_submit += form_element.name + '=' + escape(form_element.value) + '&';
				break;
			// radio buttons
			case 'radio':
				if (form_element.checked){
					content_to_submit += form_element.name + '=' + escape(form_element.value) + '&';
				}
				break;
			// checkboxes
			case 'checkbox':
				if (form_element.checked){
					content_to_submit += form_element.name + '=' + escape(form_element.value);
					content_to_submit += '&';
					last_element_name = form_element.name;
					}
				break;
		}//end switch
	} //end for

	// remove trailing separator
	content_to_submit = content_to_submit.substr(0, content_to_submit.length - 1);
	
	return content_to_submit;
}

function submitViaEnter(evt) {
    evt = (evt) ? evt : event;
    var target = (evt.target) ? evt.target : evt.srcElement;
    var form = target.form;
    var charCode = (evt.charCode) ? evt.charCode :
        ((evt.which) ? evt.which : evt.keyCode);
    if (charCode == 13) {
	    makeCodesPOSTRequest();
    }
}