var xhrAction;
var queryAction;
var paramAction;

var elm_reponse;

//=================================================================
// teste la compatibilité du navigateur avant d'exécuter la requête
function httpRequest(reqType,url,asynch){

	// instancie l'objet xhrAction pour les navigateurs basés sur un moteur Nestcape
	if (window.XMLHttpRequest){
		xhrAction = new XMLHttpRequest();
	}else{
		
		// instancie l'objet xhrAction pour les navigateurs basés sur le moteur Internet Explorer
		if (window.ActiveXObject){
			xhrAction = new ActiveXObject("Msxml2.XMLHTTP");
			if (!xhrAction){
				xhrAction = new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
	}
	
	// message d'alerte si le navigateur est incompatible
	if (xhrAction){
		initReq(reqType,url,asynch);
	}else{
		alert("Votre navigateur est incompatible avec certaines technologies utilisées dans ce site.");
	}

}

//===================
// exécute la requête
function initReq(reqType,url,asynch){

	switch(paramAction) {
		case 1 : 
			xhrAction.onreadystatechange =reponseCom;
			break;
		case 2 : 
			xhrAction.onreadystatechange =reponsePostal;
			break;
		case 3 : 
			xhrAction.onreadystatechange =reponseForm;
			break;	
		case 4 : 
			xhrAction.onreadystatechange =reponseSerial;
			break;	
		case 5 :
			xhrAction.onreadystatechange =reponseFournisseur;
			break;
		case 6 :
			xhrAction.onreadystatechange = setAction;
			break;		
		default : 
			alert('Cette valeur n\'est pas prise en charge par la fonction');
			break;
	}	
	xhrAction.open(reqType,url,asynch);
	xhrAction.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=iso-8859-1');
	xhrAction.send(queryAction);	

}

//==========================================
// envoie le code du département sélectionné
function getDeptSelect(selDep){
	
	paramAction = 1;
	queryAction = "dep=" + selDep;
	var url="php/getCom.php";	
	httpRequest("POST",url,true);
	
}

//==========================================
// réponse suite au département sélectionné
function reponseCom(){	
	
	if(xhrAction.readyState == 4 && xhrAction.status == 200){
		
		try {
			$('tab_com').innerHTML = "<select class=" + "'" + "saisie" + "'" + " name=" + "'" + "list_commune" + "'" + "  id=" + "'" + "code_commune" + "'" + " style=" + "'" + "width:281px;margin-bottom:5px" + "'" + " onclick=" + "'" + "getComSelect(this.value);" + "'" + "'" + ">" + xhrAction.responseText + "</select> <img src=" + "'" + "img/ajaxload.gif" + "'" + " width=" + "'" + "151" + "'" + " height=" + "'" + "33" + "'" + " id=" + "'" + "load_com" + "'" + "  style=" + "'" + "width:16px;height:16px;visibility:hidden;margin-left:20px;" + "'" + " align=" + "'" + "top" + "'" + ">";	
			$('code_postal').value="";
			$('code_insee').value="";
			$('load_dep').style.visibility="hidden";
			$('td_com').style.visibility="visible";			
		} catch (error) {
			alert('Impossible de lister les communes');
		}
		
		return;
	
	}

	// Chargement des communes
	if(xhrAction.readyState == 1){
		$('load_dep').style.visibility="visible";
		$('td_com').style.visibility="hidden";	
	}
	
}

//==========================================
// envoie le code de la commune sélectionnée
function getComSelect(selCom){
	paramAction = 2;	
	queryAction = "com=" + selCom;
	var url="php/getPostal.php";	
	httpRequest("POST",url,true);
	$('code_insee').value = selCom;
	
}

//==========================================
// retourne le code postal de la commune
function reponsePostal(){	

	if(xhrAction.readyState == 4 && xhrAction.status == 200){

		try {
			
			$('load_com').style.visibility="hidden";
			$('td_postal').style.visibility="visible";
			$('td_insee').style.visibility="visible";	
			$('td_postal').innerHTML = "<font style='font-size:85%; color:#666666;'>Code postal *&nbsp;</font><br/><input class='saisie' type='text' name='postal' id='code_postal' value='" + xhrAction.responseText + "' size='10' style='margin-bottom:3px;' maxlength='5' ></input>"; 
			$('code_insee').value=$('code_commune').value;
			
		} catch (error) {
			
			alert('Impossible de charger le code postal et le code Insee de la commune sélectionnée');
			
		}
		
		return;
	
	}

	// Chargement des communes
	if(xhrAction.readyState == 1){
		$('load_com').style.visibility="visible";
		$('td_postal').style.visibility="hidden";
		$('td_insee').style.visibility="hidden";
	}
	
}


//==========================================
// envoie du formulaire
function getForm(
								 fUserCode,
								 fUserMail,
								 fGenre, 
								 fGenreIndex, 
								 fNom, 
								 fPrenom,
								 fRaisonSociale,
								 fService,
								 fAdresse,
								 fPostal,
								 fDepartementIndex,							 
								 fDepartement,
								 fCommuneIndex,							 
								 fCommune,
								 fInsee,	 
								 fTelephone,
								 fPortable,
								 fFax,
								 fMail,
								 fLicence,
								 fLicenceSite,
								 fLicenceGratuite){

	paramAction = 3;	
	queryAction = 
				"code_user=" + fUserCode +
				"&mail_user=" + fUserMail +
				"&genre=" + fGenre + 
				"&genre_index=" + fGenreIndex + 
				"&nom=" + fNom + 
				"&prenom=" + fPrenom + 
				"&raison_sociale=" + fRaisonSociale + 
				"&service=" + fService + 
				"&adresse=" + fAdresse +
				"&postal=" + fPostal + 
				"&departement_index=" + fDepartementIndex + 
				"&departement=" + fDepartement + 
				"&commune_index=" + fCommuneIndex + 
				"&commune=" + fCommune + 
				"&insee=" + fInsee + 
				"&telephone=" + fTelephone + 
				"&portable=" + fPortable + 
				"&fax=" + fFax + 
				"&mail=" + fMail + 
				"&licence=" + fLicence + 
				"&licence_site=" + fLicenceSite + 
				"&licence_gratuite=" + fLicenceGratuite;
	
	var url="php/getForm.php";	
	httpRequest("POST",url,true);
	
}

//===============================================
// réponse ajax après demande d'insertion en base
//===============================================
function reponseForm(){	

	if(xhrAction.readyState == 4 && xhrAction.status == 200){ 
  $('test').innerHTML = xhrAction.responseText;	
		setTimeout("Redirect('action.php')",2000);
	}
	
}

//===============================================
// redirige vers une url en javascript
//===============================================
function Redirect(sURL){
	window.location.replace(sURL,true);
}

//========================================================
// envoie le numéro de série saisie au module de contrôle
//========================================================
function getSerial(fSerial,fVersion){
	
	paramAction = 4;
	queryAction = 
							"serial=" + fSerial +
							"&version=" + fVersion;

	var url="php/getSerial.php";	
	httpRequest("POST",url,true);
	
}
//===============================================
// réponse ajax au contrôle du numéro de série
//===============================================
function reponseSerial(){	
	if(xhrAction.readyState == 4 && xhrAction.status == 200){ 
  	$('messageId').innerHTML = xhrAction.responseText;	
	}
}

//========================================================
// envoie le numéro de série saisie au module de contrôle
//========================================================
function getFournisseur(fSerial){
	
	paramAction = 5;
	queryAction = 
							"serial=" + fSerial;

	var url="php/getFournisseur.php";	
	httpRequest("POST",url,true);
	
}

//===============================================
// réponse ajax au numéro de fournisseur
//===============================================
function reponseFournisseur(){	
	if(xhrAction.readyState == 4 && xhrAction.status == 200){ 

		if (xhrAction.responseText ==  0){
			setTimeout("Redirect('action.php')",200);
		}
		
		if (xhrAction.responseText ==  1){
			setTimeout("Redirect('http://www.kogeo.com')",200);
		}
		
		if (xhrAction.responseText ==  2){
			setTimeout("Redirect('http://www.edrisi.fr')",200);
		}
		
  	$('messageId').innerHTML = xhrAction.responseText;	
	}
}

// ========================================================================================================================================================================================
// construit la requête destinée au serveur
// contrôle les variables transmises et affiche la page action.php
// ========================================================================================================================================================================================
function getAction(user_login,user_password,reponse_element){
	
	paramAction = 6;	

	elm_reponse = reponse_element;	
	queryAction = "user_login=" + user_login + "&user_password=" + user_password;

	var url="php/getAction.php";	
	httpRequest("POST",url,true);	
	
}

// *****************************
// analyse la réponse du serveur
// *****************************
function setAction(){	

	if(xhrAction.readyState == 4 && xhrAction.status == 200){	

		try {				
			elm_reponse.innerHTML = xhrAction.responseText;	
			if (xhrAction.responseText == 'Authentification correcte.'){setTimeout("Redirect('action.php')",500);}
		} catch (error) {
			alert("La r&eacute;ponse du serveur est incorrecte.\nVous ne pouvez vous connecter au serveur Map'Utils.\nInformez-en la soci&eacute;t&eacute; Edrisi G&eacute;omatique &agrave; l'adresse : \n support@edrisi.fr");
		}
		
	}
		
}

		