/*
 * Author: Charles Lauzon
 * Name:   Functions_System_Villes.js
 * Date:   9 Septembre, 2008
 */
 
/********************************************************************
 * 																	*
 *		                   SYSTEM VILLES                            *
 *																	*
 ********************************************************************/
//TIMER VARIABLE
var secs;
var timerID = null;
var timerRunning = false;
var delay = 100;
var opt = -1;
var PaysCode, ProvinceCode = "";

var arrPreloadImage_VilleSystem = new Array();
arrPreloadImage_VilleSystem["loading"] = new Image(); arrPreloadImage_VilleSystem["loading"].src = "images/ajaxloader_ville.gif";
arrPreloadImage_VilleSystem["icon_search"] = new Array(2);
arrPreloadImage_VilleSystem["icon_search"][0] = new Image(); arrPreloadImage_VilleSystem["icon_search"][0].src = "images/icon_search.gif";
arrPreloadImage_VilleSystem["icon_search"][1] = new Image(); arrPreloadImage_VilleSystem["icon_search"][1].src = "images/icon_search_blank.gif";

function cboPays_onChange(Code){
	//Assignment
	PaysCode = Code;

	//Reset Ville
	document.getElementById("isVilleExist").value = "F";
	document.getElementById("txtVille").value = "- Entrer votre Ville -";
	document.getElementById("txtVille").disabled = true;
	document.getElementById("ville_system").style.borderColor = "#c9c9c9";
	//Reset Loop Image
	document.getElementById("icon_search").src = arrPreloadImage_VilleSystem["icon_search"][1].src;

	//Reset Province ou Etat ou Departement
	document.getElementById("cboProvince").style.display = "none"; document.getElementById("cboEtat").style.display = "none"; //document.getElementById("cboDepartement").style.display = "none";
	document.getElementById("cboProvince").selectedIndex = 0; document.getElementById("cboEtat").selectedIndex = 0; //document.getElementById("cboDepartement").selectedIndex = 0;
	document.getElementById("cboProvince").disabled = true; document.getElementById("cboEtat").disabled = true; //document.getElementById("cboDepartement").disabled = true;
	
	//Select Pays
	for(i = 0; i < document.getElementById("cboPays").length; i++){
		if(document.getElementById("cboPays").options[i].value == PaysCode){ document.getElementById("cboPays").options[i].selected = true; }
	}	
	
	//Unlock Province ou Etat ou Departement
	if(PaysCode != ""){
		if(PaysCode == "CA"){
			document.getElementById("cboProvince").style.display = "block";
			document.getElementById("cboProvince").disabled = false;
			if(document.getElementById("lblProvince")){ document.getElementById("lblProvince").innerHTML = "Province *"; }
		}else if(PaysCode == "US"){
			document.getElementById("cboEtat").style.display = "block";
			document.getElementById("cboEtat").disabled = false;
			if(document.getElementById("lblProvince")){ document.getElementById("lblProvince").innerHTML = "État *"; }
		}else if(PaysCode == "FR"){
			document.getElementById("cboDepartement").style.display = "block";
			document.getElementById("cboDepartement").disabled = false;
			if(document.getElementById("lblProvince")){ document.getElementById("lblProvince").innerHTML = "Département *"; }
		}
	}else{
		document.getElementById("cboProvince").style.display = "block";
		document.getElementById("cboProvince").disabled = true;
		if(document.getElementById("lblProvince")){ document.getElementById("lblProvince").innerHTML = "Province *"; }
	}
}

function cboProvince_onChange(Code){
	//Assignment
	ProvinceCode = Code;
	
	//Reset Ville
	document.getElementById("isVilleExist").value = "F";
	document.getElementById("txtVille").value = "- Entrer votre Ville -";
	document.getElementById("txtVille").disabled = true;
	document.getElementById("ville_system").style.borderColor = "#c9c9c9";
	//Reset Loop Image
	document.getElementById("icon_search").src = arrPreloadImage_VilleSystem["icon_search"][1].src;	
	
	//Select Province
	if(PaysCode == "CA"){
		for(i = 0; i < document.getElementById("cboProvince").length; i++){
			if(document.getElementById("cboProvince").options[i].value == ProvinceCode){ document.getElementById("cboProvince").options[i].selected = true; }
		}
	}else if(PaysCode == "US"){
		for(i = 0; i < document.getElementById("cboEtat").length; i++){
			if(document.getElementById("cboEtat").options[i].value == ProvinceCode){ document.getElementById("cboEtat").options[i].selected = true; }
		}
	}else if(PaysCode == "FR"){
		for(i = 0; i < document.getElementById("cboDepartement").length; i++){
			if(document.getElementById("cboDepartement").options[i].value == ProvinceCode){ document.getElementById("cboDepartement").options[i].selected = true; }
		}
	}
	
	//Unlock Ville
	if(ProvinceCode != ""){
		document.getElementById("txtVille").disabled = false;
		document.getElementById("ville_system").style.borderColor = "#7f7f7f";
		document.getElementById("icon_search").src = arrPreloadImage_VilleSystem["icon_search"][0].src;
	}
}

function txtVille_onChange(Ville){
	if(Ville != ""){
		document.getElementById("txtVille").value = Ville;
	}
}

function txtVille_onFocus(Ville){
	if(Ville == "- Entrer votre Ville -"){
		document.getElementById("txtVille").value = "";
	}/*else{
		ShowDiv("ville");	
	}*/
	opt = -1;
}

function txtVille_onBlur(Ville){
	if(Ville == ""){
		document.getElementById("txtVille").value = "- Entrer votre Ville -";
		HideDiv("ville");
	}else{
		InitializeTimer();
	}
}

function txtVille_onKeyUp(e, Key){
	//Declaration pour le AJAX system Villes
	var P = document.getElementById("cboPays").value;					
	var PC = "";
	if(P == "CA"){ PC = document.getElementById("cboProvince").value; }else if(P == "US"){ PC = document.getElementById("cboEtat").value; }
	
	//Regarder si le cboVilles Existe
	if(document.getElementById("cboVilles") != null){
		//Declaration pour le keyCode
		var ek; 
		//Prendre l'event si pas envoyer
		if(!e){ var e = window.event; }
		//Prendre le keyCode de la key appuyer
		if(e.keyCode){ ek = e.keyCode; }
		else if(e.which){ ek = e.which; }
		
		//Regarder si on a toucher: Enter | Up Arrow | Down Arrow | Left & Right Arrow | Toutes les Autres Touche
		if(ek == 13){ //Enter
			if(opt > -1){
				document.getElementById("txtVille").value = document.getElementById("cboVilles").options[opt].value;
				document.getElementById("isVilleExist").value = "T";
				opt = -1;
			}
			HideDiv("ville");
			return false;
		}else if(ek == 38){ //Up Arrow
			if(opt > 0){ opt--; }
		}else if(ek == 40){ //Down Arrow
			if(document.getElementById("cboVilles").options[opt + 1] != null){ opt++; }
		}else if(ek == 37 || ek == 39){ //Left & Right Arrow
			if(opt >= 0){ if(document.getElementById("cboVilles").options[opt] != null){ document.getElementById("cboVilles").options[opt].selected = true; } }
		}else{ //The Rest of ALL Key
			if(document.getElementById("txtVille").value.length >= 4){ //Need 4 lettres before search
				opt = -1; //RESET
				Initialize();
				
				//Start Loading Villes
				document.getElementById("icon_search").src = arrPreloadImage_VilleSystem["loading"].src;
				document.getElementById("icon_search").src = document.getElementById("icon_search").src //Reload AJAX GIF (IE BUG)
				
				var url = "./systems/ajax_villes.php?P="+P+"&PC="+PC+"&V="+Key;
				if(req!=null){
					req.onreadystatechange = Process_Villes;
					req.open("GET", url, true);
					req.send(null);
				}
			}else{
				HideDiv("ville");
			}
		}
		//Selectionner la Ville
		if(opt > -1){
			document.getElementById("cboVilles").options[opt].selected = true;
		}
	}else{
		if(document.getElementById("txtVille").value.length >= 4){ //Need 4 lettres before search
			Initialize();
			
			//Start Loading Villes
			document.getElementById("icon_search").src = arrPreloadImage_VilleSystem["loading"].src;
			document.getElementById("icon_search").src = document.getElementById("icon_search").src //Reload AJAX GIF (IE BUG)
					
			var url = "./systems/ajax_villes.php?P="+P+"&PC="+PC+"&V="+Key;
			if(req!=null){
				req.onreadystatechange = Process_Villes;
				req.open("GET", url, true);
				req.send(null);
			}
		}else{
			HideDiv("ville");
		}
	}
}

function Process_Villes(){
    if(req.readyState == 4){
    // only if "OK"
        if(req.status == 200){
            if(req.responseText==""){
                HideDiv("ville");
			}else{
                ShowDiv("ville");
                document.getElementById("ville").innerHTML = req.responseText;
            }
			//Stop Loading Villes
			document.getElementById("icon_search").src = arrPreloadImage_VilleSystem["icon_search"][0].src;
        }else{
            document.getElementById("ville").innerHTML = "There was a problem retrieving data:<br>" + req.statusText;
        }
    }
}

function cboVilles_onFocus(){
	clearTimeout(timerID);
	timerRunning = false;
}
function cboVilles_onBlur(){
	StopTheClock();
	HideDiv("ville");
}
function cboVilles_onClick(){
	document.getElementById("txtVille").value = document.getElementById("cboVilles").value;
	document.getElementById("isVilleExist").value = "T";
	HideDiv("ville");
}
function cboVilles_ondblClick(){
	document.getElementById("txtVille").value = document.getElementById("cboVilles").value;
	document.getElementById("isVilleExist").value = "T";
	HideDiv("ville");
}
//Show or Hide a div tag
function ShowDiv(divid){
	if(document.layers) document.layers[divid].visibility="show";
	else document.getElementById(divid).style.visibility="visible";
}

function HideDiv(divid){
	if(document.layers) document.layers[divid].visibility="hide";
	else document.getElementById(divid).style.visibility="hidden";
}
//Timer for the cboVille
function InitializeTimer(){
    // Set the length of the timer, in seconds
    secs = 1;
    StopTheClock();
    StartTheTimer();
}
function StopTheClock(){
    if(timerRunning){
        clearTimeout(timerID);
		HideDiv("ville");
	}
    timerRunning = false;
}
function StartTheTimer(){
    if(secs==0){
        StopTheClock();
    }else{
        secs = secs - 1;
        timerRunning = true;
        timerID = self.setTimeout("StartTheTimer()", delay);
    }
}

function selectPays(PaysCode){
	if(PaysCode == ""){
		PaysCode = "CA";	
	}
	//Select le Pays
	for(i = 0; i < document.getElementById("cboPays").length; i++){
		if(document.getElementById("cboPays").options[i].value == PaysCode){
			document.getElementById("cboPays").options[i].selected = true;
		}
	}
}

function selectProvince(ProvinceCode){
	if(ProvinceCode == ""){
		ProvinceCode = "QC";	
	}
	//Select la Province
	if(document.getElementById("cboPays").value == "CA"){
		for(i = 0; i < document.getElementById("cboProvince").length; i++){
			if(document.getElementById("cboProvince").options[i].value == ProvinceCode){
				document.getElementById("cboProvince").options[i].selected = true;
				document.getElementById("cboProvince").style.display = "block";
				document.getElementById("cboEtat").style.display = "none";
				document.getElementById("cboProvince").disabled = false;
				document.getElementById("cboEtat").disabled = true;
				document.getElementById("lblProvince").innerHTML = "Province *";
			}
		}
	}
	else if(document.getElementById("cboPays").value == "US"){
		for(i = 0; i < document.getElementById("cboEtat").length; i++){
			if(document.getElementById("cboEtat").options[i].value == ProvinceCode){
				document.getElementById("cboEtat").options[i].selected = true;
				document.getElementById("cboProvince").style.display = "none";
				document.getElementById("cboEtat").style.display = "block";
				document.getElementById("cboProvince").disabled = true;
				document.getElementById("cboEtat").disabled = false;
				document.getElementById("lblProvince").innerHTML = "État *";			
			}
		}
	}
}