/*  Javascript used throughout fodors.com
Compiled by Bryan Cronk
Created: 5/20/2010
Updated: 5/20/2010


Contains:
	Login Box
	Campaign Nav
	Homepage Slider
	Campaign Commander Form Validation
	Booking Widget
	
----------------------------------------*/


/* Login Box */
	$(document).ready(function(){
		$("a.login-link").click(function(){
			if ($(".logged-out").is(":hidden")) {
				$(".log-in").css("display","none");
				$(".close-link").css("display","block");
				$(".logged-out").slideDown("fast");
				return false;
			} else {
				$(".logged-out").slideUp("fast");
				return false;
			}
		});
		$("a.close-link").click(function(){
				$(".close-link").css("display","none");
				$(".logged-out").slideUp("fast");
				$(".log-in").css("display","block");
				return false;
		});
	});
	
/* Open External Links in a new window */
$(document).ready(function() {
  $("a[href^='http:']:not([href*='" + window.location.host + "'])").each(
    function(){
      if(this.href.indexOf(location.hostname) == -1) {
        $(this).attr('target', '_blank');
      }
    }
  )
});

/* Campaign Nav */
	$(document).ready(function(){
		$("ul#campaign li:first").append("<img src='/images/icon-plus-blue.png' class='icon-plus' width='9' height='9' />");
		$("ul#campaign li a:first, ul#campaign li img").click(function(){
			if ($("ul#campaign li ul").is(":hidden")) {
				$("ul#campaign li ul").show("fast");
				return false;
			} else {
				$("ul#campaign li ul").hide("fast");
				return false;
			}
		});
	});
	


/* Campaign Commander Form Validation */
function isEmail(emailAddress){
emailAddressValue=emailAddress.value.toLowerCase();
var countryTLDs=/^(ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$/;
var gTLDs=/^(aero|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|jobs)$/;
var basicAddress=/^(.+)@(.+)$/;
var specialChars='\\(\\)><@,;:\\\\\\\"\\.\\[\\]';
var validChars='\[^\\s'+specialChars+'\]';
var validCharset='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\'-_.';
var quotedUser='(\"[^\"]*\")';
var atom=validChars+'+';
var word='('+atom+'|'+quotedUser+')';
var validUser=new RegExp('^'+word+'(\.'+word+')*$');
var symDomain=new RegExp('^'+atom+'(\.'+atom+')*$');
var matchArray=emailAddressValue.match(basicAddress);
if(emailAddress.value==''||emailAddress==null){
return true;
}
if(matchArray==null){
alert('The Email address doesn\'t seem to be correct,\nplease check syntax.');
emailAddress.focus();
return false;
}else{
var user=matchArray[1];
var domain=matchArray[2];
for(i=0;i<user.length;i++){
if(validCharset.indexOf(user.charAt(i))==-1){
alert('The Email address contains invalid characters,\nplease check the username.');
emailAddress.focus();
return false;
}
}
for(i=0;i<domain.length;i++){
if(validCharset.indexOf(domain.charAt(i))==-1){
alert('The Email address contains invalid characters,\nplease check the domain.');
emailAddress.focus();
return false;
}
}
if(user.match(validUser)==null){
alert('The Email address doesn\'t seem to be correct,\nplease check the username.');
emailAddress.focus();
return false;
}
var atomPat=new RegExp('^'+atom+'$');
var domArr=domain.split('.');
var len=domArr.length;
for(i=0;i<len;i++){
if(domArr[i].search(atomPat)==-1){
alert('The Email address doesn\'t seem to be correct,\nplease check the domain name.');
emailAddress.focus();
return false;
}
}
if((domArr[domArr.length-1].length==2)&&(domArr[domArr.length-1].search(countryTLDs)==-1)){
alert('The Email address doesn\'t seem to be correct,\nplease check domain suffix.');
emailAddress.focus();
return false;
}
if((domArr[domArr.length-1].length>2)&&(domArr[domArr.length-1].search(gTLDs)==-1)){
alert('The Email address doesn\'t seem to be correct,\nplease check domain suffix.');
emailAddress.focus();
return false;
}
if((domArr[domArr.length-1].length<2)||(domArr[domArr.length-1].length>6)){
alert('The Email address doesn\'t seem to be correct,\nplease check domain suffix.');
emailAddress.focus();
return false;
}
if(len<2){
alert('The Email address doesn\'t seem to be correct,\nplease check missing hostname.');
emailAddress.focus();
return false;
}
}
return true;
}

String.prototype.trim = function() { return this.replace(/^\s*(\b.*\b|)\s*$/, "$1");}

function mandatoryText(input,fieldName) {
	if (input.value.trim()==''||input==null) {
		alert('Please enter your '+fieldName+'.');
		input.focus();
		return false;
	} else {
		return true;
	}
}

function emailConfirmation(email,email2) {
	if (email.value.trim()== email2.value.trim()) {
		return true;
	} else {
		alert('E-mail confirmation must match e-mail.');
		email2.focus();
		return false;
	}
}

function validateZipCode(input) {
	return true;
}

function optionalText(input,validationFunction) {
	if (input.value.trim() == '' || input.value == input.defaultValue) {
		//prevent zip from being submitted where null or default, so as not to overwrite existing value
		input.removeAttribute("name");
	}
	if (input == null || input.value.trim() == '') {
		return true;
	} else {
		if (validationFunction(input)) {
			return true;
		} else {
			return false;
		}
	}
}

function isSomethingChecked(f) {
	for (i=0;i<f.elements.length;i++) {
		if ((f.elements[i].type == 'checkbox') && (f.elements[i].checked)) {
			return true;
		}
	}
	alert('At least one box must be checked.');
	return false;
}

function updateTimestamps(f) {
	for (i=0;i<f.elements.length;i++) {
		if ((f.elements[i].type == 'checkbox') && (!f.elements[i].checked)) {
			var timestamp = 'TS_' + f.elements[i].name;
			var node = document.getElementById(timestamp);
			if (node) {
				node.removeAttribute("name");
			}
		}
	}
}

function validForm() {
	if (!mandatoryText(document.getElementById('EMAIL_FIELD'), 'E-mail')) return;
	if (!isEmail(document.getElementById('EMAIL_FIELD'))) return;
	if (!optionalText(document.getElementById('ZIPCODE_FIELD'),validateZipCode)) return;
	if (!isSomethingChecked(document.getElementById('emvForm'))) return;
	updateTimestamps(document.getElementById('emvForm'));
	document.getElementById('emvForm').submit();
}

function validFormPopup() {
	if (!mandatoryText(document.getElementById('EMAIL_FIELD'), 'E-mail')) return;
	if (!isEmail(document.getElementById('EMAIL_FIELD'))) return;
	if (!optionalText(document.getElementById('ZIPCODE_FIELD'),validateZipCode)) return;
	document.getElementById('emvForm').submit();
}

function validFormUnsub() {
	if (!mandatoryText(document.getElementById('EMAIL_FIELD'), 'E-mail')) return;
	if (!isEmail(document.getElementById('EMAIL_FIELD'))) return;
	if (!isSomethingChecked(document.getElementById('emvForm'))) return;
	updateTimestamps(document.getElementById('emvForm'));
	document.getElementById('emvForm').submit();
}

function clearText(thefield) { 
	if (thefield.defaultValue == thefield.value) {
		thefield.value = "";
	} else {
		thefield.value = thefield.defaultValue;
	}
}


/*Booking Widget */
function getXmlHttp() {
	if ( !window.XMLHttpRequest ) {
		window.XMLHttpRequest = function() {
			var types = [
				"Microsoft.XMLHTTP",
				"MSXML2.XMLHTTP.5.0",
				"MSXML2.XMLHTTP.4.0",
				"MSXML2.XMLHTTP.3.0",
				"MSXML2.XMLHTTP"
			];
			for ( var i = 0; i < types.length; i++ ) {
				try {
					return new ActiveXObject( types[ i ] );
				}
				catch( e ) {}
			}
			return undefined;
		};
	}
	if ( window.XMLHttpRequest ) return new XMLHttpRequest();
}

function callback(xh,displayfunction) {
	var xh = xh;
	if (xh.readyState == 4) {
		if (xh.status && (xh.status != 200)) {
			
		}
		else {
			
			displayfunction(xh);
		}
	}
}

function loadCanvas(url,params,displayfunction) {
	var xh = getXmlHttp();
	xh.open("POST",url,true);
	xh.onreadystatechange = function() { callback(xh,displayfunction); };
	xh.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	xh.send(params);
}

function processAirport(airport_code,airport_id,url_type) {
	var airport_id = airport_id;
	var airport_code = airport_code;
	var type = url_type;
	/*
	if (window.type == "from") {
		window.opener.document.getElementById("from").select();
		window.opener.document.getElementById("from").value = airport_code;
	} else if (window.type == "to") {
		window.opener.document.getElementById("to").select();
		window.opener.document.getElementById("to").value = airport_code;
	}
	*/
	window.opener.document.getElementById(type).select();
	window.opener.document.getElementById(type).value = airport_code;
	window.close();
}

function processCountry(value) {
	var arr = value.split('_',2);
	var country_id = arr[0];
	var use_states = arr[1];
	if (use_states == '1') {
		var tmp = document.getElementById("cities");
		tmp.style.display = "none";
loadCanvas('/lib/data_widget_state.cfm','country_id=' + country_id,createState);
	} else {
		var tmp = document.getElementById("states");
		tmp.style.display = "none";
loadCanvas('/lib/data_widget_city.cfm','country_id=' + country_id,createCity);
	}
}

function processState(state) {
	var state_id = state.value;
	loadCanvas('/lib/data_widget_city.cfm','state_id=' + state_id,createCity);
}

function processCity(city) {
	window.opener.document.getElementById("location").value = city.value;
	window.opener.document.getElementById("location_id").value = city.getAttribute("location_id");
	window.opener.document.getElementById("location_name").value = city.getAttribute("location_name");
	window.opener.document.getElementById("state_code").value = city.getAttribute("state_code");
	window.opener.document.getElementById("country_code").value = city.getAttribute("country_code");
	window.opener.refreshHotelPartners();
	window.opener.refreshRentalPartners();
	window.close();
}

function createState(xh) {
	var xh = xh;
	var canvas = document.getElementById("states");
	var arr = eval("(" + xh.responseText + ")");
	var form1 = '<form><label>State: </label><select name="state" onchange="processState( state.options[state.selectedIndex]);"><option disabled selected>Select a state</option>';
	var form2 = "";
	var form3 = '</select></form>';
	for (i in arr) {
		var tmp = '<option value="' + arr[i].state_id + '">' + arr[i].state_name + '</option>';
		form2 = form2 + tmp;
	}
	if (form2.length > 0) {
		canvas.innerHTML = form1 + form2 + form3;
		canvas.style.display = "block";
	}
}

function createCity(xh) {
	var xh = xh;
	var canvas = document.getElementById("cities");
	var arr = eval("(" + xh.responseText + ")");
	var form1 = '<form><label>City: </label><select name="city" onchange="processCity( city.options[city.selectedIndex]);"><option disabled selected>Select a city</option>';
	var form2 = "";
	var form3 = '</select></form>';
	for (i in arr) {
		var tmp = '<option value="' + arr[i].location_value + '" location_id="' + arr[i].location_id + '" state_code="' + arr[i].state_code + '" country_code="' + arr[i].country_code + '" location_name="' + arr[i].location_name + '">' + arr[i].location_text + '</option>';
		form2 = form2 + tmp;
	}
	if (form2.length > 0) {
		canvas.innerHTML = form1 + form2 + form3;
		canvas.style.display = "block";
	}
}

function getProviders() {
	loadCanvas('/lib/data_widget_partner_section.cfm','section_id=1',listHotelProviders);
	loadCanvas('/lib/data_widget_partner_section.cfm','section_id=2',listFlightProviders);
	loadCanvas('/lib/data_widget_partner_section.cfm','section_id=4',listPackageProviders);
	loadCanvas('/lib/data_widget_partner_section.cfm','section_id=5',listCarRentalProviders);
	loadCanvas('/lib/data_widget_partner_section.cfm','section_id=6',listCruiseProviders);
	loadCanvas('/lib/data_widget_partner_section.cfm','section_id=7',listRentalProviders);
}

function listHotelProviders(xh) {
	var arr = eval("(" + xh.responseText + ")");
	var canvas = document.getElementById("hotel-providers");
	if (canvas.hasChildNodes()) {
		while (canvas.childNodes.length >= 1) {
			canvas.removeChild(canvas.firstChild);
		} 
	}
	listProviders(canvas,arr);
}

function listFlightProviders(xh) {
	var arr = eval("(" + xh.responseText + ")");
	var canvas = document.getElementById("flight-providers");
	if (canvas.hasChildNodes()) {
		while (canvas.childNodes.length >= 1) {
			canvas.removeChild(canvas.firstChild);
		} 
	}
	listProviders(canvas,arr);
}

function listRentalProviders(xh) {
	var arr = eval("(" + xh.responseText + ")");
	var canvas = document.getElementById("rental-providers");
	if (canvas.hasChildNodes()) {
		while (canvas.childNodes.length >= 1) {
			canvas.removeChild(canvas.firstChild);
		} 
	}
	listProviders(canvas,arr);
}

function listPackageProviders(xh) {
	var arr = eval("(" + xh.responseText + ")");
	var canvas = document.getElementById("package-providers");
	if (canvas.hasChildNodes()) {
		while (canvas.childNodes.length >= 1) {
			canvas.removeChild(canvas.firstChild);
		} 
	}
	listProviders(canvas,arr);
}

function listCarRentalProviders(xh) {
	var arr = eval("(" + xh.responseText + ")");
	var canvas = document.getElementById("carrental-providers");
	if (canvas.hasChildNodes()) {
		while (canvas.childNodes.length >= 1) {
			canvas.removeChild(canvas.firstChild);
		} 
	}
	listProviders(canvas,arr);
}

function listCruiseProviders(xh) {
	var arr = eval("(" + xh.responseText + ")");
	var canvas = document.getElementById("cruise-providers");
	if (canvas.hasChildNodes()) {
		while (canvas.childNodes.length >= 1) {
			canvas.removeChild(canvas.firstChild);
		} 
	}
	listProviders(canvas,arr);
}

function listProviders(canvas,arr) {
	var canvas = canvas;
	var arr = arr;
	for (i in arr) {
		var li = document.createElement("li");
		if (arr[i].prechecked == '1') {
			var li_class = document.createAttribute("class");
			li_class.value = "checked";
			li.setAttributeNode(li_class);
		}
		var input = document.createElement("input");
		var input_value = document.createAttribute("value");
		input_value.value = arr[i].partner_id;
		input.setAttributeNode(input_value);
		var input_id = document.createAttribute("id");
		input_id.value = arr[i].partner_class;
		input.setAttributeNode(input_id);
		var input_type = document.createAttribute("type");
		input_type.value = "checkbox";
		input.setAttributeNode(input_type);
		var input_name = document.createAttribute("name");
		input_name.value = "providers";
		input.setAttributeNode(input_name);
		if (arr[i].prechecked == "1") {
			var input_checked = document.createAttribute("checked");
			input_checked.value = "checked";
			input.setAttributeNode(input_checked);
		}
		if (arr[i].param1) {
			var param1 = document.createAttribute("param1");
			param1.value = arr[i].param1;
			input.setAttributeNode(param1);
		}
		if (arr[i].param2) {
			var param2 = document.createAttribute("param2");
			param2.value = arr[i].param2;
			input.setAttributeNode(param2);
		}
		var label = document.createElement("label");
		var label_class = document.createAttribute("class");
		label_class.value = arr[i].partner_class;
		label.setAttributeNode(label_class);
		var label_for = document.createAttribute("for");
		label_for.value = arr[i].partner_class;
		label.setAttributeNode(label_for);
		li.appendChild(input);
		li.appendChild(label);
		canvas.appendChild(li);
	}
}


function refreshAirportPartners(section_id,from,to,displayfunction) {
	var from_airport = document.getElementById(from).value;
	var to_airport = document.getElementById(to).value;
	if (from_airport && to_airport) {
		loadCanvas('/lib/data_widget_partner_airport_from_to.cfm','iata_from=' + from_airport +'&iata_to=' + to_airport + "&section_id=" + section_id,displayfunction);
return true;
	} else if (from_airport) {
		loadCanvas('/lib/data_widget_partner_airport_from.cfm','iata=' + from_airport + "&section_id=" + section_id,displayfunction);
	} else if (to_airport) {
		loadCanvas('/lib/data_widget_partner_airport_to.cfm','iata=' + to_airport + "&section_id=" + section_id,displayfunction);
	} else {
		loadCanvas('/lib/data_widget_partner_section.cfm','section_id=' + section_id,displayfunction);
	return true;
	}
}

function refreshHotelPartners() {
	var location_id = document.getElementById("location_id").value;
	if (location_id) {
		loadCanvas('/lib/data_widget_partner_location.cfm','location_id=' + location_id ,listHotelProviders);
	} else {
		loadCanvas('/lib/data_widget_partner_section.cfm','section_id=1',listHotelProviders);
	}
}

function refreshRentalPartners() {
	var location_id = document.getElementById("location_id").value;
	if (location_id) {
		loadCanvas('/lib/data_widget_partner_location.cfm','section_id=7&location_id=' + location_id,listRentalProviders);
	} else {
		loadCanvas('/lib/data_widget_partner_section.cfm','section_id=7',listRentalProviders);
	}
}

function openPartnerWindow(url,partner,top,left) {
	var mywindow = window.open(url,partner,"width=400,height=400,scrollbars=yes,resizable=yes,toolbar=yes,menubar=yes,location=yes,top=" + top + ",left=" + left);
	if (mywindow) {
		mywindow.focus();
	}
	return mywindow;
}

function processHotels() {
	var location = document.getElementById("location");
	if (!location.value) {
		alert("Please select a destination city.");
		return false;
	}

	var location_name = document.getElementById("location_name").value.replace(/^\s+|\s+$/g,"");
	var state_code = document.getElementById("state_code").value;
	var country_code = document.getElementById("country_code").value;

	var adults = "1";
	var options = document.getElementById("hotels_adults").getElementsByTagName("option");
	for (var i = 0; i < options.length; i++) {
		if (options[i].selected) {
			adults = options[i].text;
		}
	}

	var checkin_date = document.getElementById("checkin-date");
	if (!checkin_date.value) {
		alert("Please select a checkin date.");
		return false;
	}

	var checkout_date = document.getElementById("checkout-date");
	if (!checkout_date.value) {
		alert("Please select a checkout date.");
		return false;
	}
	
	if (checkin_date.value > checkout_date.value) {
		alert("The checkin date must be later than the checkout date.");
		return false;
	}

	var combined = [];

	var rental_providers = document.getElementById("rental-providers");
	if (rental_providers) {
		var rental_checkboxes = rental_providers.getElementsByTagName("input");
		for (var i= 0; i < rental_checkboxes.length; i++){
			if (rental_checkboxes[i].checked) {
				combined.push(rental_checkboxes[i]);
			}
		}
	}

	var hotel_providers = document.getElementById("hotel-providers");
	var hotel_checkboxes = hotel_providers.getElementsByTagName("input");
	for (var i= 0; i < hotel_checkboxes.length; i++) {
		if (hotel_checkboxes[i].checked) {
			combined.push(hotel_checkboxes[i]);
		}
	}

	for (var i = combined.length - 1; i >= 0 ; i--) {
		var attr_checked = combined[i].parentNode.className;
		if (attr_checked) {
			var prechecked = "/prechecked";
		} else {
			var prechecked = "";
		}
		createHotelsPartnerWindow(combined[i].id,prechecked,location.value,adults,checkin_date.value,checkout_date.value,combined.length - i,location_name,state_code,country_code);
	}

}

function createHotelsPartnerWindow(partner,prechecked,location,adults,checkin_date,checkout_date,index,location_name,state_code,country_code) {
	var checkin_arr = checkin_date.toString().split("-");
	var checkout_arr = checkout_date.toString().split("-");
	var checkin_year = checkin_arr[0];
	var checkin_month = checkin_arr[1];
	var checkin_day = checkin_arr[2];
	var checkout_year = checkout_arr[0];
	var checkout_month = checkout_arr[1];
	var checkout_day = checkout_arr[2];
	var section = "hotel";
	var adults = adults;
	var top = index * 50;
	var left = top + 50;
	var location_name = location_name;
	switch(partner){
		case 'hotwire':
			var baseURL = 'http://www.hotwire.com/hotel/search-options.jsp?sid=S296&bid=B311042&inputId=hotel-index';
			var params = "&destCity=" + encodeURIComponent(location) + "&startDay=" + checkin_day +  "&startMonth=" + checkin_month + "&endDay=" + checkout_day + "&endMonth=" + checkout_month;
			var hotwireWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'tripadvisor':
			var baseURL = 'http://www.tripadvisor.com/HACSearch?m=13499';
			var params = "&q=" + location.replace(', ',',') + "&inDay=" + checkin_day +  "&inMonth=" + checkin_month + "%2F" + checkin_year + "&outDay=" + checkout_day + "&outMonth=" + checkout_month + "%2F" + checkout_year + "&adults=" + adults;
			var tripadvisorWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'tripadvisor_rental':
			var baseURL = 'http://www.tripadvisor.com/VRACSearch?m=13501';
			var params = "&q=" + location.replace(', ',',') + "&inDay=" + checkin_day +  "&inMonth=" + checkin_month + "%2F" + checkin_year + "&checkIn=" + checkin_month + "%2F" + checkin_day + "%2F" + checkin_year+ "&outDay=" + checkout_day + "&outMonth=" + checkout_month + "%2F" + checkout_year + "&checkOut=" + checkout_month + "%2F" + checkout_day + "%2F" + checkout_year + "&adults=" + adults;
			var tripadvisorWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,'rentals');
			break;
		case 'orbitz':
//			var baseURL = 'http://ad.doubleclick.net/clk;230460702;55004664;t?http://www.orbitz.com/App/ValidateHotelSearch?';
//			var params = "keywordPIB=" + location + "&monthInPIB=" + getMonthAbbrev(checkin_month) + "+" + checkin_year +  "&monthOutPIB=" + getMonthAbbrev(checkout_month) + "+" + checkout_year + '&dayInPIB=' + checkin_day + '&dayOutPIB=' + checkout_day + '&numberOfGuestsPIB=' + adults + '&gcid=C11287x1011&WT.mc_id=orb_fodors_hotel_prechecked&WT.mc_ev=click&DCSext.mc_kw=';
			var baseURL = 'http://ad.doubleclick.net/clk;230460702;55004664;t?http://www.orbitz.com/psi?';
			var params = 'type=hotel&market=' + location + '&checkin=' + checkin_year + '-' + checkin_month + '-' + checkin_day + '&checkout=' + checkout_year + '-' + checkout_month + '-' + checkout_day + '&guests=' + adults + '&rooms=1 &gcid=C11287x1011&WT.mc_id=orb_fodors_hotel_prechecked&WT.mc_ev=click&DCSext.mc_kw=';
			var orbitzWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'hotelsdotcom':
//			var baseURL = 'http://ad.doubleclick.net/clk;222176204;45789383;m?http://www.hotels.com/processSearch.do?';
//			var params = '&usertypedcity=' + location.replace(', ','+') + '&CIDay=' + checkin_day + '&CODay=' + checkout_day + '&adults%5B0%5D=' + adults + '&numrooms=1&CIYear=' + checkin_year + '&COYear=' + checkout_year + '&CIMonth=' + checkin_month + '&COMonth=' + checkout_month + '&PSRC=FODR&rffrid=mdp.hcom.US.146.160.02';
			var baseURL = 'http://ad.doubleclick.net/clk;222176204;45789383;m?http://www.hotels.com/PPCSearch?';
			var params = 'city=' + encodeURIComponent(location) + '&arrivalDate=' + checkin_day + '/' + checkin_month + '/' + checkin_year + '&departureDate=' + checkout_day + '/' + checkout_month + '/' + checkout_year + '&adultsPerRoom=' + adults +  '&PSRC=FODR&rffrid=mdp.hcom.US.146.160.02';
			var hotelsdotcomWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'bookingbuddy':
			var baseURL = 'http://ad.doubleclick.net/clk;214040904;35808036;w?http://rd.bookingbuddy.com/?r=bbs_fodors_ros_checkbox-h_001';
			var params = '&arrival_city=' + encodeURIComponent(location) + '&num_rooms=1&num_travelers=' + adults + '&arrival_month=' + checkin_month + ' ' + checkin_year + '&arrival_day=' + checkin_day + '&departure_month=' + checkout_month + ' ' + checkout_year + '&departure_day=' + checkout_day;
			var bookingbuddyWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'travelocity':
			var comma = location.search(/, \w\w$|, \w\w, Canada/);
			if (comma > 0) {
				var city_param = '&city=' + location.slice(0,comma) + '&state=' + location.slice(comma + 2,comma + 4);
			} else {
				var city_param = '&city=' + encodeURIComponent(location);
			}
			var baseURL = 'http://travel.travelocity.com/hotel/HotelCobrand.do?';
			var params = 'Service=TRAVELOCITY&SearchPath=hots&old_cb=N&mode=1&x=53&y=14&pax_cnt=2' + city_param + '&dateLeavingMonth=' + checkin_month +  '&dateLeavingDay=' + checkin_day + '&dateReturningMonth=' + checkout_month + '&dateReturningDay=' + checkout_day + '&WA1=03010&WA2=215967290&WA3=38362458&WA4=0&WA5=1653085&WA6=123001';
			var travelocityWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'tripdotcom':
			var baseURL = 'http://ad.doubleclick.net/clk;221441309;45013332;m? http://www.trip.com/index.html';
			var params = '?type=hotel&hoWhere=' + location + '&checkIn=' + checkin_month  + '/' + checkin_day + '/' + checkin_year + '&checkOut=' + checkout_month  + '/' + checkout_day + '/' + checkout_year + '&guests=' + adults + '&rooms=1&cmpid=103';
			var tripdotcomWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'getaroom':
			if (location_name) {
				if (country_code == 'US') {
					var destination = location_name + ', ' + state_code;
				} else {
					var destination = location_name + ', ' + country_code;
				}
			} else {
				var destination = location;
			}
			var baseURL = 'http://www.getaroom.com/searches/show?';
			var params = 'sort_order=position&destination=' + destination + '&search[destination]=' + destination + '&check_in=' + checkin_month  + '/' + checkin_day + '/' + checkin_year + '&check_out=' + checkout_month  + '/' + checkout_day + '/' + checkout_year + '&rinfo=[[18%2C18]]&commit=update+search&tracking_id=fodors02&content=fodors_cities';
			var getaroomWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'hotelscombined':
			if (location_name) {
				var destination = location_name;
			} else {
				var destination = location;
			}
			if (country_code == 'US') {
				var stateCode = state_code;
			} else {
				var stateCode = '';
			}
			var baseURL = 'http://www.hotelscombined.com/Search.aspx?a_aid=16058';
			var params = '&Adults=' + adults + '&Rooms=1&checkin=' + checkin_year + '-' + checkin_month + '-' + checkin_day + '&checkout=' + checkout_year + '-' + checkout_month + '-' + checkout_day + '&countryCode=' + country_code + '&search=' + destination + '&stateCode=' + stateCode + '&label=' + destination;
			var hotelscombinedWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'travelticker':
			if (location_name) {
				if (country_code == 'US') {
					var destination = location_name + ', ' + state_code;
				} else {
					var destination = location_name + ', ' + country_code;
				}
			} else {
				var destination = location;
			}
			var baseURL = 'http://www.travel-ticker.com/category.jsp?';
			var params = 'actionType=1&categoryType=Type&categoryName=Hotels&vert=hotel&destinationCity=' + destination + '&startDate=' + checkin_month + '/' + checkin_day + '/' + checkin_year + '&endDate=' + checkout_month + '/' + checkout_day + '/' + checkout_year + '&numRooms=1&noOfAdults=' + adults + '&sid=S296&bid=B311497';
			var traveltickerWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'airbnb':
			if (prechecked) {
				var c = "widget_pre";
			} else {
				var c = "widget_not_pre";
			}
			var baseURL = 'http://www.airbnb.com/search';
			var params = '?location=' + location + '&checkin=' + checkin_month  + '/' + checkin_day + '/' + checkin_year + '&checkout=' + checkout_month  + '/' + checkout_day + '/' + checkout_year + '&number_of_guests=' + adults + '&af=190534&c=' + c;
			var airbnbWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,'rentals');
			break;
		case 'waytostay':
			if (location_name) {
				var startDate = new Date(checkin_year,checkin_month - 1,checkin_day);
				var endDate = new Date(checkout_year,checkout_month - 1,checkout_day);
				if ((endDate.getTime() - startDate.getTime()) >= 259200000) {
					var elem = document.getElementById("waytostay");
					var paramOne = elem.getAttributeNode("param1");
					var baseURL = 'http://www.waytostay.com/view_propertiesbycriteria.aspx?us_cc=en-GB';
					var params = '&regid=' + paramOne.value + '&a_day=' + checkin_day + '&a_month=' + checkin_month + '&a_year=' + checkin_year + '&d_day=' + checkout_day  + '&d_month=' + checkout_month + '&d_year=' + checkout_year + '&sleeps=' + adults + '&orgid=108&utm_source=fodors.com&utm_medium=SearchResults&utm_term=October%2B2010&utm_campaign=FodorsSearchResults';
					var waytostayWindow = openPartnerWindow(baseURL + params,partner,top,left);
					countClick(partner,prechecked,'rentals');
				}
			}
			break;
		case 'homeaway':
			var baseURL = 'http://www.homeaway.com/search/refined/';
			var params = 'keywords:' + location + '/Sleeps:1-4/arrival:' + checkin_year  + '-' + checkin_month + '-' + checkin_day + '/departure:' + checkout_year  + '-' + checkout_month + '-' + checkout_day + '?cid=L_fodors_1';
			var homeawayWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,'rentals');
			break;
		case 'cheapostay':
			if (location_name) {
				var destination = location_name;
				if (country_code == 'US') {
					var fpsub = 'US-traffic-hotels';
				} else {
					var fpsub = 'Intl-traffic-hotels';
				}
			} else {
				var destination = location;
				var fpsub = '';
			}
			var baseURL = 'http://www.cheapostay.com/Default.aspx?tabid=2278' + '&fpaffiliate=FODORS-HOTEL&FpSub=' + fpsub;
			var params = '&ht=1&to=' + destination + '&fromDt=' + checkin_month  + '-' + checkin_day + '-' + checkin_year + '&toDt=' + checkout_month  + '-' + checkout_day + '-' + checkout_year + '&rooms=1&ad=' + adults + '&childs=0&R1=A' + adults + 'Ch0';
			var cheapostayWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'evr':
			var elem = document.getElementById("evr");
			var paramOne = elem.getAttributeNode("param1");
			var paramTwo = elem.getAttributeNode("param2");
			var evrOne = ' ';
			var evrTwo = ' ';
			var evrThree = ' ';
			if (paramOne) {
				evrOne = paramOne.value;
			}
			if (paramTwo) {
				var evrArr = paramTwo.value.split(' ',2);
				evrTwo = evrArr[0];
				evrThree = evrArr[1];
			}
			var baseURL = 'http://www.wyndham-vacations.com/erube/OM_Fodors/March152020/';
			var params = evrTwo + '/meta/int/main.taf?erube_fh=rci&rci.submit.SearchResortDirectory=1&rci.searchDate=' + checkin_month + '/2010&rci.searchValue=' + encodeURI(evrOne) + '&id1=OM_Fodorsmeta&id2=' + evrThree + 'Mar10';
			var evrWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'splendia':
			var elem = document.getElementById("splendia");
			var paramOne = elem.getAttributeNode("param1");
			var paramTwo = elem.getAttributeNode("param2");
			var splenOne = ' ';
			var splenTwo = ' ';
			if (paramOne) {
				splenOne = paramOne.value;
			}
			if (paramTwo) {
				splenTwo = paramTwo.value;
			}
			var baseURL = 'http://eulerian.splendia.com/dynclick/splendia/?etf-name=Fodors%20%2D%20destinations%20%2D%20US&etf-prdref=';
			var params = splenOne + '&eurl=http://www.splendia.com/en/' + splenTwo + '.html?' +  'datestart=' + checkin_day  + '/' + checkin_month + '/' + checkin_year.substr(2) + '&dateend=' + checkout_day  + '/' + checkout_month + '/' + checkout_year.substr(2);
			var splendiaWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'renaissance':
			var baseURL = 'http://www.marriott.com/search/submitSearch.mi';
			if (country_code == 'US') {
				var state = state_code;
			} else {
				var state = '';
			}
			var params = '?searchType=InCity&groupCode=&resultsMap=&searchRadius=50&recordsPerPage=10&vsMarriottBrands=MC&destinationAddress.city=' + location_name + '&destinationAddress.stateProvince=' + state + '&destinationAddress.country=' + country_code + '&marriottBrands=MHR&roomCount=1&guestCount=' + adults + '&fromDate=' + checkin_month  + '/' + checkin_day + '/' + checkin_year.substr(2) + '&toDate=' + checkout_month  + '/' + checkout_day + '/' + checkout_year.substr(2);
			var renaissanceWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'priceline':
			var baseURL = 'http://www.priceline.com/qp.asp?productid=5';
			var params = '&city=' + location.replace(', ',',').toUpperCase() + '&rooms=1&checkindate=' + checkin_month + '/' + checkin_day + '/' + checkin_year + '&checkoutdate=' + checkout_month + '/' + checkout_day + '/' + checkout_year + '&refid=PLFODORS&refclickid=HOTELSEARCH';
			var pricelineWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'bookingdotcom':
			var baseURL = 'http://www.booking.com/searchresults.html?';
			var elem = document.getElementById("bookingdotcom");
			var attr = elem.getAttributeNode("param1");
			if (attr) {
				var city_id = attr.value;
			}
			if (city_id) {
				var params = 'aid=323397&city=' + city_id + '&checkin_monthday=' + checkin_day + '&checkin_year_month=' + checkin_year + '-' + checkin_month + '&checkout_monthday=' + checkout_day + '&checkout_year_month=' + checkout_year + '-' + checkout_month + '&do_availability_check=1';
			} else {
				var params = 'aid=323397';
			}
			var bookingdotcomWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
	}
}

function processFlights() {
	var from = document.getElementById("from");
	if (!from.value) {
		alert("Please select a departure city.");
		return false;
	}

	var to = document.getElementById("to");
	if (!to.value) {
		alert("Please select a destination city.");
		return false;
	}

	var adults = "1";
	var options = document.getElementById("flight_adults").getElementsByTagName("option");
	for (var i = 0; i < options.length; i++) {
		if (options[i].selected) {
			adults = options[i].text;
		}
	}

	var depart_date = document.getElementById("depart-date");
	if (!depart_date.value) {
		alert("Please select a departure date.");
		return false;
	}

	var return_date = document.getElementById("return-date");
	if (!return_date.value) {
		alert("Please select a return date.");
		return false;
	}

	if (depart_date.value > return_date.value) {
		alert("The return date must be later than the departure date.");
		return false;
	}

	var flight_providers = document.getElementById("flight-providers");
	var flight_checkboxes = flight_providers.getElementsByTagName("input");
	for (var i = flight_checkboxes.length - 1; i >= 0 ; i--) {
		if (flight_checkboxes[i].checked) {
			var attr_checked = flight_checkboxes[i].parentNode.className;
			if (attr_checked) {
				var prechecked = "/prechecked";
			} else {
				var prechecked = "";
			}
createFlightsPartnerWindow(flight_checkboxes[i].id,prechecked,from.value.toUpperCase(),to.value.toUpperCase(),adults,depart_date.value,return_date.value,flight_checkboxes.length - i);
		}
	}
}

function processPackages() {
	var from = document.getElementById("p_from");
	if (!from.value) {
		alert("Please select a departure city.");
		return false;
	}

	var to = document.getElementById("p_to");
	if (!to.value) {
		alert("Please select a destination city.");
		return false;
	}

	var adults = "1";
	var options = document.getElementById("package_adults").getElementsByTagName("option");
	for (var i = 0; i < options.length; i++) {
		if (options[i].selected) {
			adults = options[i].text;
		}
	}

	var depart_date = document.getElementById("p_depart-date");
	if (!depart_date.value) {
		alert("Please select a departure date.");
		return false;
	}

	var return_date = document.getElementById("p_return-date");
	if (!return_date.value) {
		alert("Please select a return date.");
		return false;
	}

	if (depart_date.value > return_date.value) {
		alert("The return date must be later than the departure date.");
		return false;
	}

	var flight_providers = document.getElementById("package-providers");
	var flight_checkboxes = flight_providers.getElementsByTagName("input");
	for (var i = flight_checkboxes.length - 1; i >= 0 ; i--) {
		if (flight_checkboxes[i].checked) {
			var attr_checked = flight_checkboxes[i].parentNode.className;
			if (attr_checked) {
				var prechecked = "/prechecked";
			} else {
				var prechecked = "";
			}
createPackagesPartnerWindow(flight_checkboxes[i].id,prechecked,from.value.toUpperCase(),to.value.toUpperCase(),adults,depart_date.value,return_date.value,flight_checkboxes.length - i);
		}
	}
}

function processCarRentals() {
	var from = document.getElementById("r_from");
	if (!from.value) {
		alert("Please select a pickup city.");
		return false;
	}

	var to = document.getElementById("r_to");

	var pickup_time = "";
	var options = document.getElementById("pickup_time").getElementsByTagName("option");
	for (var i = 0; i < options.length; i++) {
		if (options[i].selected) {
			pickup_time = options[i].value;
		}
	}

	var dropoff_time = "";
	var options = document.getElementById("dropoff_time").getElementsByTagName("option");
	for (var i = 0; i < options.length; i++) {
		if (options[i].selected) {
			dropoff_time = options[i].value;
		}
	}

	var depart_date = document.getElementById("r_depart-date");
	if (!depart_date.value) {
		alert("Please select a pickup date.");
		return false;
	}

	var return_date = document.getElementById("r_return-date");
	if (!return_date.value) {
		alert("Please select a dropoff date.");
		return false;
	}
	
	if (depart_date.value > return_date.value) {
		alert("The dropoff date must be later than the pickup date.");
		return false;
	}

	var flight_providers = document.getElementById("carrental-providers");
	var flight_checkboxes = flight_providers.getElementsByTagName("input");
	for (var i = flight_checkboxes.length - 1; i >= 0 ; i--) {
		if (flight_checkboxes[i].checked) {
			var attr_checked = flight_checkboxes[i].parentNode.className;
			if (attr_checked) {
				var prechecked = "/prechecked";
			} else {
				var prechecked = "";
			}
createCarRentalsPartnerWindow(flight_checkboxes[i].id,prechecked,from.value.toUpperCase(),to.value.toUpperCase(),pickup_time,dropoff_time,depart_date.value,return_date.value,flight_checkboxes.length - i);
		}
	}
}

function processCruises() {

	var destination = "";
	var options = document.getElementById("cruise-destination").getElementsByTagName("option");
	for (var i = 0; i < options.length; i++) {
		if (options[i].selected) {
			destination = options[i];
		}
	}

	var line = "";
	var options = document.getElementById("cruise-line").getElementsByTagName("option");
	for (var i = 0; i < options.length; i++) {
		if (options[i].selected) {
			line = options[i];
		}
	}

	var depart = "";
	var options = document.getElementById("cruise-depart").getElementsByTagName("option");
	for (var i = 0; i < options.length; i++) {
		if (options[i].selected) {
			depart = options[i];
		}
	}

	var clength = "";
	var options = document.getElementById("cruise-length").getElementsByTagName("option");
	for (var i = 0; i < options.length; i++) {
		if (options[i].selected) {
			clength = options[i];
		}
	}

	var flight_providers = document.getElementById("cruise-providers");
	var flight_checkboxes = flight_providers.getElementsByTagName("input");
	for (var i = flight_checkboxes.length - 1; i >= 0 ; i--) {
		if (flight_checkboxes[i].checked) {
			var attr_checked = flight_checkboxes[i].parentNode.className;
			if (attr_checked) {
				var prechecked = "/prechecked";
			} else {
				var prechecked = "";
			}
createCruisesPartnerWindow(flight_checkboxes[i].id,prechecked,flight_checkboxes.length - i,destination,line,depart,clength);
		}
	}
}

function createCruisesPartnerWindow(partner,prechecked,index,destination,line,depart,clength) {
	var section = "cruise";
	var top = index * 50;
	var left = top + 50;
	var depart_arr = depart.value.toString().split("-");

	switch(partner){
		case 'travelticker':
			var baseURL = 'http://www.travel-ticker.com/category.jsp?';
			var params = 'actionType=1&categoryType=Type&categoryName=Cruises&sid=S296&bid=B314973';
			var traveltickerWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'bookingbuddy':
			var baseURL = 'http://ad.doubleclick.net/clk;214040904;35808036;w?http://rd.bookingbuddy.com/?r=bbs_fodors_cruise_checkbox-r_001';
			var params = '&destination=' + destination.getAttribute("bb") + '&travel_month=' + depart.value + '&over_55=0' + '&cruise_line=' + line.getAttribute("bb") + '&cruise_length=' + clength.getAttribute("bb");
			var bookingbuddyWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'orbitz':
			var baseURL = 'http://ad.doubleclick.net/clk;230461866;55005381;c?http://cruises.orbitz.com/results.do?';
			var params = 'places=' + destination.getAttribute("or") + '&Month=' + (depart_arr[1] * 1) + '/1/' + depart_arr[0] + '&operator=' + line.getAttribute("or") + '&days=' + clength.getAttribute("or") + '&shoppingZipCode=&IncludeSeniorRates=true&sort=7&gcid=C11287x1015&WT.mc_id=orb_fodors_cruise_prechecked&WT.mc_ev=click&DCSext.mc_kw=';
			var orbitzWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'cruisedirector':
			var baseURL = 'http://cruisedirector.com/slider2_dd.php?';
			var params = 'DestinationID=' + destination.getAttribute("cd") + '&cruise_month=' + depart_arr[1] + '&cruise_year=' + depart_arr[0] + '&cruise_day=1&cruise_month2=' + depart_arr[1] + '&cruise_year2=' + depart_arr[0] + '&cruise_day2=' + getMonthLastDay(depart_arr[1]) + '&vendorid=' + line.getAttribute("cd") + '&cruise_duration=' + clength.getAttribute("cd") + '&utm_source=Fodors&utm_medium=CPC&utm_content=QuickSearch&utm_campaign=Fodors';
			var cruisedirectorWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'onetime':
			var baseURL = 'http://www.onetime.com/cruises?sid=20774';
			var params = '&inDate=' + depart_arr[1] + '/01/' + depart_arr[0] + '&len=' + clength.getAttribute("ot") + '&region=' + destination.getAttribute("ot");
			var onetimeWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
	}
}

function createFlightsPartnerWindow(partner,prechecked,from,to,adults,depart_date,return_date,index) {
	var depart_arr = depart_date.toString().split("-");
	var return_arr = return_date.toString().split("-");
	var depart_year = depart_arr[0];
	var depart_month = depart_arr[1];
	var depart_day = depart_arr[2];
	var return_year = return_arr[0];
	var return_month = return_arr[1];
	var return_day = return_arr[2];
	var section = "air";
	var top = index * 50;
	var left = top + 50;

	switch(partner){
		case 'hotwire':
			var baseURL = 'http://www.hotwire.com/air/search-options.jsp?sid=S296&bid=B311041&inputId=index';
			var params = "&origCity=" + from + "&destinationCity=" + to + "&startDay=" + depart_day +  "&startMonth=" + depart_month + "&endDay=" + return_day + "&endMonth=" + return_month + "&noOfTickets=" + adults;
			var hotwireWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'tripadvisor':
			var baseURL = 'http://www.tripadvisor.com/CheapFlights?';
			var params = "airport0=" + from + "&airport1=" + to + "&cos=0&date0=" + depart_year + depart_month + depart_day + "&date1=" + return_year + return_month + return_day + "&m=13498&nearby0=no&nearby1=no&nonstop=no&time0=anytime&time1=anytime&travelers=" + adults;
			var tripadvisorWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'orbitz':
			//var baseURL = 'http://ad.doubleclick.net/clk;230461176;55004970;z?http://www.orbitz.com/App/ValidateFlightSearch?';
			//var params = 'slice1:departCity=' + from + '&slice1:arriveCity=' + to + '&slice1:month=' +  getMonthAbbrev(depart_month) + '+' + depart_year + '&slice1:day=' + depart_day + '&slice2:month=' + getMonthAbbrev(return_month) + '+' + return_year + '&slice2:day=' + return_day + '&adults=' + adults + '&gcid=C11287x1012&WT.mc_id=orb_fodors_flights_prechecked&WT.mc_ev=click&DCSext.mc_kw=';
			var baseURL = 'http://ad.doubleclick.net/clk;230461176;55004970;z?http://www.orbitz.com/psi?';
			var params = 'type=air&triptype=roundtrip&origin=' + from + '&dest=' + to + '&adults=' + adults + '&departdate=' + depart_year + '-' + depart_month + '-' + depart_day + '&returndate=' + return_year + '-' + return_month + '-' + return_day + '&gcid=C11287x1012&WT.mc_id=orb_fodors_flights_prechecked&WT.mc_ev=click&DCSext.mc_kw=';
			var orbitzWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'onetime':
			//var baseURL = 'http://www.onetime.com/flights?sid=20772';
			var baseURL = 'http://rd.onetime.com/?r=ot_fodors_flight_checkbox-a_001';
			var params = '&inDate=' + depart_month + '/' + depart_day + '/' + depart_year + '&outDate=' + return_month + '/' + return_day + '/' + return_year + '&travelers=' + adults + '&tid=' + to + '&fid=' + from;
			var onetimeWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'webjet':
			var country_code = document.getElementById("country_code").value;
			var tracking = '';
			var cc = 'AT,BE,CH,CY,CZ,DE,DK,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LI,LU,MT,NL,NO,PL,PT,RO,RU,SE,SI,SK,T';
			if (country_code == 'AU') {
				tracking = '&utm_source=Fodors&utm_medium=cpc&utm_campaign=Australia';
			} else if (cc.indexOf(country_code) > -1) {
				tracking = '&utm_source=Fodors&utm_medium=cpc&utm_campaign=Europe';
			}
			var baseURL = 'http://res.webjet.com/process.aspx?agentid=189';
			var params = '&txtDepCity1=' + from + '&txtArrCity1=' + to + '&txtDepCity2=' + to + '&txtArrCity2=' + from + '&TripType=rdbRoundTrip&txtDate1=' + depart_month + '/' + depart_day + '/' + depart_year + '&txtDate2=' + return_month + '/' + return_day + '/' + return_year + '&ddlPaxADT=' + adults + '&ddlPaxCHD=0&ddlPaxINF=0' + tracking;
			var webjetWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'travelticker':
			var baseURL = 'http://www.travel-ticker.com/category.jsp?';
			var params = 'actionType=1&categoryType=Type&categoryName=Flights&vert=air&orig=' + from + '&dest=' + to + '&startDate=' + depart_month + '/' + depart_day + '/' + depart_year + '&endDate=' + return_month + '/' + return_day + '/' + return_year + '&noOfTickets=' + adults + '&sid=S296&bid=B311499';
			var traveltickerWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'tripdotcom':
			var baseURL = 'http://ad.doubleclick.net/clk;221441402;45013414;h?http://www.trip.com/index.html';
			var params = '?type=flight&airFrom=' + from + '&airTo=' + to + '&deptDate=' + depart_month + '/' + depart_day + '/' + depart_year + '&rtnDate=' + return_month + '/' + return_day + '/' + return_year + '&travelers=' + adults + '&cmpid=102';
			var tripdotcomWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'cheapoair':
			var baseURL = 'http://www.cheapoair.com/Default.aspx?tabid=1832&FpAffiliate=FODORS-AIR';
			var params = '&from=' + from + '&to=' + to + '&fromDt=' + depart_month + '/' + depart_day + '/' + depart_year + '&toDt=' + return_month + '/' + return_day + '/' + return_year + '&ad=' + adults;
			var cheapoairWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'bookingbuddy':
			var baseURL = 'http://ad.doubleclick.net/clk;214040904;35808036;w?http://rd.bookingbuddy.com/?r=bbs_fodors_ros_checkbox-a_001';
			var params = '&departure_city=' + from + '&arrival_city=' + to + '&num_travelers=' + adults + '&search_type=roundtrip' + '&departure_month=' + depart_month + ' ' + depart_year + '&departure_day=' + depart_day + '&departure_time=anytime' + '&return_month=' + return_month + ' ' + return_year + '&return_day=' + return_day + '&return_time=anytime&service_class=economy_coach&non_stop=';
			var bookingbuddyWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'airnewzealand':
			var baseURL = 'http://altfarm.mediaplex.com/ad/ck/4608-81242-3153-4?mpro=https://flightbookings.airnewzealand.com/isbook_en_US/book/initNewMultiStopPopulated.do';
			var params = '?multiType=int&tripType=multiStop&searchLegs[0].originPoint=' + from + '&searchLegs[0].tripStartDate=' + depart_day + '&searchLegs[0].tripStartMonth=' + getMonthAbbrev(depart_month) + '&searchLegs[0].destinationPoint=' + to + '&searchLegs[1].originPoint=' + to + '&searchLegs[1].tripStartDate=' + return_day + '&searchLegs[1].tripStartMonth=' + getMonthAbbrev(return_month) + '&searchLegs[1].destinationPoint=' + from + '&customerTurnaroundIndex=1&bookingClass=economy&adults=' + adults + '&children=0&infants=0';
			var airnewzealandWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'priceline':
			var baseURL = 'http://www.priceline.com/qp.asp?productid=1';
			var params = '&depcity=' + from + '&arrcity=' + to + '&numtickets=' + adults + '&departuredate=' + depart_month + '/' + depart_day + '/' + depart_year + '&returndate=' + return_month + '/' + return_day + '/' + return_year + '&refid=PLFODORS&refclickid=AIRSEARCH';
			var pricelineWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'whentofly':
			var baseURL = 'http://book.perfectibe.com/process.aspx?agentid=121';
			var params = '&txtDepCity1=' + from + '&txtArrCity1=' + to + '&txtDepCity2=' + to + '&txtArrCity2=' + from +'&TripType=rdbRoundTrip' + '&txtDate1=' + depart_month + '/' + depart_day + '/' + depart_year + '&txtDate2=' + return_month + '/' + return_day + '/' + return_year + '&ddlPaxADT=' + adults + '&ddlPaxCHD=0&ddlPaxINF=0';
			var whentoflyWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'jetblue':
			var baseURL = 'http://ad.doubleclick.net/clk;216845355;39601580;k?http://www.jetblueairways.com/cgi-bin/skylights.cgi?intcmp=minibooker';
			var params = '&ADULT=' + adults + '&CHILD=00&currency=&fare_cat=LOWEST&booker_fare_cat=LOWEST&fareCat=LOWEST&mode=0&module=SB&nom=2&oP=&pT=00CHILD' + adults + 'ADULT&rP=&pM=0&event=search&page=SEARCH&tc=1&TRIP_TYPE=RoundTrip&openjaw_flag=TRUE&MARKET1_DATE=' + (depart_month * 1) + '/' + (depart_day * 1) + '/' + depart_year + '&m1=' + depart_year + depart_month + depart_day + from + to + '&m1DO=0&m1DP=0&sector1_d=' + to + '&sector1_o=' + from + '&sector_1_d=' + depart_day + '&sector_1_m=' + depart_month + depart_year + '&MARKET2_DATE='  + (return_month * 1) + '/' + (return_day * 1) + '/' + return_year + '&m2=' + return_year + return_month + return_day + to + from + '&m2DO=0&m2DP=0&sector2_d=' + from + '&sector2_o=' + to + '&sector_2_d=' + return_day + '&sector_2_m=' + return_month + return_year;
			var jetBlueWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
	}
}

function createPackagesPartnerWindow(partner,prechecked,from,to,adults,depart_date,return_date,index) {
	var depart_arr = depart_date.toString().split("-");
	var return_arr = return_date.toString().split("-");
	var depart_year = depart_arr[0];
	var depart_month = depart_arr[1];
	var depart_day = depart_arr[2];
	var return_year = return_arr[0];
	var return_month = return_arr[1];
	var return_day = return_arr[2];
	var section = "vacation";
	var top = index * 50;
	var left = top + 50;

	switch(partner){
		case 'hotwire':
			var baseURL = 'http://www.hotwire.com/vacation/results.jsp?sid=S296&bid=B314984&inputId=index&startSearchType=N';
			var params = "&origCity=" + from + "&destCity=" + to + "&vacationPGoodTypeCodes=AH&startDay=" + depart_day +  "&startMonth=" + depart_month + "&endDay=" + return_day + "&endMonth=" + return_month + "&noOfAdults=" + adults + '&noOfChildren=0&noOfRooms=1';
			var hotwireWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'orbitz':
//			var baseURL = 'http://ad.doubleclick.net/clk;230461559;55005202;t?http://www.orbitz.com/App/OffsitePackageSearch?';
//			var params = 'packageType=APH&origin=' + from + '&dest=' + to + '&departMonth=' + getMonthAbbrev(depart_month)+ '+' + depart_year + '&departDay=' + depart_day + '&returnMonth=' + getMonthAbbrev(return_month)+ '+' + return_year + '&returnDay=' + return_day + '&adult=' + adults + '&gcid=C11287x1013&WT.mc_id=orb_fodors_package_prechecked&WT.mc_ev=click&DCSext.mc_kw=';
			var baseURL = 'http://ad.doubleclick.net/clk;230461559;55005202;t?http://www.orbitz.com/psi?';
			var params = "type=aph&searchtype=keyword&market=" + to + "&adults=" + adults + "&origin=" + from + "&dest=" + to + "&departdate=" + depart_year + "-" + depart_month + "-" + depart_day +  "&returndate=" + return_year + "-" + return_month + "-" + return_day + "&departspan=Anytime&returnspan=Anytime&gcid=C11287x1013&WT.mc_id=orb_fodors_package_prechecked&WT.mc_ev=click&DCSext.mc_kw=";
			var orbitzWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'bookingbuddy':
			var baseURL = 'http://ad.doubleclick.net/clk;214040904;35808036;w?http://rd.bookingbuddy.com/?r=bbs_fodors_ros_vaca_unchecked-box-v_015';
			var params = '&departure_city=' + from + '&arrival_city=' + to + '&num_travelers=' + adults + '&search_type=roundtrip' + '&departure_month=' + depart_month + ' ' + depart_year + '&departure_day=' + depart_day + '&return_month=' + return_month + ' ' + return_year + '&return_day=' + return_day;
			var bookingbuddyWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'travelticker':
			var baseURL = 'http://www.travel-ticker.com/category.jsp?';
			var params = 'actionType=1&categoryType=Type&categoryName=Packages&vert=package&orig=' + from + '&dest=' + to + '&startDate=' + depart_month + '/' + depart_day + '/' + depart_year + '&endDate=' + return_month + '/' + return_day + '/' + return_year + '&noOfAdults=' + adults + '&sid=S296&bid=B311498';
			var traveltickerWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'onetime':
			//var baseURL = 'http://www.onetime.com/vacations?sid=20775';
			var baseURL = 'http://rd.onetime.com/?r=ot_fodors_vaca_unchecked-box-v_001';
			var params = '&inDate=' + depart_month + '/' + depart_day + '/' + depart_year + '&outDate=' + return_month + '/' + return_day + '/' + return_year + '&travelers=' + adults + '&tid=' + to + '&fid=' + from;
			var onetimeWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'cheapovacation':
			var baseURL = 'http://www.cheapoair.com/Default.aspx?tabid=1832&type=dp';
			var params = '&from=' + from + '&to=' + to + '&fromDt=' + depart_month + '/' + depart_day + '/' + depart_year + '&fromTm=1100&toDt=' + return_month + '/' + return_day + '/' + return_year + '&toTm=1100&rt=1&class=1&crossSellV2=true&pkgtype=2&R1=A' + adults + 'S0Ch0&Fpaffiliate=Vacations-Fodors';
			var cheapoairWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
	}
}

function createCarRentalsPartnerWindow(partner,prechecked,from,to,pickup_time,dropoff_time,depart_date,return_date,index) {
	var depart_arr = depart_date.toString().split("-");
	var return_arr = return_date.toString().split("-");
	var depart_year = depart_arr[0];
	var depart_month = depart_arr[1];
	var depart_day = depart_arr[2];
	var return_year = return_arr[0];
	var return_month = return_arr[1];
	var return_day = return_arr[2];
	var section = "car";
	var top = index * 50;
	var left = top + 50;

	switch(partner){
		case 'carrentals':
			var baseURL = 'http://www.carrentals.com/?cid=12539';
			var params = '&pickupMonthYear=' + depart_month + depart_year.slice(2,4) + '&pickupDay=' + depart_day + '&pickupTime=' + pickup_time + '&dropoffMonthYear=' + return_month + return_year.slice(2,4) + '&dropoffDay=' + return_day + '&dropoffTime=' + dropoff_time + '&pu=' + from + '&do=' + from;;
			var carrentalsWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'hotwire':
			var baseURL = 'http://www.hotwire.com/car/search-options.jsp?sid=S296&bid=B31111&inputId=index&selectedCarTypes=ECAR&startSearchType=N';
			var params = "&startLocation=" + from + "&startDay=" + depart_day +  "&startMonth=" + depart_month + '&startTime=' + pickup_time + "00&endDay=" + return_day + "&endMonth=" + return_month + '&endTime=' + dropoff_time + '00';
			var hotwireWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'onetime':
			//var baseURL = 'http://www.onetime.com/cars?sid=20773';
			var baseURL = 'http://rd.onetime.com/?r=ot_fodors_car_checkbox-c_001';
			var params = '&inDate=' + depart_month + '/' + depart_day + '/' + depart_year + '&outDate=' + return_month + '/' + return_day + '/' + return_year + '&site=' + from + '&inTime=' + pickup_time + '&outTime=' + dropoff_time;
			var onetimeWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'travelticker':
			var baseURL = 'http://www.travel-ticker.com/category.jsp?';
			var params = 'actionType=1&categoryType=Type&categoryName=Cars&vert=car&dest=' + from + '&startDate=' + depart_month + '/' + depart_day + '/' + depart_year + '&startTime=' + pickup_time + '00&endDate=' + return_month + '/' + return_day + '/' + return_year + '&endTime=' + dropoff_time + '00&sid=S296&bid=B311496';
			var traveltickerWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
		case 'bookingbuddy':
			var baseURL = 'http://ad.doubleclick.net/clk;214040904;35808036;w?http://rd.bookingbuddy.com/?r=bbs_fodors_car_checkbox-c_001';
			var params = '&pickup_city=' + from + '&pickup_month=' + depart_month + ' ' + depart_year + '&pickup_day=' + depart_day + '&pickup_time=' + pickup_time + '&dropoff_month=' + return_month + ' ' + return_year + '&dropoff_day=' + return_day + "&dropoff_time=" + dropoff_time;
			var bookingbuddyWindow = openPartnerWindow(baseURL + params,partner,top,left);
			countClick(partner,prechecked,section);
			break;
	}
}

function countClick(partner,prechecked,section) {
	var randNum = Math.floor(Math.random()*100000);
	var pic = new Image();
	pic.src='http://ad.doubleclick.net/adj/fdrs.bookingwidget/' + section + '/' + partner + prechecked + ';key=values;sz=1x1;ord=' + randNum;
}

function getMonthAbbrev(month) {
	var lookup = eval({"01":"JAN","02":"FEB","03":"MAR","04":"APR","05":"MAY","06":"JUN", "07":"JUL","08":"AUG","09":"SEP","10":"OCT","11":"NOV","12":"DEC"});
	return lookup[month];
}
function getMonthLastDay(month) {
	var lookup = eval({"01":"31","02":"28","03":"31","04":"30","05":"31","06":"30", "07":"31","08":"31","09":"30","10":"31","11":"30","12":"31"});
	return lookup[month];
}


if (
	($('#widget-wrapper').length != 0) || ($('#booking-widget').length != 0)) {


$(document).ready(function() {
	prepareWidget();
	});

function codesPop(codesURL,windowOptions,type) {
	var newWindow = window.open(codesURL,"popup",windowOptions);
	newWindow.type = type;
}


function prepareWidget() {
	if(!document.getElementById) return false;
	if(!document.getElementsByTagName) return false;
	var widget = document.getElementById("booking-widget");
	var tabs = document.getElementById("widget-tabs");
	var tab = tabs.getElementsByTagName("h4");
	var hotels_content = document.getElementById("hotels");
	var flights_content = document.getElementById("flights");
	var cruises_content = document.getElementById("cruises");
	var cars_content = document.getElementById("cars");
	var packages_content = document.getElementById("packages");
	var content = new Array();
		content[0] = hotels_content;
		content[1] = flights_content;
		content[2] = packages_content;
		content[3] = cars_content;
		content[4] = cruises_content;


	getProviders();
	
	/*for (t=0;t < tab.length;t++) {
		if (t > 0) {
			tab[t].className = "non-active";
			content[t].style.display = "none";
			tab[t].onclick = function() {
				this.className = "active";
				content[t].style.display = "block";

			}
		} else {
			tab[t].className = "active";
			content[t].style.display = "block";
			
		}
	}*/
	
	tab[0].className = "active";
	tab[1].className = "non-active";
	tab[2].className = "non-active";
	tab[3].className = "non-active";
	tab[4].className = "non-active";
			
	content[0].style.display = "block";
	content[1].style.display = "none";
	content[2].style.display = "none";
	content[3].style.display = "none";
	content[4].style.display = "none";
	
	tab[0].onclick = function() {
		tab[0].className = "active";
		tab[1].className = "non-active";
		tab[2].className = "non-active";
		tab[3].className = "non-active";
		tab[4].className = "non-active";
		content[0].style.display = "block";
		content[1].style.display = "none";
		content[2].style.display = "none";
		content[3].style.display = "none";
		content[4].style.display = "none";
	}

	tab[1].onclick = function() {
		tab[0].className = "non-active";
		tab[1].className = "active";
		tab[2].className = "non-active";
		tab[3].className = "non-active";
		tab[4].className = "non-active";
		content[0].style.display = "none";
		content[1].style.display = "block";
		content[2].style.display = "none";
		content[3].style.display = "none";
		content[4].style.display = "none";
	}
		
	tab[2].onclick = function() {
		tab[0].className = "non-active";
		tab[1].className = "non-active";
		tab[2].className = "active";
		tab[3].className = "non-active";
		tab[4].className = "non-active";
		content[0].style.display = "none";
		content[1].style.display = "none";
		content[2].style.display = "block";
		content[3].style.display = "none";
		content[4].style.display = "none";
	}

	tab[3].onclick = function() {
		tab[0].className = "non-active";
		tab[1].className = "non-active";
		tab[2].className = "non-active";
		tab[3].className = "active";
		tab[4].className = "non-active";
		content[0].style.display = "none";
		content[1].style.display = "none";
		content[2].style.display = "none";
		content[3].style.display = "block";
		content[4].style.display = "none";
	}

	tab[4].onclick = function() {
		tab[0].className = "non-active";
		tab[1].className = "non-active";
		tab[2].className = "non-active";
		tab[3].className = "non-active";
		tab[4].className = "active";
		content[0].style.display = "none";
		content[1].style.display = "none";
		content[2].style.display = "none";
		content[3].style.display = "none";
		content[4].style.display = "block";
	}

	var submit_hotels = document.getElementById("submit_hotels");
	submit_hotels.onclick = processHotels;
	
	var submit_flights = document.getElementById("submit_flights");
	submit_flights.onclick = processFlights;
	
	var submit_packages = document.getElementById("submit_packages");
	submit_packages.onclick = processPackages;

	var submit_carrentals = document.getElementById("submit_carrentals");
	submit_carrentals.onclick = processCarRentals;
	
	var submit_cruises = document.getElementById("submit_cruises");
	submit_cruises.onclick = processCruises;

	var location_link = document.getElementById("location_link");
	location_link.onclick = function () {
		codesPop(this.getAttribute("href"),"width=400,height=400","location");
		return false;
	}

	var from_link = document.getElementById("from_link");
	from_link.onclick = function () {
		codesPop(this.getAttribute("href"),"width=725,height=400,scrollbars=yes,resizable=yes","from");
		return false;
	}

	var to_link = document.getElementById("to_link");
	to_link.onclick = function () {
		codesPop(this.getAttribute("href"),"width=725,height=400,scrollbars=yes,resizable=yes","to");
		return false;
	}

	var p_from_link = document.getElementById("p_from_link");
	p_from_link.onclick = function () {
		codesPop(this.getAttribute("href"),"width=725,height=400,scrollbars=yes,resizable=yes","p_from");
		return false;
	}

	var p_to_link = document.getElementById("p_to_link");
	p_to_link.onclick = function () {
		codesPop(this.getAttribute("href"),"width=725,height=400,scrollbars=yes,resizable=yes","p_to");
		return false;
	}

	var r_from_link = document.getElementById("r_from_link");
	r_from_link.onclick = function () {
		codesPop(this.getAttribute("href"),"width=725,height=400,scrollbars=yes,resizable=yes","r_from");
		return false;
	}

	var r_to_link = document.getElementById("r_to_link");
	r_to_link.onclick = function () {
		codesPop(this.getAttribute("href"),"width=725,height=400,scrollbars=yes,resizable=yes","r_to");
		return false;
	}

	var wrapper = document.getElementById("widget-wrapper");
		if (wrapper) {
			wrapper.style.display = "block";
		}
}

//custom functions for autocomplete
function formatItem(row,position,count,search) {
	var arr = eval(row.toString());
	var display = arr[0] + '<span>' + arr[1] + '</span>';
	return display;
}
function formatResult(row,position,count,search) {
	var arr = eval(row.toString());
	return arr[2];
}
function formatMatch(row,position,count) {
	var arr = eval(row.toString());
	return arr[2];
}

//initialize autocomplate and date picker
$(document).ready(function() {

	$("#location").autocomplete("/lib/data_widget_location.cfm",{
		"minChars": 3,
		"highlight":false,
		"formatItem":formatItem,
		"formatResult":formatResult,
		"selectFirst":false,
		"refreshCallback": function() { refreshHotelPartners(); refreshRentalPartners(); }
	});
	$("#location").result(function(event, data, formatted) { 
		var arr = eval(data.toString());
		$("#location_id").val(arr[3]); 
		$("#location_name").val(arr[0]); 
		$("#state_code").val(arr[4]); 
		$("#country_code").val(arr[5]); 
	}); 

	$("#from").autocomplete("/lib/data_widget_airport.cfm",{
		"minChars": 3,
		"highlight":false,
		"formatItem":formatItem,
		"formatResult":formatResult,
		"mustMatch":true,
		"formatMatch":formatMatch,
		"selectFirst":true,
		"refreshCallback": function() { refreshAirportPartners(2,"from","to",listFlightProviders); }
	});

	$("#to").autocomplete("/lib/data_widget_airport.cfm",{
		"minChars": 3,
		"highlight":false,
		"formatItem":formatItem,
		"formatResult":formatResult,
		"mustMatch":true,
		"formatMatch":formatMatch,
		"selectFirst":true,
		"refreshCallback": function() { refreshAirportPartners(2,"from","to",listFlightProviders); }
	});

	$("#to").result(function(event, data, formatted) { 
		var arr = eval(data.toString());
		$("#state_code").val(arr[3]);
		$("#country_code").val(arr[4]);
	}); 

	$("#p_from").autocomplete("/lib/data_widget_airport.cfm",{
		"minChars": 3,
		"highlight":false,
		"formatItem":formatItem,
		"formatResult":formatResult,
		"mustMatch":true,
		"formatMatch":formatMatch,
		"selectFirst":true,
		"refreshCallback": function() { refreshAirportPartners(4,"p_from","p_to",listPackageProviders); }
	});

	$("#p_to").autocomplete("/lib/data_widget_airport.cfm",{
		"minChars": 3,
		"highlight":false,
		"formatItem":formatItem,
		"formatResult":formatResult,
		"mustMatch":true,
		"formatMatch":formatMatch,
		"selectFirst":true,
		"refreshCallback": function() { refreshAirportPartners(4,"p_from","p_to",listPackageProviders); }
	});

	$("#r_from").autocomplete("/lib/data_widget_airport.cfm",{
		"minChars": 3,
		"highlight":false,
		"formatItem":formatItem,
		"formatResult":formatResult,
		"mustMatch":true,
		"formatMatch":formatMatch,
		"selectFirst":true,
		"refreshCallback": function() { refreshAirportPartners(5,"r_from","r_to",listCarRentalProviders); }
	});

	$("#r_to").autocomplete("/lib/data_widget_airport.cfm",{
		"minChars": 3,
		"highlight":false,
		"formatItem":formatItem,
		"formatResult":formatResult,
		"mustMatch":true,
		"formatMatch":formatMatch,
		"selectFirst":true,
		"refreshCallback": function() { refreshAirportPartners(5,"r_from","r_to",listCarRentalProviders); }
	});

	var today = new Date();
	var tomorrow = new Date();
	tomorrow.setDate(today.getDate() + 1);

	function getCheckoutReturn(str) {
			var arr = str.split("-");
			var year = arr[0];
			var month = arr[1] - 1;
			var day = parseInt(arr[2]) + 1;
			var start_date =  new Date();
			start_date.setFullYear(year);
			start_date.setMonth(month);
			start_date.setDate(day);
			var new_year = start_date.getFullYear();
			var new_month = start_date.getMonth() + 1;
			var new_day = start_date.getDate();
			var tmp = new_year + "-0" + new_month  + "-0" + new_day;
			var re = /(-)0(\d\d)/g;
			end_date = tmp.replace(re,"$1$2");
			return end_date;
	}

	$('#checkin-datepicker').datepicker({
		dateFormat: 'yy-mm-dd',
		buttonImage: '/images/calendar.png',
		buttonImageOnly: true,
		showOn: 'button',
		minDate: today,
		onSelect: function(date) {0.
			$('#checkin-date').val(date);
			var checkout = getCheckoutReturn(date);
			$('#checkout-date').val(checkout);
		},
		beforeShow: function() {
			$(this).val($('#checkin-date').val());
			return {};
		}
	});
	
	$('#checkout-datepicker').datepicker({
		dateFormat: 'yy-mm-dd',
		buttonImage: '/images/calendar.png',
		buttonImageOnly: true,
		showOn: 'button',
		minDate: tomorrow,
		onSelect: function(date) {0.
			$('#checkout-date').val(date);
		},
		beforeShow: function() {
			$(this).val($('#checkout-date').val());
			return {};
		}
	});

	$('#depart-datepicker').datepicker({
		dateFormat: 'yy-mm-dd',
		buttonImage: '/images/calendar.png',
		buttonImageOnly: true,
		showOn: 'button',
		minDate: today,
		onSelect: function(date) {0.
			$('#depart-date').val(date);
			var return_date = getCheckoutReturn(date);
			$('#return-date').val(return_date);
		},
		beforeShow: function() {
			$(this).val($('#depart-date').val());
			return {};
		}
	});

	$('#return-datepicker').datepicker({
		dateFormat: 'yy-mm-dd',
		buttonImage: '/images/calendar.png',
		buttonImageOnly: true,
		showOn: 'button',
		minDate: tomorrow,
		onSelect: function(date) {0.
			$('#return-date').val(date);
		},
		beforeShow: function() {
			$(this).val($('#return-date').val());
			return {};
		}
	});
	
	$('#p_depart-datepicker').datepicker({
		dateFormat: 'yy-mm-dd',
		buttonImage: '/images/calendar.png',
		buttonImageOnly: true,
		showOn: 'button',
		minDate: today,
		onSelect: function(date) {0.
			$('#p_depart-date').val(date);
			var return_date = getCheckoutReturn(date);
			$('#p_return-date').val(return_date);
		},
		beforeShow: function() {
			$(this).val($('#p_depart-date').val());
			return {};
		}
	});

	$('#p_return-datepicker').datepicker({
		dateFormat: 'yy-mm-dd',
		buttonImage: '/images/calendar.png',
		buttonImageOnly: true,
		showOn: 'button',
		minDate: tomorrow,
		onSelect: function(date) {0.
			$('#p_return-date').val(date);
		},
		beforeShow: function() {
			$(this).val($('#p_return-date').val());
			return {};
		}
	});

	$('#r_depart-datepicker').datepicker({
		dateFormat: 'yy-mm-dd',
		buttonImage: '/images/calendar.png',
		buttonImageOnly: true,
		showOn: 'button',
		minDate: today,
		onSelect: function(date) {0.
			$('#r_depart-date').val(date);
			var return_date = getCheckoutReturn(date);
			$('#r_return-date').val(return_date);
		},
		beforeShow: function() {
			$(this).val($('#r_depart-date').val());
			return {};
		}
	});

	$('#r_return-datepicker').datepicker({
		dateFormat: 'yy-mm-dd',
		buttonImage: '/images/calendar.png',
		buttonImageOnly: true,
		showOn: 'button',
		minDate: tomorrow,
		onSelect: function(date) {0.
			$('#r_return-date').val(date);
		},
		beforeShow: function() {
			$(this).val($('#r_return-date').val());
			return {};
		}
	});

});

};
