//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 = "";//this.errorUrl;
			map.formAction = "http://www.easyvols.org/aolng/mev/results.jsp";
            map.iframeAction = "http://adserver.aol.fr/?adlink|3.0|516|1032275|1|16|AdId=2125621;BnId=1;link=http://www.easyvols.org/aolng/mev/results.jsp";
			map.formType = "POST";
			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://fr.at.atwola.com/?adlink|3.0|516|1032275|1|16|AdId=2220208;BnId=1;link=";
				map.formType = "GET";
				//map.formType = "POST";
				map.formAction = "http://www.lookvoyages.fr/redir.aspx?mode=catsearch";
                map.iframeAction = "http://fr.at.atwola.com/?adlink|3.0|516|1032275|1|16|AdId=2220208;BnId=1;link=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=400116";
				
				map.formType = "POST";				
				map.formAction = urlAction;
                map.iframeAction = "http://adserver.aol.fr/?adlink|3.0|516|1032275|1|16|AdId=1022018;BnId=1;link=" + urlAction;
				map.trackingUrl = "http://adserver.aol.fr/?adlink|3.0|516|1032275|1|16|AdId=1022018;BnId=1;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.iframeAction;
				//if (map.formType == "GET")
					//uForm.method = 'get';
				//else
					//uForm.method = 'post';

					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;
}

//sejours look voyage destination list
var lvPays = {
	"Acores":"166",
	"Afrique du sud":"6",
	"Algerie":"151",
	"Allemagne":"162",
	"Andalousie":"156",
	"Angleterre":"162",
	"Argentine":"8",
	"Australie":"32",
	"Autriche":"162",
	"Bahamas":"166",
	"Baleares":"215",
	"Bali":"19",
	"Belgique":"162",
	"Benin":"150",
	"Bhoutan":"160",
	"Birmanie":"28",
	"Bolivie":"159",
	"Botswana":"161",
	"Bresil":"9",
	"Bulgarie":"162",
	"Burkina Faso":"161",
	"Cambodge":"160",
	"Canada":"15",
	"Canaries":"156",
	"Cap Vert":"158",
	"Chili":"159",
	"Chine":"17",
	"Chypre":"143",
	"Corfou":"154",
	"Corse":"-",
	"Coree du Sud":"160",
	"Cote d'Ivoire":"161",
	"Crete":"153",
	"Croatie":"144",
	"Cuba":"45",
	"Danemark":"164",
	"Dubai":"186",
	"Ecosse":"164",
	"Egypte":"145",
	"Equateur":"259",
	"Espagne":"156",
	"Estonie":"164",
	"Etats-Unis":"16",
	"Ethiopie":"161",
	"Finlande":"38",
	"France":"-",
	"Grece":"146",
	"Ghana":"161",
	"Guadeloupe":"33",
	"Guatemala":"159",
	"Guyane Francaise":"166",
	"Hong-Kong":"160",
	"Hongrie":"162",
	"Ibiza":"156",
	"Ile de rhodes":"162",
	"Ile maurice":"25",
	"Inde":"18",
	"Indonesie":"19",
	"Iran":"189",
	"Irlande":"164",
	"Islande":"164",
	"Israel":"189",
	"Italie":"149",
	"Japon":"169",
	"Jersey":"162",
	"Jordanie":"186",
	"Kenya":"7",
	"Laos":"160",
	"Lettonie":"164",
	"Lituanie":"164",
	"Liban":"186",
	"Libye":"165",
	"Luxembourg":"-",
	"Madagascar":"161",
	"Madere":"165",
	"Malaisie":"160",
	"Maldives":"163",
	"Mali":"161",
	"Malte":"162",
	"Marie Galante":"-",
	"Maroc":"147",
	"Martinique":"24",
	"Maurice":"25",
	"Mauritanie":"161",
	"Mexique":"12",
	"Mongolie":"160",
	"Myanmar":"28",
	"Namibie":"7",
	"Nicaragua":"159",
	"Niger":"161",
	"Norvege":"164",
	"Nouvelle-Caledonie":"160",
	"Nouvelle-Zelande":"160",
	"Nepal":"160",
	"Oman":"186",
	"Ouzbekistan":"260",
	"Pakistan":"260",
	"Panama":"159",
	"Pays-Bas":"164",
	"Perou":"14",
	"Philippines":"160",
	"Pologne":"164",
	"Polynesie Francaise":"160",
	"Portugal":"162",
	"Republique Dominicaine":"46",
	"Republique Tcheque":"162",
	"Reunion":"25",
	"Roumanie":"162",
	"Russie":"164",
	"Saint Barthelemy":"141",
	"Saint Martin":"16",
	"Sardaigne":"162",
	"Senegal":"150",
	"Seychelles":"25",
	"Sicile":"149",
	"Singapour":"160",
	"Slovenie":"164",
	"Sri Lanka":"21",
	"Suede":"164",
	"Suisse":"162",
	"Syrie":"187",
	"Tahiti":"141",
	"Tanzanie":"7",
	"Thailande":"22",
	"Tibet":"160",
	"Togo":"150",
	"Tunisie":"151",
	"Turquie":"152",
	"Ukraine":"162",
	"Venezuela":"159",
	"Vietnam":"23",
	"Yemen":"186",
	"Zimbabwe":"159"
	};


// 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 "-";
}
















