	function validateAirport(value) {
		setTimeout(function() {
			debugger ;
			if (!dropSemaphore) {
				new Ajax.Request('/shared_code/javascript/ajax/airportFinder.php?value='+value , {
					onSuccess: function(response) {
						var obj = eval("(" + response.responseText + ")");
						document.getElementById('city').value = obj.code ;
						document.getElementById('airport').value = obj.name ;
					}
				});
				
			} else { dropSemaphore = false; } 
		} , 300);
	}
	
	function showDepartCal(input) {
        if(typeof jQuery != 'undefined') jQuery.noConflict();

		var destID = $('destinationSelect').value ;
		var packageType = $('packageType').value;
		if( !destID || destinationArray[destID] == null) {
			showCalendarControl(input ,12);
			return ;
		}
        var lowDate = "";
        var highDate = "";
        if(packageType == '3'){
            lowDate = validateLowestDate(new Date(destinationArray[destID]['Low_VIP_Date']));
            highDate = new Date(destinationArray[destID]['High_VIP_Date']);
        }else{
            lowDate = validateLowestDate(new Date(destinationArray[destID]['Low_Rate_Date']));
            highDate = new Date(destinationArray[destID]['High_Rate_Date']);
            var min = destinationArray[destID]['Minimum_Nights'];
            highDate.setDate(highDate.getDate() - min);
        }

		showCalendarControl(input,12, lowDate , highDate);

        if(typeof jQuery != 'undefined') $ = jQuery.noConflict();
	}
	
	function showReturnCal(input) {
        if(typeof jQuery != 'undefined') jQuery.noConflict();

		var destID = $('destinationSelect').value ;
        var packageType = $('packageType').value;

		if( !destID  || destinationArray[destID] == null) {
			showCalendarControl(input ,10);
			return ;
		}

		var min = destinationArray[destID]['Minimum_Nights'] - 0;
		var departDate = getDepartDate();
		if (departDate) {
			var lowDate = new Date(departDate) ;
			var highDate = new Date(departDate) ;
			lowDate.setDate(lowDate.getDate() + min);
			highDate.setDate(highDate.getDate() + 14);
            var highLimit;
            if(packageType == '3'){
                highLimit = new Date(destinationArray[destID]['High_VIP_Date']);
            }else{
                highLimit = new Date(destinationArray[destID]['High_Rate_Date']);
            }

			if ( highDate < highLimit ) highDate = highLimit;
			showCalendarControl(input, 12, lowDate , highDate);
		}

        if(typeof jQuery != 'undefined') $ = jQuery.noConflict();
	}
	
	lowDate = Date.parse('today');
	highDate = Date.parse('today');	

	/**
	 * Make sure lowest date is greate than 3 days from now
	 * @param {Object} lowDate
	 */
	function validateLowestDate(lowDate) {
		//debugger;
		var today = new Date();
		today.setHours(0);
		today.setMinutes(0);
		today.setSeconds(0);
		if(adminaccess){
			today.setDate(today.getDate() - 14) ;
		}else{
			today.setDate(today.getDate() + 3) ;
		}
		if (lowDate < today) {
			lowDate = today;
		} 
		return lowDate;
	}
	
	function getLowestDate(lowDate) {
		//debugger;
		var date = validateLowestDate(lowDate);
		date.setDate(date.getDate()+1);
		return date ;
	}
	
	/**
	 * Validate the form and entails calling other all validators
	 */
	function validate() {
		//debugger;
		var result = true ;
		var package = document.getElementById("packageType").value;
		if(package == 1){
			result = (validateDepartDate() && validateReturnDate() && validateDepCity() && validateDestinationCity());
		}else if(package == 2){
			result = (validateDepartDate() && validateReturnDate() && validateDestinationCity());
		}else{
			result = (validateDestinationCity());
		}
		// result = (validateDepartDate() && validateReturnDate() && validateDepCity() )
		return result ;
	}
	
	function convert2Date(str) {
		var date = new Date(Date.parse(str));
		return date ;
	}
	
	function getDepartDate() {
		return convert2Date(document.getElementById('departDate').value);
	}

	function getreturnDate() {
		return convert2Date(document.getElementById('returnDate').value);
	}
	function setReturnDate(date) {
		if (!date) {
			document.getElementById('returnDate').value = '' ;
		} else {
			document.getElementById('returnDate').value = strToDisplayStr(dateToStr(date))  ;
		}
	}
	
	function getNights() {
		var nights = parseInt(document.getElementById('numNights').value);
		if (isNaN(nights))
			return false ;
		else
			return nights ;
	}
	function setNights(nights) {
		/*debugger ;
		for (var i = 0; i <= document.getElementById("numNights").length - 1; i = i + 1) {
			var val = document.getElementById("numNights").options[i].outerText;
			debugger ;
			if (val == nights) {
				document.getElementById("numNights").selectedIndex = i;
			}
		}*/
		document.getElementById('numNights').value = nights ;
	}
	
	function validateCommon() {
		//debugger;
		var departDate = getDepartDate();
		var returnDate = getreturnDate();

		if (departDate && returnDate) {
			if 	(returnDate > departDate && daysElapsed(departDate,returnDate) < 15) {
				setNights(daysElapsed(departDate,returnDate));
			} else {
				if (getNights()) {
					var nights = getNights();
					departDate = departDate.setDate(departDate.getDate() + nights);
					setReturnDate(new Date(departDate));
				} else {
					setReturnDate(null);
				}
			}
		} 
	}

	function validateDepDate() {
		
		document.getElementById("departDate").setAttribute("handModified" , "true");
		
		//debugger;
		if(!adminaccess){
			if (!validateDepartDate()) {
				document.getElementById('departDate').style.backgroundColor="red";
			} else {
				document.getElementById('departDate').style.backgroundColor="";
			}0
		} else {
			document.getElementById('departDate').style.backgroundColor="";
		}
	}
	function validateDepartDate() {
		//debugger;
		validateCommon() ; 
		var departDate = getDepartDate();
		var today = new Date();
		var destID = $('destinationSelect').value ;
		if (!destID || destinationArray[destID] == null) {
			return true ;
		}
		
		if (destID != "") {
			var lowestDate = new Date(destinationArray[destID]['Low_Rate_Date']);
			if (departDate < lowestDate) {
				alert("The first available travel date is " + lowestDate.toLocaleDateString() + " For departures within 3 days of hotel check-in please call 1-800-648-4849");
				return false;
			}
		}
		
		if(adminaccess){
			today.setDate(today.getDate()-14);
		}else{
			today.setDate(today.getDate()+3);
		}
		if (departDate < today ) {
			if (departDate < new Date()) {
				alert("Invalid Date");
			}
			else {
				alert("For departures within the next 3 days please call 1-800-648-4849");
			}
			return false;
		}
		
		var highDate = new Date(destinationArray[destID]['High_Rate_Date']);
		if(destinationArray[destID] == null){
			var min = 1;
		}else{
			var min = destinationArray[destID]['Minimum_Nights'];
		}
		highDate.setDate(highDate.getDate()-min);
		
		if (departDate > highDate) {
			alert("Call 1-800-648-4849 for rates on departures after "+highDate);
			return false;
		}
		return true ;
	}
	function validateRetDate() {

		document.getElementById("returnDate").setAttribute("handModified" , "true");
		
		if (!validateReturnDate()) {
			document.getElementById('returnDate').style.backgroundColor="red";
		} else {
			document.getElementById('returnDate').style.backgroundColor="";
		}
	}
	
	function validateReturnDate() { 
		validateCommon() ;
		var destID = document.getElementById('destinationSelect').value ;
		
		if (!destID) {
			return true ;
		}
		
		
		
		var returnDate = getreturnDate();
		
		var departDate = getDepartDate();
		if(destinationArray[destID] == null){
			var min = 1;
			var highLimit = new Date();
			highLimit.setMonth( highLimit.getMonth() + 11 );
		}else{
			var min = destinationArray[destID]['Minimum_Nights'] - 0;
			var highLimit = new Date(destinationArray[destID]['High_Rate_Date']);
		}
		var lowDate = new Date(departDate) ;
		var highDate = new Date(departDate) ;
		lowDate.setDate(lowDate.getDate() + min);
		highDate.setDate(highDate.getDate() + 14); 
		if ( highDate < highLimit ) highDate = highLimit;
		if (returnDate > highDate || returnDate < lowDate) {
			alert("Return Date out of range!");
			return false;
		}
		return true ;
	}
	
	function validateNights(nights) {
		 if (nights) {
		 	var departDate = getDepartDate();
			nights = nights - 0;
			departDate.setDate(departDate.getDate()+nights);
			setReturnDate(departDate);
		 } 
	} 

	function validateDestinationCity(){
		if (document.getElementById('destinationSelect').value == "-1") {
			alert('Destination Invalid');
			return false;
		}
		return true ;
	}

	function validateDepCity() {
		if (document.getElementById('departureSelect').value == "") {
			alert('Departure City/Airport Invalid');
			return false;
		}
		return true ;
	}
	
	
	function daysElapsed(date1,date2) {
	    var difference = "";
	    if((date1 != null) && (date2 != null)){
			difference = Date.UTC(date2.getYear(),date2.getMonth(),date2.getDate(),0,0,0) - Date.UTC(date1.getYear(),date1.getMonth(),date1.getDate(),0,0,0);
	    	difference = difference/1000/60/60/24;

	    }
	    return difference;
	}
	
	function dateToStr(date){
		month = date.getMonth()+1;
		if(month < 10){
			month = "0"+month;
		}
		day = date.getDate();
		if(day < 10){
			day = "0"+day;
		}
		return date.getFullYear()+"-"+month+"-"+day;
	}
	
	function strToDisplayStr(str){
		var displayStr = "";
		var date = /(\d{4})-(\d{2})-(\d{2})/;
		if(date.test(str)){
			var year = RegExp.$1;
			var month = RegExp.$2;
			var day = RegExp.$3;
			displayStr = month+"/"+day+"/"+year;
		}
		return displayStr;
	}

	function selectAirHotelPackages( idx )
	{
		if(typeof jQuery != 'undefined') jQuery.noConflict();
		$('citySelect').show();
		$('noCitySelect').hide();
		$('dateContainer').show();
		$('destination_select').show();
		if($('vip_destination_select') !== null){
			$('vip_destination_select').hide();
		}
		$('button').value = 'Search Packages';
		$('engineTitle').innerHTML = "Book Your Vacation Package";
	//	$('bookingengine').style.backgroundColor='#FFD228';
		
		var destId = $('destinationSelect').value;
		
		document.getElementById('tabDestinationOptions').innerHTML = packageDropDown;

        //check if a destination is set, if not, leave destId as -1
		if(destId ==-1){
			destId=-1;
		}
		// If destination allows air
		else if(destinationArray[destId]['Allow_Air'] == "0"){
            destId = -1;
        }

        $('destinationSelect').value = destId;
		document.getElementById('packageType').value = 1;
		$('packageTab').className ='leftBookingTabOn';
		$('hotelOnlyTab').className ='centerBookingTabOff';
		$('partyTab').className ='rightBookingTabOff';
		if(typeof jQuery != 'undefined') $ = jQuery.noConflict();
	}

	function selectHotelOnly( idx )
	{
		if(typeof jQuery != 'undefined') jQuery.noConflict();
		$('citySelect').hide();
		$('noCitySelect').show();
		$('dateContainer').show();
		$('destination_select').show();
		if($('vip_destination_select') !== null){
			$('vip_destination_select').hide();
		}
		$('button').value = 'Search Hotels';
		$('engineTitle').innerHTML = "Book Your Hotel Only Package";

		var destId = $('destinationSelect').value;
		document.getElementById('tabDestinationOptions').innerHTML = hotelDropDown;
		$('destinationSelect').value = destId;
		$('packageTab').className ='leftBookingTabOff';
		$('hotelOnlyTab').className ='centerBookingTabOn';
		$('partyTab').className ='rightBookingTabOff';
		document.getElementById('packageType').value = 2;
		if(typeof jQuery != 'undefined') $ = jQuery.noConflict();
	}

	function selectVIPPartyPackages( idx )
	{
		if(typeof jQuery != 'undefined') jQuery.noConflict();
		var destId = $('destinationSelect').value;
		$('citySelect').hide();
		$('dateContainer').show();
		$('button').value = 'Search VIP Packages';
		$('engineTitle').innerHTML = "Book Your VIP Party Package";
		document.getElementById('packageType').value = 3;
		document.getElementById('tabDestinationOptions').innerHTML = vipDropDown;
		$('destinationSelect').selected = destId;
		$('packageTab').className ='leftBookingTabOff';
		$('hotelOnlyTab').className ='centerBookingTabOff';
		$('partyTab').className ='rightBookingTabOn';
		if(typeof jQuery != 'undefined') $ = jQuery.noConflict();
	}
