var prefix;
var tabPrefix;

/**
@Hauteur: HSA Netik Maroc
*/
// Charge List Zip Code (champ zip, state, addresse1,Element)
function initZipCode(zipCode,state,address,posElm,e) {
	// on compte pas le shift
	if(e.keyCode == 16) 
		return false;
	
	var zip = document.getElementById(zipCode).value; //Récuperation de zip entrer dans le champ
	var lastCaract = zip.substring(zip.length-1,zip.length); // Récuperation de la dernier caractere
	var keyNum = e.keyCode;
	
	
	if(isNaN(lastCaract) || keyNum == 32) {// Tester si ce caracter est numerique ou non un espace sinon on l'efface.
		zip = zip.substring(0,zip.length-1);
		document.getElementById(zipCode).value = zip;
	}
	
	var recupText;
	var tabResult;
	var tabForElem;
	var afficheCode;
	var addList = new Array();
		

	// on plus que 2 chiffres dans le zip code
	if(zip.length>2){
		if(document.getElementById("storeId"))
			var strId=parseInt(document.getElementById("storeId").value);
		else
			var strId=10351;
			
		var isPrefix = false;
		if(!!prefix){
	    	isPrefix = (zip.indexOf(prefix) == 0);        	
    	}
    	
    	if(isPrefix && !!tabPrefix) {
        
        	// filtre sur le précédent tableau
	        var temp = new Array();
	        var j = 0;
        
	        for(i = 0; i < tabPrefix.length ; ++i) {
	        	if(tabPrefix[i].indexOf(zip) == 0) {
	        		temp[j] = tabPrefix[i];
	        		++j;
	        	}
	        }
	        tabResult = temp; 
        
    	} else {
    		saveRequest('ListZipCodeView?zipCode='+zip+'&storeId='+strId);// on envoie la requette avec le zipcode saisi
			recupText = document.getElementById('getResult').innerHTML; // récuperation de resultat
			if(recupText == '') {
				tabPrefix = new Array();
			} else {
				tabPrefix = recupText.split(';');
			}
        	prefix = zip;
        	tabResult = tabPrefix;
    	}			
				
		document.getElementById(zipCode).style.border = "1px #ADB0B0 solid" ;
		for(i = 0; i < tabResult.length; ++i) {
			tabForElem = tabResult[i].split('-');
			var champs = "'"+zipCode+"','"+state+"','"+address+"'";
			var param = tabForElem[0] +","+ tabForElem[3] +","+"'"+tabForElem[2]+"'"; // zipcode,state,adresse1
			afficheCode = "<a href=\"javascript: void(0)\" onclick=\"fillFields("+champs+","+param+")\">["+tabForElem[0]+"] "+ tabForElem[1] +" "+ tabForElem[2]+"</a>";
			addList[i] = afficheCode; // on ajoute les resultat dans le tableau addList
		}
		addListToElement(addList,posElm);
	}else{// moins de 2chiffres
		document.getElementById('list_zip').style.display = 'none'; // on cache la liste
	}
}

// Recupere contenu zip code avec Ajax
function saveRequest(hurle) {
	var xhr_object = null;
	if(window.XMLHttpRequest) // Firefox
	   xhr_object = new XMLHttpRequest();
	else if(window.ActiveXObject) // Internet Explorer
	   xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	else { // XMLHttpRequest non supporté par le navigateur
	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
	   return;
	}
	xhr_object.open("GET", hurle, false);
	xhr_object.send(null);
	if(xhr_object.readyState == 4) {
		document.getElementById('list_zip').innerHTML = xhr_object.responseText; // le résultat de la requette on la mis dans la div 'list_zip'
	}	
}

// Creation de la liste dans la page
function addListToElement(tableau,posElem){
	var addResult='';
	var topSize = '';
	// La hauteur de la liste zip code
	var nbElement = tableau.length * 18; // longeur de la liste = longeur de tableau * la hauteur de chaque line de tableau
	
	if(posElem == 'twocolumns')
		topSize = $('#twocolumns').offset().top+36; // position de la 1ere liste
	else
		topSize = $('#twocolumns1').offset().top+36; // position de la 2eme liste
	
	if(tableau.length > 0){ // si on a du résultat
		// Ajouter le resultat dans var addResult
		for(i = 0;i<tableau.length;i++){
			addResult+= tableau[i]+"<div class=\'clear\'></div>";
		}
		// Remplir la liste par les elements trouves
		document.getElementById('list_zip').innerHTML = "<iframe class=\"ifrm\" style=\"height:"+nbElement+"px\"></iframe><div id=\"detailsZip\">"+addResult+"</div><div class=\"clear\"></div>";
		var code_elem = document.getElementById(posElem);
		document.getElementById('list_zip').style.top = topSize + 'px';
		document.getElementById('list_zip').style.height = nbElement + 'px';
		document.getElementById('list_zip').style.display = 'block';
	}else{ // si on pas de résultat on cahce la liste
		document.getElementById('list_zip').style.display = 'none';
		return (false);
	}
}

// Remplir les autres champs (on click)
function fillFields (champ1,champ2,champ3,code,state,adress1){
	var listState = document.getElementById(champ2);
	document.getElementById(champ1).value = code;
	for (i = 0;i<listState.length;i++){
		if(listState[i].value == state){ // la bonne state choisie
			listState.selectedIndex = i;
		}
	}
	document.getElementById(champ3).value = adress1;
	document.getElementById('list_zip').style.display = 'none';
	document.getElementById(champ1).focus();
}

// Drop List
function dropList() {
	var code = Event.type.keyCode;
		if( code == 27 )
			document.getElementById('list_zip').style.display = 'none';
}