function IsValidCP(val)
  {
		// Test si la valeur est numérique
		var msgCP
		var bResult = true;
		if (val == ""){	bResult = false }
		else
		{
			if ( !(tester_silent(val)) )
			{
				bResult = false
			}
		
			// Test si la valeur est un code postal
			if ( val.length != 5 ) 
			{
				// alert('Code postal incorrect : un code postal est composé de 5 chiffres')
				bResult = false
			}

			// msgCP = "Etes-vous certain d\'avoir saisi un code postal du territoire français ?"
				
			// Test si le CP est compris entre 2 valeurs
			if ( (val < 1000) || (val > 99000) || ((val >= 96000) && (val <= 96999)))
			{
				// alert(msgCP)
				bResult = false
			}
		}
		
		 
		
		return bResult ;
		
  }// Fin de IsValidCP



// Test si la valeur est numérique 
function tester_silent(chaine) { 
	var chain = new String(chaine);
	erreur=0;
	for (var i = 0; i < chain.length ; i++) 
	{ 
		var chainez = chain.substring (i, i + 1); 
		if (chainez < "0" || "9" < chainez) 
			{
			erreur=2 ; 
			break;
			} 
	} 
	if (erreur == 2 ) 
	{ 
		// alert ("Veuillez saisir une valeur nnumerique" ) ;    
		erreur=0;
		return false;
	}
	else {return true;}
}




function testCP(val)
  {
		// Test si la valeur est numérique
		var msgCP
		if (val == ""){	return false }
		else
		{
			if ( !(tester(val)) )
			{
				return false
			}
		
			// Test si la valeur est un code postal
			if ( val.length != 5 ) 
			{
				alert('Code postal incorrect : un code postal est composé de 5 chiffres')
				return false
			}

			msgCP = "Etes-vous certain d\'avoir saisi un code postal du territoire français ?"
				
			// Test si le CP est compris entre 2 valeurs
			if ( (val < 1000) || (val > 99000) || ((val >= 96000) && (val <= 96999)))
			{
				alert(msgCP)
				return false
			}
			
			// Test si le CP correspond à la Corse
			
			/*
			if ( (20000 <= val) && (val < 21000) )
			{
				alert(msgCP)
				return false
			}
			*/
		}
		return true
  }// Fin de TestCP
  
// Test si la valeur est numérique 
function tester(chaine) { 
	var chain = new String(chaine);
	erreur=0;
	for (var i = 0; i < chain.length ; i++) 
	{ 
		var chainez = chain.substring (i, i + 1); 
		if (chainez < "0" || "9" < chainez) 
			{
			erreur=2 ; 
			break;
			} 
	} 
	if (erreur == 2 ) 
	{ 
		alert ("Veuillez saisir une valeur nnumerique" ) ;    
		erreur=0;
		return false;
	}
	else {return true;}
}
	function GetCity(str_formName, strZipCodeCtrlName, strSelectName, sUrl) {
	
	    var http_request = false;
	    var ctrl;
	    var i;
		ctrl = document.forms[str_formName].elements[strZipCodeCtrlName];
		//var default_ctrl;
		//default_ctrl = document.forms[str_formName].elements[strInseeDefaultValueCtrlName];
		if (testCP(ctrl.value) ) 
		{
	    	http_request = false;	
			
			if(document.all)
			{
				//Internet Explorer
				http_request = new ActiveXObject("Microsoft.XMLHTTP") ;
			}
			else
			{
				//Mozilla
				//netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
    			http_request = new XMLHttpRequest();
			}
			
			if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
			}
			if (!http_request) {
			alert('Cannot create XMLHTTP instance');
			return false;
			}
			http_request.onreadystatechange = function()
			{
				if (http_request.readyState == 1)
					{}
				if (http_request.readyState == 2)					
					{}
				if (http_request.readyState == 3)
					{}
				if (http_request.readyState == 4) {
					if (http_request.status == 200) {
					var string = http_request.responseText;
					if(document.all)
						var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")
					else
						{
							var xmlDoc = document.implementation.createDocument("", "", null);	
						}
						
					var nodes;
		  			var Array_result = new Array();
					var Array_Values_result = new Array();
					xmlDoc.loadXML(string);
					if (xmlDoc.selectSingleNode("//zipcode_query")){
						nodes = xmlDoc.selectNodes("//result");
						var i_pos=0;
						if (nodes.length > 1){
							Array_result[0]= "-- Selectionnez --";
							Array_Values_result[0]= '';
							i_pos++;
						}
						if (nodes.length == 0){
							Array_result[0]= "sans objet";
							Array_Values_result[0]= '';
							i_pos++;
						}
						
						for(i=0;i<nodes.length;i++){
							if (document.all){
								Array_result[i_pos]= xmlDoc.selectSingleNode('//zipcode_query/result[' + i.toString() + ']/city').text;
								Array_Values_result[i_pos]= xmlDoc.selectSingleNode('//zipcode_query/result[' + i.toString() + ']/insee').text;
								i_pos++;
							}
							else {
								var xItems = xmlDoc.selectNodes('//zipcode_query/result/city/text()');
								var y;
								for( y = 0; y < xItems.length; y++ )  {     
									Array_result[i_pos + y]= xItems[y].nodeValue;
								}  
								xItems = xmlDoc.selectNodes('//zipcode_query/result/insee/text()');
								var y;
								for( y = 0; y < xItems.length; y++ )  {     
									Array_Values_result[i_pos + y]= xItems[y].nodeValue;
								}  
							}
						}
						
						
						var defaultValue;
						defaultValue = Array_Values_result[0];
						LoadList(Array_result,Array_Values_result,strSelectName,defaultValue,str_formName);
						//LoadList(Array_result,Array_Values_result,strSelectName,defaultValue,str_formName,default_ctrl.value);
						/*
						if (testNewList(str_formName,Array_result,Array_Values_result,strSelectName)){
							var defaultValue;
							if (default_ctrl.value == '')
								defaultValue = Array_Values_result[0];
							else
								defaultValue = default_ctrl.value;
			  				
			  			}
			  			*/
					}
					

					} 
					else {
						//ctrl.innerHTML = 'There was a problem with the request.';
					}
				}
			}		
			http_request.open('GET', sUrl + '?ZC=' + ctrl.value, true);
			http_request.send(null);
		}
	}
	
	function LoadList(ArrayText,ArrayValues,ctrlSelect,strdefaultvalue,formName){
   		var i=0;
   		var i_selected=0;
   		document.forms[formName].elements[ctrlSelect].length=ArrayText.length - 1;
		for (i=0; i<ArrayText.length; i++) {
			if ((strdefaultvalue!='') && (strdefaultvalue == ArrayValues[i].toString()))
				i_selected = i;
			document.forms[formName].elements[ctrlSelect].options[i]= new Option(ArrayText[i],ArrayValues[i]);
		}
		document.forms[formName].elements[ctrlSelect].options[i_selected].selected=true;
	}
	
	function testNewList(str_formName,strArray,strArray_values,strSelectName){
		var SelectCtrl = document.forms[str_formName].elements[strSelectName];
		var i;
		var b_return = false;
		for (i=0;i<SelectCtrl.length;i++){
			if ((SelectCtrl.options[i].text != strArray[i]) || (SelectCtrl.options[i].value != strArray_values[i])) {
				b_return = true;
				break;
			}
		}
		return b_return;
	}
	
	if( document.implementation.hasFeature("XPath", "3.0") )
	{
		XMLDocument.prototype.selectNodes = function(cXPathString, xNode)
		{
			if( !xNode ) { xNode = this; } 

			var oNSResolver = this.createNSResolver(this.documentElement)
			var aItems = this.evaluate(cXPathString, xNode, oNSResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)
			var aResult = [];
			for( var i = 0; i < aItems.snapshotLength; i++)
			{
				aResult[i] =  aItems.snapshotItem(i);
			}
			
			return aResult;
		}
		XMLDocument.prototype.selectSingleNode = function(cXPathString, xNode)
		{
		
			if( !xNode ) { xNode = this; } 

			var xItems = this.selectNodes(cXPathString, xNode);
			if( xItems.length > 0 )
			{
				return xItems[0];
			}
			else
			{
				return null;
			}
		}

		Element.prototype.selectNodes = function(cXPathString)
		{
			if(this.ownerDocument.selectNodes)
			{
				return this.ownerDocument.selectNodes(cXPathString, this);
			}
			else{throw "For XML Elements Only";}
		}

		Element.prototype.selectSingleNode = function(cXPathString)
		{	
			if(this.ownerDocument.selectSingleNode)
			{
				return this.ownerDocument.selectSingleNode(cXPathString, this);
			}
			else{throw "For XML Elements Only";}
		}
		Document.prototype.loadXML = function(s) {
			var doc2 = (new DOMParser()).parseFromString(s,"text/xml");
			while (this.hasChildNodes()) {
				this.removeChild(this.lastChild);
			}
			for (var i = 0; i != doc2.childNodes.length; i++) {
				this.appendChild(this.importNode(doc2.childNodes[i],true));
			}
		}//function loadXML
	}
