// ---------------------
// SearchEngineWidget script
// ---------------------

YAHOO.namespace("rpc.SearchEngineWidget"); 

YAHOO.rpc.SearchEngineWidget = function(searchEngineWidgetElementID, searchEngineWidgetCfg) {
	this.init(searchEngineWidgetElementID, searchEngineWidgetCfg);
}

YAHOO.rpc.SearchEngineWidget.FRANCE = "france";
YAHOO.rpc.SearchEngineWidget.FOREIGN = "foreign";
YAHOO.rpc.SearchEngineWidget.ALL = "all";

YAHOO.rpc.SearchEngineWidget.prototype = {
	
	franceFilterList: ['frenchDestination','typeHomeRental','accommodationCapacity','mealPlan','duration','typeProduct','topic','star','supplier','discountPercentage','departureMonth','schoolHoliday'],
	
	foreignFilterList: ['country','departureCity','mealPlan','duration','typeProduct','topic','star','supplier','discountPercentage','departureMonth','schoolHoliday'],
	
	searchEngineType : "all",
	
	target : null,
	
	oDomContainer : null,
	
	putCookieBeforeSubmit : false,
	
	cookieName : "",
	
	cookieValue : "",
	
	cookieDuration : "",
	
	dns: 'http://reservez-plus.com/',
	
	callFunctionBeforeSubmit : false,
	
	callFunctionName : "",
	
	idPartner: null,
	
	idPrivateWhiteLabel: null,
	
	suffixe: "",
	
	printLabel: false,
	
	codeTrafficSource: null,
	
	utmSource: null,
	
	url: null,
	
	sendFormToUrl: false,

	_rendered: false,
	
	init : function(searchEngineWidgetElementID, searchEngineWidgetCfg) {
		var oThis = this;
		this.oDomContainer = document.getElementById(searchEngineWidgetElementID);
	},
	
	show: function() {
		this.oDomContainer.style.display = 'block';
	},
	
	hide: function() {
		this.oDomContainer.style.display = 'none';
	},
	
	render: function() {
		if (!this._rendered) {
			YAHOO.rpc.SearchEngineWidget.SiteExplorer.init(this);
			this._rendered = true;
		}
	},
	
	getUrl: function() {
		return this.url;
	},
	
	setUrl: function(url) {
		this.url = url;
	},
	
	getSendFormToUrl: function() {
		return this.sendFormToUrl;
	},
	
	setSendFormToUrl: function(sendFormToUrl) {
		this.sendFormToUrl = sendFormToUrl;
	},
	
	getPutCookieBeforeSubmit: function() {
		return this.putCookieBeforeSubmit;
	},
	
	setPutCookieBeforeSubmit: function(putCookieBeforeSubmit) {
		this.putCookieBeforeSubmit = putCookieBeforeSubmit;
	},
	
	getCookieName: function() {
		return this.cookieName;
	},
	
	setCookieName: function(cookieName) {
		this.cookieName = cookieName;
	},
	
	getCookieValue: function() {
		return this.cookieValue;
	},
	
	setCookieValue: function(cookieValue) {
		this.cookieValue = cookieValue;
	},
	
	getCookieDuration: function() {
		return this.cookieDuration;
	},
	
	setCookieDuration: function(cookieDuration) {
		this.cookieDuration = cookieDuration;
	},
	
	getCallFunctionBeforeSubmit: function() {
		return this.callFunctionBeforeSubmit;
	},
	
	setCallFunctionBeforeSubmit: function(callFunctionBeforeSubmit) {
		this.callFunctionBeforeSubmit = callFunctionBeforeSubmit;
	},
	
	getCallFunctionName: function() {
		return this.callFunctionName;
	},
	
	setCallFunctionName: function(callFunctionName) {
		this.callFunctionName = callFunctionName;
	},
	
	getFranceFilterList: function() {
		return this.franceFilterList;
	},
	
	setFranceFilterList: function(franceFilterList) {
		this.franceFilterList = franceFilterList;
	},
	
	getForeignFilterList: function() {
		return this.foreignFilterList;
	},
	
	setForeignFilterList: function(foreignFilterList) {
		this.foreignFilterList = foreignFilterList;
	},
	
	getTarget: function() {
		return this.target;
	},
	
	setTarget: function(target) {
		this.target = target;
	},
	
	isPrintLabel: function() {
		return this.labelPrintInSelect;
	},
	
	setPrintLabel: function(labelPrintInSelect) {
		this.labelPrintInSelect = labelPrintInSelect;
	},
	
	getSearchEngineType: function() {
		return this.searchEngineType;
	},
	
	setSearchEngineType: function(searchEngineType) {
		this.searchEngineType = searchEngineType;
	},
	
	getSuffixe: function() {
		return this.suffixe;
	},
	
	setSuffixe: function(suffixe) {
		this.suffixe = suffixe;
	},
	
	getFullDns: function() {
		var dns = this.getDns();
		if(this.idPartner != null && this.idPartner != '' && this.idPartner != "undefined")
			url = url+'&idPartner='+idPartner;
		if(this.idPrivateWhiteLabel != null && this.idPrivateWhiteLabel != "" && this.idPrivateWhiteLabel != "undefined")
			url = url+'&idPrivateWhiteLabel='+this.idPrivateWhiteLabel;
		return dns;
	},
	
	getDns: function() {
		return this.dns;
	},
	
	setDns: function(dns) {
		// Add '/' at the end of the dns 
		if(dns != null && dns.charAt(dns.length-1) != '/') 
			this.dns = dns+'/';
		else if(dns != null)
			this.dns = dns;
	},
	
	getIdPartner: function() {
		return this.idPartner;
	},
	
	setIdPartner: function(idPartner) {
		this.idPartner = idPartner;
	},
	
	getIdPrivatePartner: function() {
		return this.idPrivatePartner;
	},
	
	setIdPrivatePartner: function(idPrivatePartner) {
		this.idPrivatePartner = idPrivatePartner;
	},
	
	getCodeTrafficSource: function() {
		return this.codeTrafficSource;
	},
	
	setCodeTrafficSource: function(codeTrafficSource) {
		this.codeTrafficSource = codeTrafficSource;
	},
	
	getUtmSource: function() {
		return this.utmSource;
	},
	
	setUtmSource: function(utmSource) {
		this.utmSource = utmSource;
	},
	
	repaint: function() {
		if(oDomContainer != null)
			oDomContainer.innerHTML = '';
		this.render();
	}
}



YAHOO.rpc.SearchEngineWidget.SiteExplorer = function() {
	var	tIds = {};
	var current = null;
	var searchEngineWidget = null;
	var loading = null;

	var onSiteExplorerSuccess = function(o) {
		loading = false;
	} 

	var onSiteExplorerFailure = function(o) {
		alert("An error occured while getting datas");
	}

	var getSiteExplorerData = function() {
		var url = searchEngineWidget.getDns()+"SearchEngineFormController?type="+searchEngineWidget.getSearchEngineType()+"&franceFilterList="+searchEngineWidget.getFranceFilterList()+"&foreignFilterList="+searchEngineWidget.getForeignFilterList()+"&callback=YAHOO.rpc.SearchEngineWidget.SiteExplorer.callback";
		
		if(searchEngineWidget.getIdPartner() != null && searchEngineWidget.getIdPartner() != '' && searchEngineWidget.getIdPartner() != "undefined")
			url = url+'&idPartner='+searchEngineWidget.getIdPartner();
		if(searchEngineWidget.getIdPrivatePartner() != null && searchEngineWidget.getIdPrivatePartner() != '' && searchEngineWidget.getIdPrivatePartner() != "undefined")
			url = url+'&idPrivateWhiteLabel='+searchEngineWidget.getIdPrivatePartner();

		url = url+"&ramdom="+Math.random() ;
		
		var transactionObj = YAHOO.util.Get.script(url, {
			onSuccess: onSiteExplorerSuccess,
			onFailure: onSiteExplorerFailure,
			scope	: this
		});

		current = transactionObj.tId;
	}
	return {
		init: function(searchEngineWgt) {
			searchEngineWidget = searchEngineWgt;
			getSiteExplorerData();
		},

		callback: function(results) {
			tIds[current] = true;
			YAHOO.rpc.SearchEngineWidget.AddSearchEngineWidgetToContainer(searchEngineWidget, results);
		}
	}
}();



YAHOO.rpc.SearchEngineWidget.AddSearchEngineWidgetToContainer = function(searchEngineWidget, json) {
	
	// Initialize variables
	var element = searchEngineWidget.oDomContainer;
	
	if(searchEngineWidget.getSearchEngineType() == YAHOO.rpc.SearchEngineWidget.FOREIGN || json.selectableFrenchDestinations == null || json.selectableFrenchDestinations.length == 0)
		element.innerHTML = YAHOO.rpc.SearchEngineWidget.GetSearchEngineForeignForm(searchEngineWidget, json);
	else if(searchEngineWidget.getSearchEngineType() == YAHOO.rpc.SearchEngineWidget.FRANCE)
		element.innerHTML = YAHOO.rpc.SearchEngineWidget.GetSearchEngineFranceForm(searchEngineWidget, json);
	else if(searchEngineWidget.getSearchEngineType() == YAHOO.rpc.SearchEngineWidget.ALL) {
		var html = [];
		html.push('<div id="'+searchEngineWidget.getSuffixe()+'Header">');
		html.push('  <div id="'+searchEngineWidget.getSuffixe()+'ForeignHeader" class="selected" onClick="document.getElementById(\''+searchEngineWidget.getSuffixe()+'ForeignForm\').style.display=\'block\';document.getElementById(\''+searchEngineWidget.getSuffixe()+'FrenchForm\').style.display=\'none\';document.getElementById(\''+searchEngineWidget.getSuffixe()+'ForeignHeader\').className=\'selected\';document.getElementById(\''+searchEngineWidget.getSuffixe()+'FrenchHeader\').className=\'\';">A l\'&eacute;tranger</div>');
		html.push('  <div id="'+searchEngineWidget.getSuffixe()+'FrenchHeader" class="" onClick="document.getElementById(\''+searchEngineWidget.getSuffixe()+'ForeignForm\').style.display=\'none\';document.getElementById(\''+searchEngineWidget.getSuffixe()+'FrenchForm\').style.display=\'block\';document.getElementById(\''+searchEngineWidget.getSuffixe()+'FrenchHeader\').className=\'selected\';document.getElementById(\''+searchEngineWidget.getSuffixe()+'ForeignHeader\').className=\'\';">En France</div>');
		html.push('</div>');
		html.push('<div id="'+searchEngineWidget.getSuffixe()+'Content">');
		html.push('  <div id="'+searchEngineWidget.getSuffixe()+'ForeignForm">');
		html.push(    YAHOO.rpc.SearchEngineWidget.GetSearchEngineForeignForm(searchEngineWidget, json));
		html.push('  </div>');
		html.push('  <div id="'+searchEngineWidget.getSuffixe()+'FrenchForm" style="display:none">');
		html.push(    YAHOO.rpc.SearchEngineWidget.GetSearchEngineFranceForm(searchEngineWidget, json));
		html.push('  </div>');
		html.push('</div>');
		element.innerHTML = html.join('');
	}
	
}

YAHOO.rpc.SearchEngineWidget.GetSearchEngineForeignForm = function(searchEngineWidget, json){

	var selectableCountries = json.selectableCountries;
	var selectableDepartureCities = json.selectableDepartureCities;
	var selectableStars = json.selectableStars;
	var selectableMealPlans = json.selectableForeignMealPlans;
	var selectableDurations = json.selectableForeignDurations;
	var selectableTypeProducts = json.selectableForeignTypeProducts;
	var selectableTopics = json.selectableForeignTopics;
	var selectableSuppliers = json.selectableForeignSuppliers;
	var selectableDiscountPercentages = json.selectableForeignDiscountPercentages;
	var selectableDepartureMonths = json.selectableForeignDepartureMonths;
	var selectableSchoolHolidays = json.selectableForeignSchoolHolidays;


	// Set the page content
	var html = [];
	var url = searchEngineWidget.getDns()+'SearchEngineController';
	var actionUrl = '';

	if(searchEngineWidget.getIdPartner() != null && searchEngineWidget.getIdPartner() != '' && searchEngineWidget.getIdPartner() != "undefined")
		url = url+'?idPartner='+searchEngineWidget.getIdPartner();
	if(searchEngineWidget.getIdPrivatePartner() != null && searchEngineWidget.getIdPrivatePartner() != '' && searchEngineWidget.getIdPrivatePartner() != "undefined")
		url = url+'?idPrivateWhiteLabel='+searchEngineWidget.getIdPrivatePartner();
	
	if(searchEngineWidget.getSendFormToUrl())
		actionUrl = searchEngineWidget.geUrl();
	else
		actionUrl = url;

	if(searchEngineWidget.getTarget() == null)
		html.push('<form action="'+actionUrl+'" method="post" id="'+searchEngineWidget.getSuffixe()+'fillTextForm" onsubmit="YAHOO.rpc.SearchEngineWidget.DoBeforeSubmit('+searchEngineWidget.getPutCookieBeforeSubmit()+',\''+searchEngineWidget.getCookieName()+'\',\''+searchEngineWidget.getCookieValue()+'\',\''+searchEngineWidget.getCookieDuration()+'\','+searchEngineWidget.getCallFunctionBeforeSubmit()+',\''+searchEngineWidget.getCallFunctionName()+'\');return true;">');
	else
		html.push('<form action="'+actionUrl+'" target="'+searchEngineWidget.getTarget()+'" method="post" id="'+searchEngineWidget.getSuffixe()+'fillTextForm" onsubmit="YAHOO.rpc.SearchEngineWidget.DoBeforeSubmit('+searchEngineWidget.getPutCookieBeforeSubmit()+',\''+searchEngineWidget.getCookieName()+'\',\''+searchEngineWidget.getCookieValue()+'\',\''+searchEngineWidget.getCookieDuration()+'\','+searchEngineWidget.getCallFunctionBeforeSubmit()+',\''+searchEngineWidget.getCallFunctionName()+'\');return true;">');

	for (var j = 0, len = searchEngineWidget.getForeignFilterList().length; j < len; ++j) {
		var filter = searchEngineWidget.getForeignFilterList()[j];

		if(filter == 'country') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divcountry">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labelcountry">Destination</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectcountry" name="country">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectcountry" name="country">');
				html.push('<option class="defaultOption" value="Indifferent">Destination</option>');
			}
			if(selectableCountries != null) {
				for (var i = 0, len1 = selectableCountries.length; i < len1; ++i) { 
					var country = selectableCountries[i];
					if(country.name.charCodeAt(0) != 32 && country.name.charCodeAt(0) != 45 && country.name != "Indifférent")
						html.push('<option class="upperCase" value="'+country.code+'">'+country.name+'</option>');
					else
						html.push('<option value="'+country.code+'">'+country.name+'</option>');
					
				}
			}
			html.push('</select>');
			html.push('</div>');
		}

		else if(filter == 'mealPlan') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divmealPlan">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labelmealPlan">Prestation</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectmealPlan" name="mealPlan">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectmealPlan" name="mealPlan">');
				html.push('<option class="defaultOption" value="Indifferent">Prestation</option>');
			}
			if(selectableMealPlans != null) {
				for (var i = 0, len1 = selectableMealPlans.length; i < len1; ++i) { 
					var mealPlan = selectableMealPlans[i];
					html.push('<option value="'+mealPlan.code+'">'+mealPlan.name+'</option>');
				}
			}
			html.push('</select>');
			html.push('</div>');
		}

		else if(filter == 'departureCity') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divdepartureCity">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labeldepartureCity">Ville de d&eacute;part</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectdepartureCity" name="departureCity">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectpartureCity" name="departureCity">');
				html.push('<option class="defaultOption" value="Indifferent">Ville de d&eacute;part</option>');
			}
			if(selectableDepartureCities != null && selectableDepartureCities.length != 0) {
				html.push('<optgroup label="Top villes de d&eacute;part">');
				for (var i = 0, len1 = selectableDepartureCities.top.length; i < len1; ++i) { 
					var departureCity = selectableDepartureCities.top[i];
					html.push('<option value="'+departureCity.code+'">'+departureCity.name+'</option>');
				}
				html.push('</optgroup>');
			}
			if(selectableDepartureCities != null) {
				html.push('<optgroup label="Toutes les villes">');
				for (var i = 0, len1 = selectableDepartureCities.all.length; i < len1; ++i) { 
					var departureCity = selectableDepartureCities.all[i];
					html.push('<option value="'+departureCity.code+'">'+departureCity.name+'</option>');
				}
				html.push('</optgroup>');
			}
			html.push('</select>');
			html.push('</div>');
		}

		else if(filter == 'duration') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divduration">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labelduration">Dur&eacute;e</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectduration" name="duration">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectduration" name="duration">');
				html.push('<option class="defaultOption" value="Indifferent">Dur&eacute;e</option>');
			}
			if(selectableDurations != null) {
				for (var i = 0, len1 = selectableDurations.length; i < len1; ++i) {
					var duration = selectableDurations[i];
					html.push('<option value="'+duration.code+'">'+duration.name+'</option>');
				}
			}
			html.push('</select>');
			html.push('</div>');
		}

		else if(filter == 'typeProduct') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divtypeProduct">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labeltypeProduct">Type de produit</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selecttypeProduct" name="typeProduct">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selecttypeProduct" name="typeProduct">');
				html.push('<option class="defaultOption" value="Indifferent">Type de produit</option>');
			}
			if(selectableTypeProducts != null) {
				for (var i = 0, len1 = selectableTypeProducts.length; i < len1; ++i) { 
					var typeProduct = selectableTypeProducts[i];
					html.push('<option value="'+typeProduct.code+'">'+typeProduct.name+'</option>');
				}
			}
			html.push('</select>');
			html.push('</div>');
		}

		else if(filter == 'topic') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divtopic">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labeltopic">Th&eacute;matique</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selecttopic" name="topic">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selecttopic" name="topic">');
				html.push('<option class="defaultOption" value="Indifferent">Th&eacute;matique</option>');
			}
			if(selectableTopics != null) {
				for (var i = 0, len1 = selectableTopics.length; i < len1; ++i) {
					var topic = selectableTopics[i];
					html.push('<option value="'+topic.code+'">'+topic.name+'</option>');
				}
			}
			html.push('</select>');
			html.push('</div>');
		}

		else if(filter == 'star') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divstar">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labelstar">Cat&eacute;gorie</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectstar" name="star">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectstar" name="star">');
				html.push('<option class="defaultOption" value="Indifferent">Cat&eacute;gorie</option>');
			}
			if(selectableStars != null) {
				for (var i = 0, len1 = selectableStars.length; i < len1; ++i) { 
					var star = selectableStars[i];
					html.push('<option value="'+star.code+'">'+star.name+'</option>');
				}
			}
			html.push('</select>');
			html.push('</div>');
		}

		else if(filter == 'supplier') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divsupplier">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labelsupplier">Tour op&eacute;rateur</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectsupplier" name="supplier">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectsupplier" name="supplier">');
				html.push('<option class="defaultOption" value="Indifferent">Tour op&eacute;rateur</option>');
			}
			if(selectableSuppliers != null) {
				for (var i = 0, len1 = selectableSuppliers.length; i < len1; ++i) {
					var supplier = selectableSuppliers[i];
					html.push('<option value="'+supplier.code+'">'+supplier.name+'</option>');
				}
			}
			html.push('</select>');
			html.push('</div>');
		}

		else if(filter == 'discountPercentage') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divdiscountPercentage">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labeldiscountPercentage">Promotion</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectdiscountPercentage" name="discountPercentage">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectdiscountPercentage" name="discountPercentage">');
				html.push('<option class="defaultOption" value="Indifferent">Promotion</option>');
			}
			if(selectableDiscountPercentages != null) {
				for (var i = 0, len1 = selectableDiscountPercentages.length; i < len1; ++i) {
					var discountPercentage = selectableDiscountPercentages[i];
					html.push('<option value="'+discountPercentage.code+'">'+discountPercentage.name+'</option>');
				}
			}
			html.push('</select>');
			html.push('</div>');
		}

		else if(filter == 'departureMonth') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divdepartureMonth">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labeldepartureMonth">Mois de d&eacute;part</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectdepartureMonth" name="departureMonth">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectdepartureMonth" name="departureMonth">');
				html.push('<option class="defaultOption" value="Indifferent">Mois de d&eacute;part</option>');
			}
			if(selectableDepartureMonths != null) {
				for (var i = 0, len1 = selectableDepartureMonths.length; i < len1; ++i) {
					var departureMonth = selectableDepartureMonths[i];
					html.push('<option value="'+departureMonth.code+'">'+departureMonth.name+'</option>');
				}
			}
			html.push('</select>');
			html.push('</div>');
		}

		else if(filter == 'schoolHoliday') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divschoolHoliday">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labelschoolHoliday">P&eacute;riode scolaire</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectschoolHoliday" name="schoolHolidays">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectschoolHoliday" name="schoolHolidays">');
				html.push('<option class="defaultOption" value="Indifferent">P&eacute;riode scolaire</option>');
			}
			if(selectableSchoolHolidays != null) {
				for (var i = 0, len1 = selectableSchoolHolidays.length; i < len1; ++i) {
					var schoolHoliday = selectableSchoolHolidays[i];
					html.push('<option value="'+schoolHoliday.code+'">'+schoolHoliday.name+'</option>');
				}
			}
			html.push('</select>');
			html.push('</div>');
		}
	}
	if(searchEngineWidget.getCodeTrafficSource() != null && searchEngineWidget.getUtmSource() != null) {
		html.push('<input type="hidden" name="codeTrafficSource" value="'+searchEngineWidget.getCodeTrafficSource()+'" />');
		html.push('<input type="hidden" name="utm_source" value="'+searchEngineWidget.getUtmSource()+'" />');
	}
	html.push('<input type="hidden" name="actionType" value="generalWithRedirect" />');
	html.push('<input type="hidden" name="searchEngineType" value="foreign" />');
	html.push('<input type="hidden" name="destinationUrl" value="'+url+'" />');
	html.push('<input id="'+searchEngineWidget.getSuffixe()+'fullTextSubmitForForeign" class="button" type="submit" name="Chercher" value="Chercher" />');
	html.push('</form>');

	return html.join('');
}

YAHOO.rpc.SearchEngineWidget.GetSearchEngineFranceForm = function(searchEngineWidget, json) {

	var selectableFrenchDestinations = json.selectableFrenchDestinations;
	var selectableTypeHomeRentals = json.selectableTypeHomeRentals;
	var selectableAccommodationCapacities = json.selectableAccommodationCapacities;
	var selectableMealPlans = json.selectableFrenchMealPlans;
	var selectableDurations = json.selectableFrenchDurations;
	var selectableTypeProducts = json.selectableFrenchTypeProducts;
	var selectableTopics = json.selectableFrenchTopics;
	var selectableSuppliers = json.selectableFrenchSuppliers;
	var selectableDiscountPercentages = json.selectableFrenchDiscountPercentages;
	var selectableDepartureMonths = json.selectableFrenchDepartureMonths;
	var selectableSchoolHolidays = json.selectableFrenchSchoolHolidays;


	// Set the page content
	var html = [];
	var url = searchEngineWidget.getDns()+'SearchEngineController';
	var actionUrl = '';

	if(searchEngineWidget.getIdPartner() != null && searchEngineWidget.getIdPartner() != '' && searchEngineWidget.getIdPartner() != "undefined")
		url = url+'?idPartner='+searchEngineWidget.getIdPartner();
	if(searchEngineWidget.getIdPrivatePartner() != null && searchEngineWidget.getIdPrivatePartner() != '' && searchEngineWidget.getIdPrivatePartner() != "undefined")
		url = url+'?idPrivateWhiteLabel='+searchEngineWidget.getIdPrivatePartner();
	
	if(searchEngineWidget.getSendFormToUrl())
		actionUrl = searchEngineWidget.geUrl();
	else
		actionUrl = url;

	if(searchEngineWidget.getTarget() == null)
		html.push('<form action="'+actionUrl+'" method="post" id="'+searchEngineWidget.getSuffixe()+'fillTextForm" onsubmit="YAHOO.rpc.SearchEngineWidget.DoBeforeSubmit('+searchEngineWidget.getPutCookieBeforeSubmit()+',\''+searchEngineWidget.getCookieName()+'\',\''+searchEngineWidget.getCookieValue()+'\',\''+searchEngineWidget.getCookieDuration()+'\','+searchEngineWidget.getCallFunctionBeforeSubmit()+',\''+searchEngineWidget.getCallFunctionName()+'\');return true;">');
	else
		html.push('<form action="'+actionUrl+'" target="'+searchEngineWidget.getTarget()+'" method="post" id="'+searchEngineWidget.getSuffixe()+'fillTextForm" onsubmit="YAHOO.rpc.SearchEngineWidget.DoBeforeSubmit('+searchEngineWidget.getPutCookieBeforeSubmit()+',\''+searchEngineWidget.getCookieName()+'\',\''+searchEngineWidget.getCookieValue()+'\',\''+searchEngineWidget.getCookieDuration()+'\','+searchEngineWidget.getCallFunctionBeforeSubmit()+',\''+searchEngineWidget.getCallFunctionName()+'\');return true;">');

	for (var j = 0, len = searchEngineWidget.getFranceFilterList().length; j < len; ++j) {
		var filter = searchEngineWidget.getFranceFilterList()[j];

		if(filter == 'frenchDestination') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divfrenchDestination">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labelfrenchDestination">Destination</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectfrenchDestination" name="france">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectfrenchDestination" name="france">');
				html.push('<option class="defaultOption" value="Indifferent">Destination</option>');
			}
			if(selectableFrenchDestinations != null) {
				for (var i = 0, len1 = selectableFrenchDestinations.length; i < len1; ++i) { 
					var frenchDestination = selectableFrenchDestinations[i];
					html.push('<option value="'+frenchDestination.code+'">'+frenchDestination.name+'</option>');
				}
			}
			html.push('</select>');
			html.push('</div>');
		}
		
		if(filter == 'typeHomeRental') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divtypeHomeRental">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labeltypeHomeRental">Destination</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selecttypeHomeRental" name="typeHomeRental">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selecttypeHomeRental" name="typeHomeRental">');
				html.push('<option class="defaultOption" value="Indifferent">Choix de l\'h&eacute;bergement</option>');
			}
			if(selectableTypeHomeRentals != null) {
				for (var i = 0, len1 = selectableTypeHomeRentals.length; i < len1; ++i) { 
					var typeHomeRental = selectableTypeHomeRentals[i];
					html.push('<option value="'+typeHomeRental.code+'">'+typeHomeRental.name+'</option>');
				}
			}
			html.push('</select>');
			html.push('</div>');
		}
		
		if(filter == 'accommodationCapacity') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divaccommodationCapacity">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labelaccommodationCapacity">Destination</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectaccommodationCapacity" name="accommodationCapacity">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectaccommodationCapacity" name="accommodationCapacity">');
				html.push('<option class="defaultOption" value="Indifferent">Nombre de personnes</option>');
			}
			if(selectableAccommodationCapacities != null) {
				for (var i = 0, len1 = selectableAccommodationCapacities.length; i < len1; ++i) { 
					var accommodationCapacity = selectableAccommodationCapacities[i];
					html.push('<option value="'+accommodationCapacity.code+'">'+accommodationCapacity.name+'</option>');
				}
			}
			html.push('</select>');
			html.push('</div>');
		}

		else if(filter == 'mealPlan') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divmealPlan">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labelmealPlan">Prestation</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectmealPlan" name="mealPlan">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectmealPlan" name="mealPlan">');
				html.push('<option class="defaultOption" value="Indifferent">Prestation</option>');
			}
			if(selectableMealPlans != null) {
				for (var i = 0, len1 = selectableMealPlans.length; i < len1; ++i) { 
					var mealPlan = selectableMealPlans[i];
					html.push('<option value="'+mealPlan.code+'">'+mealPlan.name+'</option>');
				}
			}
			html.push('</select>');
			html.push('</div>');
		}

		else if(filter == 'duration') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divduration">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labelduration">Dur&eacute;e</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectduration" name="duration">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectduration" name="duration">');
				html.push('<option class="defaultOption" value="Indifferent">Dur&eacute;e</option>');
			}
			if(selectableDurations != null) {
				for (var i = 0, len1 = selectableDurations.length; i < len1; ++i) {
					var duration = selectableDurations[i];
					html.push('<option value="'+duration.code+'">'+duration.name+'</option>');
				}
			}
			html.push('</select>');
			html.push('</div>');
		}

		else if(filter == 'typeProduct') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divtypeProduct">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labeltypeProduct">Type de produit</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selecttypeProduct" name="typeProduct">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selecttypeProduct" name="typeProduct">');
				html.push('<option class="defaultOption" value="Indifferent">Type de produit</option>');
			}
			if(selectableTypeProducts != null) {
				for (var i = 0, len1 = selectableTypeProducts.length; i < len1; ++i) { 
					var typeProduct = selectableTypeProducts[i];
					html.push('<option value="'+typeProduct.code+'">'+typeProduct.name+'</option>');
				}
			}
			html.push('</select>');
			html.push('</div>');
		}

		else if(filter == 'topic') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divtopic">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labeltopic">Th&eacute;matique</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selecttopic" name="topic">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selecttopic" name="topic">');
				html.push('<option class="defaultOption" value="Indifferent">Th&eacute;matique</option>');
			}
			if(selectableTopics != null) {
				for (var i = 0, len1 = selectableTopics.length; i < len1; ++i) {
					var topic = selectableTopics[i];
					html.push('<option value="'+topic.code+'">'+topic.name+'</option>');
				}
			}
			html.push('</select>');
			html.push('</div>');
		}

		else if(filter == 'supplier') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divsupplier">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labelsupplier">Tour op&eacute;rateur</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectsupplier" name="supplier">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectsupplier" name="supplier">');
				html.push('<option class="defaultOption" value="Indifferent">Tour op&eacute;rateur</option>');
			}
			if(selectableSuppliers != null) {
				for (var i = 0, len1 = selectableSuppliers.length; i < len1; ++i) {
					var supplier = selectableSuppliers[i];
					html.push('<option value="'+supplier.code+'">'+supplier.name+'</option>');
				}
			}
			html.push('</select>');
			html.push('</div>');
		}

		else if(filter == 'discountPercentage') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divdiscountPercentage">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labeldiscountPercentage">Promotion</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectdiscountPercentage" name="discountPercentage">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectdiscountPercentage" name="discountPercentage">');
				html.push('<option class="defaultOption" value="Indifferent">Promotion</option>');
			}
			if(selectableDiscountPercentages != null) {
				for (var i = 0, len1 = selectableDiscountPercentages.length; i < len1; ++i) {
					var discountPercentage = selectableDiscountPercentages[i];
					html.push('<option value="'+discountPercentage.code+'">'+discountPercentage.name+'</option>');
				}
			}
			html.push('</select>');
			html.push('</div>');
		}

		else if(filter == 'departureMonth') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divdepartureMonth">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labeldepartureMonth">Mois de d&eacute;part</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectdepartureMonth" name="departureMonth">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectdepartureMonth" name="departureMonth">');
				html.push('<option class="defaultOption" value="Indifferent">Mois de d&eacute;part</option>');
			}
			if(selectableDepartureMonths != null) {
				for (var i = 0, len1 = selectableDepartureMonths.length; i < len1; ++i) {
					var departureMonth = selectableDepartureMonths[i];
					html.push('<option value="'+departureMonth.code+'">'+departureMonth.name+'</option>');
				}
			}
			html.push('</select>');
			html.push('</div>');
		}

		else if(filter == 'schoolHoliday') {
			html.push('<div id="'+searchEngineWidget.getSuffixe()+'divschoolHoliday">');
			if(searchEngineWidget.isPrintLabel() == true) {
				html.push('<label id="'+searchEngineWidget.getSuffixe()+'labelschoolHoliday">P&eacute;riode scolaire</label>');
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectschoolHoliday" name="schoolHolidays">');
				html.push('<option class="defaultOption" value="Indifferent">Indiff&eacute;rent</option>');
			}
			else {
				html.push('<select id="'+searchEngineWidget.getSuffixe()+'selectschoolHoliday" name="schoolHolidays">');
				html.push('<option class="defaultOption" value="Indifferent">P&eacute;riode scolaire</option>');
			}
			if(selectableSchoolHolidays != null) {
				for (var i = 0, len1 = selectableSchoolHolidays.length; i < len1; ++i) {
					var schoolHoliday = selectableSchoolHolidays[i];
					html.push('<option value="'+schoolHoliday.code+'">'+schoolHoliday.name+'</option>');
				}
			}
			html.push('</select>');
			html.push('</div>');
		}
	}

	html.push('<input type="hidden" name="actionType" value="generalWithRedirect" />');
	html.push('<input type="hidden" name="searchEngineType" value="france" />');
	html.push('<input type="hidden" name="destinationUrl" value="'+url+'" />');
	html.push('<input id="'+searchEngineWidget.getSuffixe()+'fullTextSubmitForFrance" class="button" type="submit" name="Chercher" value="Chercher" />');
	html.push('</form>');

	return html.join('');
}

YAHOO.rpc.SearchEngineWidget.DoBeforeSubmit = function(putCookieBeforeSubmit, cookieName, cookieValue, cookieDuration, callFunctionBeforeSubmit, callFunctionName) {
	if (putCookieBeforeSubmit) {
		var expDate = new Date();
		expDate.setTime(expDate.getTime() + (parseInt(cookieDuration,10) * 24 * 3600 * 1000));
	    document.cookie = cookieName + "=" + escape(cookieValue) + ";expires=" + expDate.toGMTString();
	}
	if (callFunctionBeforeSubmit) {
		eval(callFunctionName+'()');
	}
}
