//Gestion des formualaires

var TravelForm = function(name,positionId){
    this.name = name;
    this.comboBox = [];
    this.autoComplete = [];
    this.datePickers = [];
    this.errorUrl = [];
	this.positionId = positionId;
	//this.map = {}; //added for validation 
}
TravelForm.prototype.getDiv = function(){
    if (this.div == null) {
        this.div = document.getElementById("form-div-" + this.name);
    }
    return this.div;
}
TravelForm.prototype.getForm = function(){
    if (this.form == null) {
        this.form = document.getElementById("form-" + this.name);
    }
    return this.form;
}
TravelForm.prototype.getTab = function(){
    if (this.tab == null) {
        this.tab = document.getElementById("tab-" + this.name);
    }
    return this.tab;
}

TravelForm.prototype.getSelectedPartner = function(){
    var pInput = this.getForm()[this.name + '-partner'];
    if (pInput != null && pInput.value != null) {
        return pInput.value;
    }
    else 
        if (pInput.length != null) {
            for (var i = 0; i < pInput.length; i++) { 
                if (pInput[i].checked) { 
                    return pInput[i].value; 
                }
            }
            
        }
        else 
            return "undefined";
    
}

TravelForm.prototype.deselectAllPartners = function(){
    var pInput = this.getForm()[this.name + '-partner'];
    if (pInput != null && pInput.length != null) {
        for (var i = 0; i < pInput.length; i++) {
            pInput[i].checked = false;
        }
        
    }
    
}

TravelForm.prototype.findList = function(listName){
    for (var i = 0; i < this.comboBox.length; i++) {
        if (this.comboBox[i].name == listName) {
            return this.comboBox[i];
        }
    }
    for (var i = 0; i < this.autoComplete.length; i++) {
        if (this.autoComplete[i].name == listName ) {
        	return this.autoComplete[i];
        }
    }
	return null;
}

TravelForm.prototype.notify = function(propertyChangeInput){
    //alert("Modifiction d'un element de '" + propertyChangeInput.form.name + "' : " + propertyChangeInput.name + "=" + propertyChangeInput.value);
    var tf = propertyChangeInput.form.travelForm;
    for (var i = 0; i < this.comboBox.length; i++) {
        if (this.comboBox[i].dependencies.contains(propertyChangeInput.name)) {
            console.log("Dependency found : " + this.comboBox[i].name + " depends of " + propertyChangeInput.name);
            this.comboBox[i].update(propertyChangeInput);
        }
    }
    for (var i = 0; i < this.autoComplete.length; i++) {
        if (this.autoComplete[i].dependencies.contains(propertyChangeInput.name)) {
            console.log("Dependency found : " + this.autoComplete[i].name + " depends of " + propertyChangeInput.name);
            this.autoComplete[i].update(propertyChangeInput);
        }
    }
	var updated = this.findList(propertyChangeInput.name);
	if(updated != null){
		console.log("A list has been modified, we'll try to auto resolve depencies if needed. List modified : ");
		console.log(updated);
		updated.autoResolveDependencies();
	}
}
TravelForm.prototype.init = function(){
    this.getForm().travelForm = this;
    for (var i = 0; i < this.comboBox.length; i++) {
        this.comboBox[i].getCombo().selectedIndex = 0;
    }
    for (var i = 0; i < this.autoComplete.length; i++) {
        this.autoComplete[i].getField().value = "";
    }
    for (var i = 0; i < this.datePickers.length; i++) {
        this.datePickers[i].field.value = "";
    }
    this.deselectAllPartners();
}
TravelForm.prototype.checkForm = function(){
    if (this.getSelectedPartner() == "undefined" || this.getSelectedPartner() == undefined) {
        blinkDiv("partner-warn-"+this.name,1);
        return false;
    }
    else {
        return true;
    }
    
}
TravelForm.prototype.submit = function(){ 
    //TODO verifier que les chmaps sont complÃ©tÃ© correctement et que le partenaire est bien selectionnÃ©
    //Contruction d'une map contenant les valeurs des champs a envoyer, ainsi que le partenaire choisi
    try {
        //on verifie qu'un partenaire est bien selectionnï¿½
        console.log("Submiting " + this.name);
		var errBox = document.getElementById('warn-message-'+this.name);
		if(errBox) errBox.style.display = "none";

        //to verify only partner logo checked or not
		if (!this.checkForm()) {
            console.log(" --> No partner selected : break");
            return false;
        }
        var formMap = {};
		console.log(" --> Form : "+this.getForm());
        var elts = this.getForm().elements;
		if(elts ==null) elts = this.getForm().getElements();
		console.log(" --> Scanning elements "+elts);
        for (var i = 0; i < elts.length; i++) {
			console.log("  --> adding "+elts[i]+" "+elts[i].name);
            formMap[elts[i].name] = getFieldValue(elts[i]);
            console.log("   --> formMap[" + elts[i].name + "] =" + getFieldValue(elts[i]));
        }
        console.log("Sending form '" + this.name + "' with data : ");
        console.log(formMap);
		//LoadIndicator.add();
		var map = {};
		//For Validation 
		this.errorMessage = [];
		var valresult = this.Validation(formMap);
		if(!valresult) {			
			
			map.errorMessage = this.errorMessage;
		}
		if(this.name.match("flight-form") && (valresult) ) 
		{
			map.trackingUrl = "http://adserver.aol.fr/?adlink|3.0|516|1032275|1|16|AdId=2125618;BnId=1;link=";//this.errorUrl;
			map.formAction = "http://www.easyvols.org/aolng/mev/results.jsp";
			map.formType = "GET";
			var appUrl = "?";
			var keyval = "";
			for (key in formMap)
			{
				if(key != "submitvolsButton" && key != "flight-form-partner")
				{
					if(key == "date_aller" || key == "date_retour") {
						var dateInput = formMap[key].split('/'); 
						if(key == "date_aller"){
							appUrl = appUrl+"&moisAller="+dateInput[1]+"/"+dateInput[2]+"&jourAller="+dateInput[0];
							map['moisAller'] = dateInput[1]+"/"+dateInput[2]; map['jourAller'] = dateInput[0];
						} else {
							appUrl = appUrl+"&moisRetour="+dateInput[1]+"/"+dateInput[2]+"&jourRetour="+dateInput[0];
							map['moisRetour'] = dateInput[1]+"/"+dateInput[2]; map['jourRetour'] = dateInput[0];
						}
					}
					else if (key == "type")
					{
						var typeval = (formMap[key] == false)?1:0;
						appUrl = appUrl+"&"+ key + "="+ typeval;
						map.type = typeval;
					}
					else {
						appUrl = appUrl+"&"+ key + "="+ formMap[key];
						map[key] = formMap[key];
					}
				}
			}			
		 }
	
		 if(this.name.match("stays-form") && (valresult) ) 
		 {
			map.trackingUrl = "";
			var appUrl = "";
			var stayspartner = this.getSelectedPartner();
			
			if(stayspartner == "look-voyages-stays-partner") 
			{
				var default_url = 'http://www.look-voyages-location.fr/?utm_source=aol&utm_medium=DLY_DLT_DSH&utm_content=FLX_MOT_SEJ&utm_campaign=PERMANENT';
				var prefix_url='http://www.lookvoyages.fr/redir.aspx?mode=catsearch&geozoneid=';
				var postfix_url = '&isCalculate=1&merchant_id=LK0001&utm_source=aol&utm_medium=DLY_DLT_DSH&utm_content=FLX_MOT_SEJ&utm_campaign=PERMANENT';
				var url=default_url;
				var id=lvPays[formMap.choix_pays];
				//map.trackingUrl = "http://adserver.aol.fr/?adlink|3.0|516|1032275|1|16|AdId=1651668;BnId=1;link=";
				map.trackingUrl = "http://fr.at.atwola.com/?adlink|3.0|516|1032275|1|16|AdId=2220172;BnId=1;link=";
				map.formType = "GET";
				map.formAction = "http://www.lookvoyages.fr/redir.aspx?mode=catsearch";
				map.mode = "catsearch";
				map.geozoneid = id;
				map.utm_source = "AOL";
				map.utm_medium = "DLY_DLT_DSH";
				map.utm_content = "FLX_MOT_SEJ";
				map.utm_campaign = "PERMANENT";
				map.isCalculate = "1";
				
				if (!isNaN(id))
				{
					if (formMap.date_sejour){
						var tab_jour_mois_annee = formMap.date_sejour.split("/");
						var depDay = tab_jour_mois_annee[0] ;
						var depMonth = tab_jour_mois_annee[1] ;
						var depYear = tab_jour_mois_annee[2] ;
					}
					appUrl = prefix_url+id+postfix_url+'&depdatemin='+depDay+depMonth+depYear;
					map.depdatemin = depDay+depMonth+depYear;
				}
			}
			if(stayspartner == "promo-vacances-stays-partner") 
			{
				/*if(this.postionId = 'home')
					var urlAction = "http://aolmotvo.promovacances.com/?cid=400116";
				 else 
					var urlAction = "http://aolmotsej.promovacances.com/?cid=400117";*/
				var urlAction = "http://aolmotvo.promovacances.com/?cid=400116";
				map.formType = "POST";				
				map.formAction = urlAction;
				//map.trackingUrl = "http://adserver.aol.fr/?adlink|3.0|516|1032275|1|16|AdId=1022018;BnId=1;link=";
				map.trackingUrl = "http://adserver.aol.fr/?adlink|3.0|516|1032582|1|16|AdId=1021955;BnId=3;link=";
				if(formMap.date_sejour)
				{ 				
					var tab_jour_mois_annee= formMap.date_sejour.split("/");				
					var depDay = tab_jour_mois_annee[0] ;
					var depMonth = tab_jour_mois_annee[1] ;
					var depYear = tab_jour_mois_annee[2] ;
					map.jj = depDay;
					map.mm = depMonth;
					map.aaaa = depYear;	
				}
				var budgetValue="";

				switch (formMap.budget) 
				{
					case "" : 
					case "indiff" :	budgetValue = "0 - 9999999"; break; 
					case "inf300" : budgetValue = "0 - 1968"; break; 
					case "inf450" : budgetValue = "1968 - 2952"; break;
					case "inf600" : budgetValue = "2952 - 3936"; break; 
					case "inf750" : budgetValue = "3936 - 4919"; break;
					case "sup750" : budgetValue = "4919 - 9999999"; break; 
				}
				var bug = budgetValue.split("-");
				map.budmax = budgetValue; 
				map.aolws = 2;
				map.u = "PMV:RECH";
				map.theme  = formMap.theme;
				map.pays = formMap.choix_pays.toLowerCase();
			}
			
		 }


		this.getSubmitCallback1(map);
		return false;
    } 
    catch (ex) {
        console.error("Error when sending form : break !");
        console.error("Error "+ex.number+" : "+ex.description);
        return false;
    }
}

TravelForm.prototype.Validation = function(formMap)
{ 
	if(this.name.match("flight-form")) 
	{
		if(formMap.departAller == null || formMap.departAller == "")
		{
			this.errorMessage = "Vous n'avez pas choisi de ville de départ."; 
			return false;
		}
		if(formMap.arriveeAller == null || formMap.arriveeAller == "")
		{
			this.errorMessage = "Vous n'avez pas choisi de ville d'arrivée."; 
			return false;
		}
		if( (formMap.date_aller)||(formMap.date_retour) )
		{
			if(formMap.date_aller)
			{
				tabdepart=formMap.date_aller.split("/");
				if(tabdepart.length!=3 || DateNotValid(tabdepart[0],tabdepart[1],tabdepart[2]))
				{
					this.errorMessage = "Veuillez entrer une date d'arrivée valide."; 
					return false;
				}

			}
			if(formMap.date_retour)
			{
				tabretour=formMap.date_retour.split("/");
				if(tabretour.length!=3 || DateNotValid(tabretour[0],tabretour[1],tabretour[2]))
				{
					this.errorMessage = "Veuillez entrer une date de départ valide."; 
					return false;				
				}
			}
			
			if(getDateObject(formMap.date_aller,"/") > getDateObject(formMap.date_retour,"/"))
			{
				this.errorMessage = "La date de retour ne peut preceder la date de départ."; 
				return false;
			}

			var maintenant=new Date();
			var anneeActu=maintenant.getFullYear();
			var moisActu=maintenant.getMonth();
			//before funture one year date validation
			if((tabdepart[2]>anneeActu+1)||( (tabdepart[2]==anneeActu+1)&&(moisActu<tabdepart[1]) ) )
			{
				this.errorMessage = "Veuillez entrer une date de départ antérieure."; 
				return false;
			}	
		}
		else {
			this.errorMessage = "Veuillez entrer une date d'départ / arrivée valide."; 
			return false;
		}
		return true;
	}

	
	if(this.name.match("stays-form")) 
	{ 
		var stayspartner = this.getSelectedPartner();
		if(stayspartner == null || stayspartner == "")
		{
			this.errorMessage = "Vous n'avez pas choisi de Voyagiste."; 
			return false;
		}
		if(formMap.choix_pays == null || formMap.choix_pays == "null"|| formMap.choix_pays == "")
		{
			this.errorMessage = "Vous n'avez pas choisi de destination"; 
			return false;
		}
		if(formMap.date_sejour){
			var tabdepart = formMap.date_sejour.split("/");
			if(tabdepart.length!=3 || DateNotValid(tabdepart[0],tabdepart[1],tabdepart[2]))
			{
				this.errorMessage = "Veuillez entrer une date de départ valide."; 
				return false;
			}
		}
		return true;
	}
	
	return false;	
}
TravelForm.prototype.getSubmitCallback1 = function(map)
{ 
	var _this = this; 
	//LoadIndicator.remove();
	if (map['errorUrl'] == null && map['errorMessage'] == null) 
	{
		try {
				callTracking(map.trackingUrl+context+trackingUrl);
			} 
			catch (e) {
				console.error(e);
			}
		var uForm = document.getElementById('usefull-form');
		uForm.action = map.formAction;
		if (map.formType == "GET")
			uForm.method = 'get';
		else
			uForm.method = 'post';
		uForm.innerHTML = "";
		for (key in map) 
		{
			if (key != "formAction" && key != "formType" && key != "trackingUrl") 
			{
				uForm.innerHTML += '<input type="hidden" name="' + key + '" value="' + map[key] + '" />\n';
			}
		}
		console.log("Sending form : ");
		console.log(uForm);
		try 
		{
			uForm.submit();
		} 
		catch (e) 
		{
			alert("Firefox a empêché ce site d'ouvrir une fenêtre popup. Veuillez activer les popup pour cette page puis relancer la recherche.");					
		}		
	}
	else 
		if (map['errorMessage'] == null) 
		{
			window.open(map['errorUrl'], "_blank");
		}
		else 
		{
			var errBox = document.getElementById('warn-message-' + _this.name);
			if (errBox) 
			{
				errBox.innerHTML = map['errorMessage'];
				blinkDiv('warn-message-' + _this.name)
			}
			else 
				alert(map['errorMessage']);
				return false;
		}
}
TravelForm.prototype.getSubmitCallback = function(){
	var _this = this; 
	return function(map){
		console.log("Reciving form data to submit : ");
		console.log(map);
		LoadIndicator.remove();
		if (map['errorUrl'] == null && map['errorMessage'] == null) {
		
			// Tracking
			try {
				callTracking(map.trackingUrl+context+trackingUrl);
			} 
			catch (e) {
				console.error(e);
			}
			
				
				var uForm = document.getElementById('usefull-form');
				uForm.action = map.formAction;
				uForm.method = 'post';
				uForm.innerHTML = "";
				uForm.target = ('aol_search_result');
				for (key in map) {

					if (key != "formAction" && key != "formType" && key != "trackingUrl") {
						uForm.innerHTML += '<input type="hidden" name="' + key + '" value="' + map[key] + '" />\n';
					}
				}
				console.log("Sending form : ");
				console.log(uForm);
				
		
				try {
					uForm.submit();
				} catch (e) {
					alert("Firefox a empêché ce site d'ouvrir une fenêtre popup. Veuillez activer les popup pour cette page puis relancer la recherche.");					
				}
		
		}
		else 
			if (map['errorMessage'] == null) {
				window.open(map['errorUrl'], "_blank");
			}
			else {
				var errBox = document.getElementById('warn-message-' + _this.name);
				if (errBox) {
					errBox.innerHTML = map['errorMessage'];
					blinkDiv('warn-message-' + _this.name)
				}
				else 
					alert(map['errorMessage']);
				return false;
			}
	}
}

TravelForm.prototype.selectPartner = function(selected){
    if (selected) {
    	document.getElementById("partner-warn-"+this.name).style.display = "none";
        if (this.getSelectedPartner() != "none") {
            for (var i = 0; i < this.comboBox.length; i++) {
                this.comboBox[i].update();
            }
            for (var i = 0; i < this.autoComplete.length; i++) {
                this.autoComplete[i].refreshParams();
            }
        }
    }
}





function getDateObject(dateString,dateSeperator)
{
	var curValue=dateString;
	var sepChar=dateSeperator;
	var curPos=0;
	var cDate,cMonth,cYear;

	curPos=dateString.indexOf(sepChar);
	cDate=dateString.substring(0,curPos);
			
	endPos=dateString.indexOf(sepChar,curPos+1);
	
	cMonth=dateString.substring(curPos+1,endPos);
			
	curPos=endPos;
	endPos=curPos+5;			
	cYear=curValue.substring(curPos+1,endPos);
	
	dtObject=new Date(cYear,cMonth-1,cDate);	
	
	return dtObject;
}





if (console == null) 
    var console = {
        log: function(){
        },
        error: function(){
        }
    }
console.log(console);

function selectRadio(id){
    var rb = document.getElementById(id);
    if (rb) {
        rb.checked = true;
		var tf = rb.form.travelForm;
		if(tf != null) tf.selectPartner(true); 
    }
}



Array.prototype.contains = function contains(value){
    for (var i = 0; i < this.length; i++) {
        if (this[i] == value) 
            return true;
    }
    return false;
}



function selectSearchTab(formName){
    for (var i = 0; i < TravelForms.length; i++) {
        if (TravelForms[i].name == formName) {
            TravelForms[i].getDiv().style.display = "";
			if (TravelForms[i].getTab().className.indexOf('tab_border') == -1) {
				TravelForms[i].getTab().className = "on";
			} else {
				TravelForms[i].getTab().className = "on tab_border";
			}
        }
        else {
            TravelForms[i].getDiv().style.display = "none";
            if (TravelForms[i].getTab().className.indexOf('tab_border') == -1) {
				TravelForms[i].getTab().className = "off";
			} else {
				TravelForms[i].getTab().className = "off tab_border";
			}
        }
    }
}

function callTracking(url,ok){ 
	console.log("Tracking :"+url);
	if(ok)
		document.getElementById('usefull-frame').src = url;
	else
		setTimeout("callTracking('"+url+"',true)",1);
}

function getTravelFormByName(name){
    for (var i = 0; i < TravelForms.length; i++) {
        if (TravelForms[i].name == name) 
            return TravelForms[i];
    }
    throw "NoSuchTravelForm";
}

var LoadIndicator = {
	loading:0,
	getPicto: function(){
		return document.getElementById('loading_div');
	},
	add:function(){
		this.loading++;
		this.getPicto().style.display='block';
		console.log("Start loading ...");
	},
	remove:function() {
		this.loading--;
		if(this.loading <1){
			this.loading = 0;
			this.getPicto().style.display='none';
			console.log(".. loading ended !");
		}
	}
}

function blinkDiv(divId,n){
	if(n == null) n=1;
	var elt = document.getElementById(divId);
	if(elt != null){
		elt.style.display = "block";
		if (n % 2 == 1) {
			elt.style.visibility = "visible";
		} else {
			elt.style.visibility = "hidden";			
		}
		n++;
		if (n < 8) {
			setTimeout("blinkDiv('"+divId+"',"+n+")", 100);
		}
	}
}

function getFieldValue(field) {
	if (field) {
		if (field.type == 'checkbox') {
			return (field.checked);
		}
		else 
			if (field.type == 'radio' && field.length != null) {
				for(var i=0;i<field.length;i++){
					if(field[i].checked){
						return field[i].value;
					}
				}
			}
			else {
				return field.value;
			}
	}
	return null;
}


//Gestion des liste deroulantes
var TravelComboBox = function(formName, name, dependencies){
    this.travelForm = getTravelFormByName(formName);
    this.name = name;
    this.dependencies = (dependencies != null ? dependencies : []);
    this.dependencyMap = [];
    for (var i = 0; i < this.dependencies.length; i++) {
        this.dependencyMap[this.dependencies[i]] = null;
    }
    this.travelForm.comboBox.push(this);   //alert('Combo : '+ name +'---'+  this.name);
}
TravelComboBox.prototype.getCombo = function(){
    if (this.combo == null) {
        this.combo = document.getElementById("select-" + this.travelForm.name + "-" + this.name);
    }
    return this.combo;
}
TravelComboBox.prototype.getValue = function(){
    return this.getCombo().value;
}
TravelComboBox.prototype.update = function(propertyChangeInput){
	if (propertyChangeInput) {
		this.dependencyMap[propertyChangeInput.name] = propertyChangeInput.value;
	}

	var args = {};
	
	var j=0;
    for (var i = 0; i < this.dependencies.length; i++) {
		var key = this.dependencies[i];
		var val = this.dependencyMap[key];
		if (val != "" && val != null && val != "null") { 
			args[key] = val;
		}
    }
	
    var selectedPartner = this.travelForm.getSelectedPartner(); //alert(selectedPartner);
	//LoadIndicator.add();
    //SearchListService.getListValues(this.travelForm.name, this.name, args, selectedPartner, this.getUpdateCallback());
	this.getListValues(args);
}
// added by me 
TravelComboBox.prototype.getListValues = function(args){
	
	var selectedPartner = this.travelForm.getSelectedPartner();
	var elements = {}; 
	if(this.travelForm.name == 'hotels-form') {
		if(this.name == 'nom_pays') {
			if(selectedPartner  == 'rate-to-go-hotel-partner'){				
				elements = rate_hotels;
				this.getUpdateCallback(elements);
			}
			else if((selectedPartner  == 'last-minute-hotel-partner')||(selectedPartner  == 'hotel-club-partner'))
			{
				elements = last__hotelclub_hotels;
				this.getUpdateCallback(elements);
			} 
		} 
		
	}

   /* var selectedPartner = this.travelForm.getSelectedPartner();alert(selectedPartner);
	//LoadIndicator.add();
    SearchListService.getListValues(this.travelForm.name, this.name, args, selectedPartner, this.getUpdateCallback());*/
}

//update with with argument elements by me 5/27/2008
TravelComboBox.prototype.getUpdateCallback = function(elements){
    var combo = this.getCombo();
    var tvlComboBox = this;
    //return function(elements){
        console.log("Combobox update callback :" + elements.length + " elements");
        var currentVal = combo.value;
		var nullOption = combo.options[0];
		combo.clear();
        while (combo.length>1) {
            combo.remove(1);
        }
		combo.options[0] = nullOption;
        combo.selectedIndex = 0;
        var doNotify = true;
        for (var i = 0; i < elements.length; i++) {
            if (elements[i] == currentVal) {
                combo.options[i + 1] = new Option(elements[i], elements[i], false, true);
                doNotify = false;
            }
            else {
                combo.options[i + 1] = new Option(elements[i], elements[i], false, false);
            }
        }
        if (doNotify) {
            tvlComboBox.travelForm.notify(combo); //notify that the field value was modified
        }
		//LoadIndicator.remove();
    //}
}

TravelComboBox.prototype.checkDependency = function(elt, noAlert){
    for (var i = 0; i < this.dependencies.length; i++) {
        if (this.dependencyMap[this.dependencies[i]] == null ||
        this.dependencyMap[this.dependencies[i]] == "null" ||
        this.dependencyMap[this.dependencies[i]] == "") {
            if (elt) 
                elt.blur();
            if (!noAlert) 
                alert(this.resolveDependencyMessage);
            return false;
        }
    }
    return true;
}


TravelComboBox.prototype.autoResolveDependencies = function() {
	for(var i=0;i<this.dependencies.length;i++){
		if (this.dependencyMap[this.dependencies[i]] == null ||
        this.dependencyMap[this.dependencies[i]] == "null" ||
        this.dependencyMap[this.dependencies[i]] == ""){
			var lst = this.travelForm.findList(this.dependencies[i]);
			if(lst != null){
				lst.tryToResolve(this.name,this.getCombo().value)
			}
		}
	}
}

TravelComboBox.prototype.tryToResolve = function(fieldName,value){
	console.log("Resolving "+fieldName+"'s dependency on "+this.name);
	var form = this.travelForm.getForm();
    var args = {};
	args[fieldName] = value;
    var selectedPartner = this.travelForm.getSelectedPartner();
	//LoadIndicator.add();
    //SearchListService.getListValues(this.travelForm.name, this.name, args, selectedPartner, this.getResolveCallback());
}

TravelComboBox.prototype.getResolveCallback = function(){
	var _this = this;
	 var combo = this.getCombo();
	return function(arg){
		if (arg.length > 0) {
			for (var i = 0; i < arg.length; i++) {
				for(var j=1;j<combo.options.length;j++){
					if(combo.options[j].value == arg[i]){
						combo.selectedIndex = j;
						_this.travelForm.notify(combo); //notify that the field value was modified
						console.log("Dependency resolved : "+arg[i]);
						//LoadIndicator.remove();
						return true;
					}
				}
			}
		}
		console.log("Dependency not resolved !");
		//LoadIndicator.remove();
		return false;
	}
}




/***********  Genral *************/
function isInteger(s) {
	var i;
	if (s=="")
		return false;
	for(i=0;i<s.length;i++)	{			
		var c=s.charAt(i);
		if((c<"0")  ||  (c>"9"))
			return false;
	}
	return true;
}
// validite de la date
function DateNotValid(dayVal,monthVal,yearVal) {

	var error=0;
	if(!isInteger(dayVal)  ||  !isInteger(monthVal)  ||  !isInteger(yearVal)){error=1;}
	if(dayVal>31 || monthVal>12 || yearVal<2003 || dayVal<1 || monthVal<1){error=1;}
	if((monthVal==4) || (monthVal==6) || (monthVal==9) || (monthVal==11)) {
		//mois a 30 jours
		if(dayVal>30)error=1;
	}
	else if(monthVal==2) {
		// fevrier
		// annee bissextile
		if(((yearVal%4==0)  &&  (yearVal%100!=0)) || (yearVal%400==0)) {
			if(dayVal>29)error=1;
		} else if(dayVal>28)
			error=1;
	}
	if(error==1){return true;}else{return false;}
}

function getObject(objectId) {
	if(document.all && !document.getElementById)	{
		return document.all(objectId);
	} else if (document.getElementById) {
		return document.getElementById(objectId);
	}
	return null;
}


//Escapades City Ids List

var lvEscapadesFrom = {

"Paris (tous)":"PAR",
"Paris - Orly":"ORY",
"Ajaccio":"AJA",
"Bale-Mulhouse":"BSL",
"Paris - Roissy":"CDG",
"Bastia":"BIA",
"Biarritz":"BIQ",
"Bordeaux":"BOD",
"Brest":"BES",
"Clermont-Ferrand":"CFE",
"Fort-de-France":"FDF",
"Lille":"LIL",
"Lyon":"LYS",
"Marseille":"MRS",
"Montpellier":"MPL",
"Nantes":"NTE",
"Nice":"NCE",
"Pointe-a-Pitre":"PTP",
"Rennes":"RNS",
"Strasbourg":"SXB",
"Toulon":"TLN",
"Toulouse":"TLS",
"Amsterdam":"AMS",
"Athenes":"ATH",
"Barcelone":"BCN",
"Berlin":"BER",
"Bruxelles":"BRU",
"Geneve":"GVA",
"Lisbonne":"LIS",
"Londres":"LON",
"Luxembourg":"LUX",
"Madrid":"MAD",
"Porto":"OPO",
"Rome":"ROM",
"Vienne":"VIE"
};


var lvEscapadesDestination = {

"Amsterdam":"AMS",
"Barcelone":"BCN",
"Berlin":"BER",
"Lisbonne":"LIS",
"Londres":"LON",
"Madrid":"MAD",
"New-York":"NYC",
"Prague":"PRG",
"Rome":"ROM",
"Venise":"VCE",
"Vienne":"VIE",
"Allemagne":"BER",
"Berlin":"BER",
"Cologne":"CGN",
"Dusseldorf":"DUS",
"Francfort":"FRA",
"Hambourg":"HAM",
"Munich":"MUC",
"Stuttgart":"STR",
"Andorre":"ALV",
"Andorre La Vieille":"ALV",
"Argentine":"BUE",
"Buenos Aires":"BUE",
"Australie":"SYD",
"Melbourne":"MEL",
"Perth":"PER",
"Sydney":"SYD",
"Autriche":"VIE",
"Salzbourg":"SZG",
"Belgique":"BRU",
"Bruxelles":"BRU",
"Bresil":"RIO",
"Rio De Janeiro":"RIO",
"Sao Paulo":"SAO",
"Canada":"YTO",
"Montreal":"XZP",
"Quebec":"YQB",
"Toronto":"YTO",
"Vancouver":"YVR",
"Chypre":"QLI",
"Limassol":"QLI",
"Paphos":"PFO",
"Danemark":"CPH",
"Copenhague":"CPH",
"Egypte":"CAI",
"Hurghada":"HRG",
"Le Caire":"CAI",
"Sharm El Sheikh":"SSH",
"Emirats Arabes Unis":"DXB",
"Abu Dhabi":"AUH",
"Dubai":"DXB",
"Espagne":"MAD",
"Alicante":"ALC",
"Barcelone":"BCN",
"Benalmadena":"BMA",
"Benidorm":"991",
"Bilbao":"BIO",
"Fuerteventura":"FUE",
"Grande Canarie":"LPA",
"Grenade":"GRX",
"Ibiza":"IBZ",
"Lanzarote":"ACE",
"Madrid":"MAD",
"Majorque":"PMI",
"Malaga":"AGP",
"Marbella":"QRL",
"Minorque":"MAH",
"Salamanca":"SLM",
"Seville":"SVQ",
"Tenerife":"TCI",
"Torremolinos":"UTL",
"Valence":"VLC",
"Estonie":"TLL",
"Tallinn":"TLL",
"Etats-unis":"NYC",
"Boston":"BOS",
"Chicago":"CHI",
"Las Vegas":"LAS",
"Los Angeles":"LAX",
"Miami":"MIA",
"New-York":"NYC",
"Orlando":"MCO",
"Philadelphie":"PHL",
"San Francisco":"SFO",
"Finlande":"HEL",
"Helsinki":"HEL",
"France":"PAR",
"Annecy":"NCY",
"Bordeaux":"BOD",
"Brest":"BES",
"Cannes":"CEQ",
"Grenoble":"GNB",
"Lille":"LIL",
"Lyon":"LYS",
"Marseille":"MRS",
"Montpellier":"MPL",
"Nantes":"NTE",
"Nice":"NCE",
"Paris":"PAR",
"Strasbourg":"SXB",
"Toulouse":"TLS",
"Grande Bretagne":"LON",
"Aberdeen":"ABZ",
"Belfast":"BFS",
"Birmingham":"BHX",
"Bournemouth":"BOH",
"Bristol":"BRS",
"Cardiff":"CWL",
"Edimbourg":"EDI",
"Glasgow":"GLA",
"Leeds":"EEE",
"Londres":"LON",
"Manchester":"MAN",
"Newcastle":"NCL",
"Oxford":"OXF",
"Grece":"ATH",
"Athenes":"ATH",
"Corfou":"CFU",
"Heraklion":"HER",
"Guadeloupe":"PTP",
"Marie Galante":"GBJ",
"Pointe-a-pitre":"PTP",
"Hong Kong":"HKG",
"Hongrie":"BUD",
"Budapest":"BUD",
"Irlande":"DUB",
"Cork":"CRK",
"Dublin":"DUB",
"Shannon":"SNN",
"Islande":"REK",
"Reykjavik":"REK",
"Italie":"ROM",
"Bologne":"BLQ",
"Cagliari":"CAG",
"Capri":"PRJ",
"Florence":"FLR",
"Milan":"MIL",
"Naples":"NAP",
"Palerme":"PMO",
"Perouse":"PEG",
"Pise":"PSA",
"Rimini":"RMI",
"Rome":"ROM",
"Trieste":"TRS",
"Turin":"TRN",
"Venise":"VCE",
"Verone":"VRN",
"Lettonie":"RIX",
"Riga":"RIX",
"Malte":"MLA",
"Maroc":"RAK",
"Marrakech":"RAK",
"Martinique":"FDF",
"Fort de France":"FDF",
"Maurice (Ile)":"MRU",
"Ile Maurice":"MRU",
"Mexique":"CUN",
"Cancun":"CUN",
"Norvege":"OSL",
"Oslo":"OSL",
"Pays-bas":"AMS",
"Amsterdam":"AMS",
"La Haye":"HAG",
"Maastricht":"MST",
"Rotterdam":"RTM",
"Pologne":"WAW",
"Cracovie":"KRK",
"Varsovie":"WAW",
"Portugal":"LIS",
"Faro":"FAO",
"Funchal":"FNC",
"Lisbonne":"LIS",
"Madere":"MDA",
"Porto":"OPO",
"Republique Tcheque":"PRG",
"Prague":"PRG",
"Slovaquie":"BTS",
"Bratislava":"BTS",
"Suisse":"GVA",
"Geneve":"GVA",
"Zurich":"ZRH",
"Suede":"STO",
"Stockholm":"STO",
"Thailande":"BKK",
"Bangkok":"BKK",
"Tunisie":"DJE",
"Djerba":"DJE",
"Turquie":"IST",
"Antalya":"AYT",
"Istanbul":"IST"

};



















//sejours look voyage destination list
var lvPays = {
	"Ile de rhodes":"vacances_Sejour_Rhodes_;162;146;3912;",
"Grece":"vacances_Sejour_Grece_;162;146;",
"Espagne":"vacances_Sejour_Espagne_;162;158;",
"Croatie":"vacances_Sejour_Croatie_;162;144;",
"Crete":"vacances_Sejour_Crete_;162;146;153;",
"Corfou":"vacances_Sejour_Corfou_;162;146;154;",
"Cap Vert":"vacances_Sejour_Corfou_;162;146;154;",
"Bulgarie":"vacances_Sejour_Bulgarie_;162;142;",
"Andalousie":"vacances_Sejour_Andalousie_;162;158;3889;",
"Tunisie":"vacances_Sejour_Tunisie_;165;151;",
"Thailande":"vacances_Sejour_Thailande_;160;22;",
"Senegal ":"vacances_Sejour_Senegal_;161;150;",
"Republique Dominicaine":"vacances_Sejour_Republique_Dominicaine_;166;46;",
"Mexique":"vacances_Sejour_Mexique_;159;12;",
"Martinique":"vacances_Sejour_Martinique_;141;24;",
"Maroc":"vacances_Sejour_Maroc_;165;147;",
"Maurice":"vacances_Sejour_Ile_Maurice_;163;25;",
"ils Maurice":"vacances_Sejour_Ile_Maurice_;163;25;",
"Guadeloupe":"vacances_Sejour_Guadeloupe_;141;33;",
"Egypte":"vacances_Sejour_Egypte_;165;145;",
"Cuba":"vacances_Sejour_Cuba_;166;45;",
"Baleares":"vacances_Sejour_Caraibes_;140;166;",
"Inde":"vacances_Circuit_Inde_;160;18;",
"Etats unis":"vacances_Circuit_Etats-Unis_;167;16;",
"Canada":"vacances_Circuit_Canada_;167;15;",
"Bresil":"vacances_Circuit_Bresil_;159;9;",
"Australie":"vacances_Circuit_Australie_;140;32;",
"Argentine":"vacances_Circuit_Argentine_;159;8;",
"Afrique du Sud":"vacances_Circuit_Afrique_du_Sud_;161;6;",
"Kenya":"vacances_Kenya_7",
"Japon":"vacances_Japon_169"
	};
// tableau libelle-pays pour promovacances, code-pays pour Nouvelles frontieres, code-pays pour LastMinute
var sPays = new Array(["Acores","-"],["Afrique du sud","-"],["Algerie","-"],["Allemagne","591"],["Andalousie","-"],["Angleterre","-"],
["Argentine","-"],["Australie","-"],["Autriche","631"],["Bahamas","-"],["Baleares","718"],["Bali","-"],["Belgique","-"],["Benin","-"],
["Bhoutan","-"],["Birmanie","-"],["Bolivie","-"],["Botswana","-"],["Bresil","-"],["Bulgarie","624"],["Burkina Faso","-"],["Cambodge","-"],
["Canada","610"],["Canaries","717"],["Cap Vert","-"],["Chili","-"],["Chine","-"],["Chypre","593"],["Corfou","-"],["Corse","736"],
["Coree du Sud","-"],["Costa rica","-"],["Cote d'Ivoire","-"],["Crete","734"],["Croatie","672"],["Cuba","596"],["Danemark","-"],["Dubai","-"],
["Ecosse","-"],["Egypte","531"],["Equateur","-"],["Espagne","528"],["Estonie","-"],["Etats-Unis","-"],["Ethiopie","-"],
["Expeditions Africaines","-"],["Finlande","525"],["France","683"],["France sejours","683"],["France locations","683"],["Ghana","-"],
["Grande-Bretagne","-"],["Grece","537"],["Guadeloupe","725"],["Guatemala","-"],["Guernesey","-"],["Guyane Francaise","-"],["Hong-Kong","-"],
["Hongrie","-"],["Ibiza","-"],["Ile de rhodes","-"],["Ile maurice","508"],["Inde","-"],["Indonesie","551"],["Iran","-"],["Irlande","-"],
["Islande","546"],["Israel","-"],["Italie","544"],["Japon","-"],["Jersey","-"],["Jordanie","-"],["Kenya","557"],["Laos","-"],
["Lettonie","-"],["Lituanie","-"],["Liban","-"],["Libye","-"],["Luxembourg","-"],["Madagascar","503"],["Madere","742"],["Malaisie","701"],
["Maldives","502"],["Mali","-"],["Malte","515"],["Marie Galante","741"],["Maroc","506"],["Martinique","740"],["Maurice","508"],
["Mauritanie","-"],["Mexique","501"],["Mongolie","-"],["Myanmar","-"],["Namibie","-"],["Nicaragua","-"],["Niger","-"],["Norvege","-"],
["Nouvelle-Caledonie","-"],["Nouvelle-Zelande","-"],["Nepal","-"],["Oman","-"],["Ouzbekistan","-"],["Pakistan","-"],["Panama","-"],
["Pays-Bas","-"],["Perou","-"],["Philippines","-"],["Pologne","-"],["Polynesie Francaise","731"],["Portugal","581"],
["Republique Dominicaine","686"],["Republique Tcheque","-"],["Reunion","730"],["Roumanie","-"],["Russie","-"],["Saint Barthelemy","715"],
["Saint Martin","714"],["Sardaigne","729"],["Senegal","572"],["Seychelles","659"],["Sicile","728"],["Singapour","-"],["Slovenie","561"],
["Sri Lanka","704"],["Suede","-"],["Suisse","608"],["Syrie","-"],["Tahiti","-"],["Tanzanie","-"],["Thailande","654"],["Tibet","-"],
["Togo","-"],["Tunisie","649"],["Turquie","648"],["Ukraine","-"],["Venezuela","-"],["Vietnam","-"],["Yemen","-"],["Zimbabwe","-"]);

function getIDofsPays(name)
{   
	name =  name.toLowerCase();
	var nLengthTab = sPays.length; 	
	for(var i=0; i<nLengthTab; i++)
	{	pays = sPays[i][0].toLowerCase();
		if(pays == name) 
		{		
			return sPays[i][1];
		}
	}

	return "-";
}
















