// pays pour lesquels le champ cp doit être affiché au chargement de la page
function setCountries() {
var pays = document.getElementById('pays');
if (pays.value == "FR" || pays.value == "US" || pays.value == "AD" || pays.value == "AR" || pays.value == "AS" || pays.value == "AT" || pays.value == "AU" || pays.value == "BD" || pays.value == "BE" || pays.value == "BG" || pays.value == "CA" || pays.value == "CH" || pays.value == "CZ" || pays.value == "DE" || pays.value == "DK" || pays.value == "ES" || pays.value == "FI" || pays.value == "FO" || pays.value == "GB" || pays.value == "GG" || pays.value == "GL" || pays.value == "GP" || pays.value == "GU" || pays.value == "GY" || pays.value == "HR" || pays.value == "HU" || pays.value == "IM" || pays.value == "IN" || pays.value == "IS" || pays.value == "IT" || pays.value == "JE" || pays.value == "LI" || pays.value == "LK" || pays.value == "LU" || pays.value == "MC" || pays.value == "MH" || pays.value == "MK" || pays.value == "MP" || pays.value == "MQ" || pays.value == "MX" || pays.value == "NL" || pays.value == "NO" || pays.value == "NZ" || pays.value == "PK" || pays.value == "PL" || pays.value == "PM" || pays.value == "PR" || pays.value == "PT" || pays.value == "RE" || pays.value == "SE" || pays.value == "SI" || pays.value == "SK" || pays.value == "SM" || pays.value == "TH" || pays.value == "TR" || pays.value == "VI" || pays.value == "YT" || pays.value == "ZA")
	{
	document.getElementById('p_cp').style.display = 'block';
	}
else
	{
	document.getElementById('p_cp').style.display = 'none';
	}
}

// codes iso des pays qui sont gérés en base de données
var geonamesPostalCodeCountries = ["LU","NZ","ZA","GB","TH","HR","CA","NO","HU","FR","BG","FO","MK","BE","DE","MC","MD","DK","FI","AT","CZ","MX","US","SE","IN","AU","SI","SK","IS","IT","SM","PL","PT","AD","CH","ES","NL","PK","LI","LK","GL","GR","JE","IM","GG","BD","AR"];

// code iso du pays de l'internaute suivant son adresse IP - prévoir un script récupérant le pays selon l'IP
var geonamesUserIpCountryCode = 'FR';

// JavaScript Document
function CPTOCI(){
	this.majorVersion = "0";
	this.minorVersion = "1";
	this.releaseDate = "2008-03-01";
};//

// Fonction permettant de récupérer la valeur du champ pays (en vue de la requête mysql dans getCities.php)
function getValue(idChamp) {
	var valeur = document.getElementById(idChamp).value;
	return encodeURIComponent(valeur);
}

// Fonction permettant de récupérer villes, départements, codes départements, régions, continents
CPTOCI.prototype.sc = function(){

	var co = cptoci.ge("cp"), ci = cptoci.ge("ville"), dpt = cptoci.ge("dpt"), dpt_code = cptoci.ge("dpt_code"), reg = cptoci.ge("region"), cn = cptoci.ge("continent");
	
	rov = function(){
		for(var o=ci.options.length-1;o>-1;o--){
			ci.options[o] = null;
		}
		for(var o=dpt.value.length-1;o>-1;o--){
			dpt.value = null;
		}
		for(var o=dpt_code.value.length-1;o>-1;o--){
			dpt_code.value = null;
		}
		for(var o=reg.value.length-1;o>-1;o--){
			reg.value = null;
		}
		for(var o=cn.value.length-1;o>-1;o--){
			cn.value = null;
		}
	};
	
	scr = function(){
		var r = 	scr.arguments[0].responseXML.documentElement;
		var t = 	r.getElementsByTagName("ville");
		var d = 	r.getElementsByTagName("dpt");
		var dc = 	r.getElementsByTagName("dpt_code");
		var g = 	r.getElementsByTagName("region");
		var n = 	r.getElementsByTagName("continent");
		
		rov();
		
		// Aucune ville trouvée
		if(t.length == 0){
			//document.getElementById('p_ville').style.display = 'none';
			//document.getElementById('p_ville_nr').style.display = 'block';
			//document.getElementById('ville').value='Aucune ville trouvée';
			ci.options[0] = new Option("Aucune ville trouvée");
		}
		
		// ville
		for(var i = 0; i < t.length; i++){
			var nv = new Option(t[i].firstChild.nodeValue,t[i].firstChild.nodeValue);
			ci.options[i] = nv;
		}
		
		// dpt
		for(var i = 0; i < d.length; i++){
			var nv = d[i].firstChild.nodeValue;
      		dpt.value = nv;
	  }
		
		// code dpt
		for(var i = 0; i < dc.length; i++){
			var nv = dc[i].firstChild.nodeValue;
      		dpt_code.value = nv;
	  }
		
		// region
		for(var i = 0; i < g.length; i++){
 			var nv = g[i].firstChild.nodeValue;
      		reg.value = nv;
	  }
				
		// continent
		for(var i = 0; i < n.length; i++){
 			var nv = n[i].firstChild.nodeValue;
      		cn.value = nv;
	  }
				
	};
	
	rov();
	// affichage du résultat de la requête
	ci.options[0] = new Option("Loading...");
	cptoci.sg('/geo/getCities.php?p=' + getValue("pays") +'&c='+escape(co.value),scr);
	};

CPTOCI.prototype.start = function(){
};//1.0 - 2

var cptoci = new CPTOCI();

// JavaScript Document
CPTOCI.prototype.gt = function(e,d){
	if(!d) d = document;
	return d.getElementsByTagName(e);
};//1.0 - 1

CPTOCI.prototype.ge = function(e){
	return document.getElementById(e);
};//1.0 - 2
//custom element operations end/////////////////

//xmlhttprequest object starts//////////////////
CPTOCI.prototype.s = function(url, method, callback, data, urlencoded){
	var req;
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	}else if (window.ActiveXObject){
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}

	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			if (req.status < 400) {
				(method=="POST") ? callback(req) : callback(req,data);
			} else {
				alert("Impossible d'accéder à la requête suivante :\n" + req.status+ "/" + req.statusText+"\n"+url);
				
				cptoci.ge("ville").options[0] = new Option("Erreur");
			}
		}
	};

	if (method=="POST") {
		req.open("POST", url, true);
		if (urlencoded) {
			req.setRequestHeader('Content-Type','application/x-www-form-urlencoded;utf-8');
		}
		req.send(data);
	} else {
		req.open("GET", url, true);
		req.send(null);
	};
	
	return req;
};//1.0 - 3

CPTOCI.prototype.sp = function(url, data, callback){
	cptoci.s(url, "POST", callback, data, true);
};//1.0 - 4

CPTOCI.prototype.sg = function(url, callback, args){
	cptoci.s(url, "GET", callback, args);
};//1.0 - 5
//xmlhttprequest object end/////////////////////

// set the pays of the user's ip (included in geonamesData.js) as selected pays 
// in the pays select box of the address form
function setDefaultCountry() {
  var pays = document.getElementById('pays');
  for (i=0; i < pays.length; i++) {
    // the javascript geonamesData.js contains the payscode
    // of the userIp in the variable 'geonamesUserIpCountryCode'
    if (pays[i].value == geonamesUserIpCountryCode) {
      // set the pays selectionfield
      pays.selectedIndex = i;
	  // afficher le champ cp
	  document.getElementById('p_cp').style.display = 'block';
    }
  }
}

// Affiche le champ cp  en fonction d'un code pays
function affiche() {
// Visible pour les pays qui ont un code postal dans la base
// FR, US, AD, AS, AT, AU, BE, BG, CA, CH, CZ, DE, DK, ES, FI, 
// FO, GB, GL, GP, GU, GY, HR, HU, IN, IS, IT, LI, LK, LU, MC, 
// MH, MK, MP, MQ, MX, NL, NO, NZ, PK, PL, PM, PR, PT, RE, SE, 
// SI, SK, SM, TH, TR, VA, VI, YT, ZA, JE, IM, GG, BD, AR
var pays = document.getElementById('pays');
if (pays.value == "FR" || pays.value == "US" || pays.value == "AD" || pays.value == "AR" || pays.value == "AS" || pays.value == "AT" || pays.value == "AU" || pays.value == "BD" || pays.value == "BE" || pays.value == "BG" || pays.value == "CA" || pays.value == "CH" || pays.value == "CZ" || pays.value == "DE" || pays.value == "DK" || pays.value == "ES" || pays.value == "FI" || pays.value == "FO" || pays.value == "GB" || pays.value == "GG" || pays.value == "GL" || pays.value == "GP" || pays.value == "GU" || pays.value == "GY" || pays.value == "HR" || pays.value == "HU" || pays.value == "IM" || pays.value == "IN" || pays.value == "IS" || pays.value == "IT" || pays.value == "JE" || pays.value == "LI" || pays.value == "LK" || pays.value == "LU" || pays.value == "MC" || pays.value == "MH" || pays.value == "MK" || pays.value == "MP" || pays.value == "MQ" || pays.value == "MX" || pays.value == "NL" || pays.value == "NO" || pays.value == "NZ" || pays.value == "PK" || pays.value == "PL" || pays.value == "PM" || pays.value == "PR" || pays.value == "PT" || pays.value == "RE" || pays.value == "SE" || pays.value == "SI" || pays.value == "SK" || pays.value == "SM" || pays.value == "TH" || pays.value == "TR" || pays.value == "VI" || pays.value == "YT" || pays.value == "ZA")
	{
	document.getElementById('p_cp').style.display = 'block';
	//document.getElementById('p_ville').style.display = 'none';
	//document.getElementById('p_ville_nr').style.display = 'block';
	// on vide le champ cp
	document.getElementById('cp').value = ''; // on vide le champ
	}
else
	{
	document.getElementById('p_cp').style.display = 'none';
	// on vide le champ cp
	document.getElementById('cp').value = ''; // on vide le champ
	return cptoci.sc();
	}
while (document.getElementById('ville').options.length > 0)
	{
	document.getElementById('ville').options[0] = null;
	}
document.getElementById('ville').options[0] = new Option("Non renseignée");
}


/*******************DPT*******************/

// JavaScript Document
function COUNTRYTOCP(){
	this.majorVersion = "0";
	this.minorVersion = "1";
	this.releaseDate = "2008-06-11";
};//

// Fonction permettant de récupérer les listes de départements en fonction du pays sélectionné
COUNTRYTOCP.prototype.sc = function(){

	var dpt = cptoci.ge("dpt");
	
	rov = function(){
		for(var o=dpt.options.length-1;o>-1;o--){
			dpt.options[o] = null;
		}
	};
	
	scr = function(){
		var r = 	scr.arguments[0].responseXML.documentElement;
		var dep = 	r.getElementsByTagName("dpt");
		
		rov();
		
		// Aucun dpt trouvé
		if(dep.length == 0){
			//document.getElementById('p_dpt').style.display = 'none';
			dpt.options[0] = new Option("Aucun département");
		}
		
		// dpt
		for(var i = 0; i < dep.length; i++){
			var nv = new Option(dep[i].firstChild.nodeValue,dep[i].firstChild.nodeValue);
			document.getElementById('p_dpt').style.display = 'block';
			dpt.options[i] = nv;
		}
		
	};
	
	rov();
	// affichage du résultat de la requête
	dpt.options[0] = new Option("Loading...");
	//cptoci.sg('/geo/getCities.php?p=' + getValue("pays") +'&c='+escape(co.value),scr);
	//countrytocp.sg('/geo/getDpt.php?p=' + getValue("pays") +'&c='+escape(co.value),scr);
	countrytocp.sg('/geo/getDpt.php?p=' + getValue("pays") +'&c='+escape(dpt.value),scr);
	};
	
COUNTRYTOCP.prototype.start = function(){
};//1.0 - 2

var countrytocp = new COUNTRYTOCP();

// JavaScript Document
COUNTRYTOCP.prototype.gt = function(e,d){
	if(!d) d = document;
	return d.getElementsByTagName(e);
};//1.0 - 1

COUNTRYTOCP.prototype.ge = function(e){
	return document.getElementById(e);
};//1.0 - 2
//custom element operations end/////////////////

//xmlhttprequest object starts//////////////////
COUNTRYTOCP.prototype.s = function(url, method, callback, data, urlencoded){
	var req;
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	}else if (window.ActiveXObject){
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}

	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			if (req.status < 400) {
				(method=="POST") ? callback(req) : callback(req,data);
			} else {
				alert("Impossible d'accéder à la requête suivante :\n" + req.status+ "/" + req.statusText+"\n"+url);
				
				countrytocp.ge("dpt").options[0] = new Option("Erreur");
			}
		}
	};

	if (method=="POST") {
		req.open("POST", url, true);
		if (urlencoded) {
			req.setRequestHeader('Content-Type','application/x-www-form-urlencoded;utf-8');
		}
		req.send(data);
	} else {
		req.open("GET", url, true);
		req.send(null);
	};
	
	return req;
};//1.0 - 3

COUNTRYTOCP.prototype.sp = function(url, data, callback){
	countrytocp.s(url, "POST", callback, data, true);
};//1.0 - 4

COUNTRYTOCP.prototype.sg = function(url, callback, args){
	countrytocp.s(url, "GET", callback, args);
};//1.0 - 5
//xmlhttprequest object end/////////////////////

/*************************************************/

function change_pays() 
	{
	// on vide les champs
	document.getElementById('continent').value = ''; 
	//document.getElementById('pays').value = ''; 
	document.getElementById('region').value = ''; 
	document.getElementById('dpt').value = ''; 
	document.getElementById('dpt_code').value = ''; 
	document.getElementById('cp').value = ''; 
	//document.getElementById('ville').value = ''; 

	document.getElementById('p_pays').style.display = 'none';
	document.getElementById('pays').style.display = 'block';
	document.getElementById('p_cp').style.display = 'block';
	while (document.getElementById('ville').options.length > 0)
		{
		document.getElementById('ville').options[0] = null;
		}
	document.getElementById('ville').options[0] = new Option("Non renseignée");
	}
	
	
function form_post()
	{
	//if (document.getElementById('pays').value == "FR" && document.getElementById('cp').value != "")
		//{
		//document.getElementById('p_cp').style.display = 'block';
		//}
	if (document.getElementById('pays').value != "FR")
		{
		document.getElementById('p_pays').style.display = 'none';
		document.getElementById('pays').style.display = 'block';
		}
	var pays = document.getElementById('pays');
	if (pays.value == "FR" || pays.value == "US" || pays.value == "AD" || pays.value == "AR" || pays.value == "AS" || pays.value == "AT" || pays.value == "AU" || pays.value == "BD" || pays.value == "BE" || pays.value == "BG" || pays.value == "CA" || pays.value == "CH" || pays.value == "CZ" || pays.value == "DE" || pays.value == "DK" || pays.value == "ES" || pays.value == "FI" || pays.value == "FO" || pays.value == "GB" || pays.value == "GG" || pays.value == "GL" || pays.value == "GP" || pays.value == "GU" || pays.value == "GY" || pays.value == "HR" || pays.value == "HU" || pays.value == "IM" || pays.value == "IN" || pays.value == "IS" || pays.value == "IT" || pays.value == "JE" || pays.value == "LI" || pays.value == "LK" || pays.value == "LU" || pays.value == "MC" || pays.value == "MH" || pays.value == "MK" || pays.value == "MP" || pays.value == "MQ" || pays.value == "MX" || pays.value == "NL" || pays.value == "NO" || pays.value == "NZ" || pays.value == "PK" || pays.value == "PL" || pays.value == "PM" || pays.value == "PR" || pays.value == "PT" || pays.value == "RE" || pays.value == "SE" || pays.value == "SI" || pays.value == "SK" || pays.value == "SM" || pays.value == "TH" || pays.value == "TR" || pays.value == "VI" || pays.value == "YT" || pays.value == "ZA")
		{
		document.getElementById('p_cp').style.display = 'block';
		}
	else
		{
		document.getElementById('p_cp').style.display = 'none';
		}
	}
	
