$(function(){
   	$("#depart_date").datepicker({showAnim: '',duration: 0,showButtonPanel: true,closeText: 'Close',numberOfMonths: 1,showOn: 'both', buttonImage: 'http://www.flightnetwork.com/images/calendar.gif', buttonImageOnly: true,defaultDate: '',minDate:'',maxDate: '+330D',
								  onClose: function(selectedDate) {
												var dDate= $("#depart_date").datepicker("getDate");
								  				var rDate= $("#return_date").datepicker("getDate");
								  				if (dDate > rDate){
								  					$("#return_date").val(add_days($("#depart_date").datepicker("getDate"),3));
												}
								 }});
	$("#return_date").datepicker({showAnim: '',duration: 0,showButtonPanel: true,closeText: 'Close',numberOfMonths: 1,showOn: 'both', buttonImage: 'http://www.flightnetwork.com/images/calendar.gif', buttonImageOnly: true,defaultDate: '',beforeShow:customRange,
								  minDate: '',maxDate: '+330D'});

	$("#return_date,#return_date_label img").click(function(){
        if($("#depart_date").val() == 'mm/dd/yyyy' && !document.SearchFare.trip_type[1].checked){
            alert("Please Select Departure Date First");
            $("#depart_date").datepicker("show");
        }
    });
    
	/* Autocompliter */
	var ttResultsClass = 'ac_results_3';/*Added for #14320*/
	
	$("#gateway_departure").autocomplete("/cgi-bin/b2c-v3/get_airport_new.cgi",{
		minChars: 3,
		resultsClass: ttResultsClass,
		delay: 0,
		max: 50,
		width: 350,
		scrollHeight: 1000,
		extraParams: { gateway_departure : function() { return $("#gateway_departure").val(); }} 
	});
	
	$("#gateway_return").autocomplete("/cgi-bin/b2c-v3/get_airport_new.cgi",{
		minChars: 3,
		resultsClass: ttResultsClass,
		delay: 0,
		max: 50,
		width: 350,
		scrollHeight: 1000,
		extraParams: {  gateway_return : function() { return $("#gateway_return").val(); }}
	});
	$("#dest_departure").autocomplete("/cgi-bin/b2c-v3/get_airport_new.cgi",{
		minChars: 3,
		resultsClass: ttResultsClass,
		delay: 0,
		max: 50,
		width: 350,
		scrollHeight: 1000,
		extraParams: {
		  dest_departure : function() { return $("#dest_departure").val(); }
	   	}
	});
	$("#dest_return").autocomplete("/cgi-bin/b2c-v3/get_airport_new.cgi",{
		minChars: 3,
		resultsClass: ttResultsClass,
		delay: 0,
		max: 50,
		width: 350,
		scrollHeight: 1000,
	   	extraParams: {
		  dest_return : function() { return $("#dest_return").val(); }
	   	}
	});	

	var evt = $.browser.msie ? "click" : "change";
	$("input[name='trip_type']").bind(evt, function () {
		if ($("input[name='trip_type']:checked").val() == '0') {
			$("#multicity_row").slideUp();
			$("#return_date").attr("disabled", true);
	        $("#return_date").datepicker("disable");
	    }
	    if ($("input[name='trip_type']:checked").val() == '1') {
			$("#multicity_row").slideUp(); 
			$("#return_date").attr("disabled", false);
	        $("#return_date").datepicker("enable");
	    }
		if ($("input[name='trip_type']:checked").val() == '2') {
			$("#multicity_row").slideDown();
			$("#return_date").attr("disabled", false);
	        $("#return_date").datepicker("enable"); 
	    }
	});
	
	//select all
	var fields= $('#gateway_departure,#gateway_return,#dest_departure,#dest_return');
	$(fields).click(function() {
			$(this).select();			
	});

	//recent search add
    getRecentSearches();

});
/* datepicker method */
function customRange(input) 
{
	if (input.id == "return_date") {
		if ($("#depart_date").datepicker("getDate") != null) {
			dateMin = $("#depart_date").datepicker("getDate");
		}
	}
	return { minDate: dateMin}; 
}
/* datepicker default date set +7,+14 */
function add_days(date, days){
	var n_days = new Number(days);
	var dt = new Date(date);
	dt.setDate(dt.getDate() + n_days);
	var month=(dt.getMonth()+1)<= 9 ?"0"+(dt.getMonth()+1):(dt.getMonth()+1);
	var date = dt.getDate()<=9?"0"+dt.getDate():dt.getDate();
	var date_str = month + '/' + date + '/' + dt.getFullYear();
	return date_str;
}

/* validation function */

function is_Empty(sfelem,Msg){
	if(sfelem.value.length == 0 || sfelem.value == 'mm/dd/yyyy'){
		alert(Msg);
		sfelem.focus(); 
		return false;
	}
	return true;
}
/* check date formate
    criteria :  mm/dd/yyyy 
	return	 :	true,false 
 */
function isValidDate(sfelem,Msg) {
    var dateStr     = sfelem.value;
    // Checks for the following valid date formats:
    // MM/DD/YY   MM/DD/YYYY   MM-DD-YY   MM-DD-YYYY
    var datePat     = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/; // requires 4 digit year

    var matchArray  = dateStr.match(datePat); // is the format ok?
    if (matchArray  == null) {
        alert(Msg);
        sfelem.focus();
        return false;
    }
    return true;    
}
/* check from and to is valid or not 
	criteria :  <3, >3,	==3
	set		 :	airport code set 
	return	 :	true,false 
*/
function is_valid_airport(sfelem,Msg) {
	var sfcity = sfelem.value;
	var sfelemid = sfelem.id;
	var code = sfcity.toUpperCase();
	if ( sfcity.length < 3 ) {
		alert(Msg);
		sfelem.focus(); 
		return false;
	}
	if ( sfcity.length >= 3 ) {
		var code = sfcity.replace(/.*\((...)\)/, "$1").toUpperCase();
	}
	if ( code.length == 3 ) {   	
		if (sfelemid == "gateway_departure"){
     		document.SearchFare.gateway_dep.value = code;
		}
		if (sfelemid == "gateway_return"){
      		document.SearchFare.gateway_ret.value = code;
		}
		if (sfelemid == "dest_departure"){
	   		document.SearchFare.dest_dep.value = code;
		}
		if (sfelemid == "dest_return"){
    		document.SearchFare.dest_ret.value = code;
		}
	return true;
	}
alert('Please make sure you have selected the right airport');
sfelem.focus();	
return false;
}

/* Compare Date */
function CompareDate(depart_date,return_date,Msg){
	var dDate = new Date(depart_date.value);
	var rDate = new Date(return_date.value);
	if (dDate > rDate){
		alert (Msg);
		return_date.focus(); 
		return false;
	}
return true;
}

/* check trip type  
	criteria :	0,1,2
	fn used  :  isEmpty,is_valid_airport
	set		 :	airport code set 
	return	 :	true,false 
*/
function check_trip(trip_type) {
	// All input ref
	var sftrip = $("input[name='trip_type']:checked").val();	
	var dest_departure = document.getElementById('dest_departure');
	var dest_return = document.getElementById('dest_return');
	var depart_date = document.getElementById('depart_date');
	var return_date = document.getElementById('return_date');
	
	if(sftrip == 2) {
		if(is_Empty(dest_departure,"Please make sure you have selected the right Destination Departure airport")) {
			if(is_valid_airport(dest_departure, "Please make sure you have selected the right Destination Departure airport")) {
				if(is_Empty(dest_return,"Please make sure you have selected the right Destination Return airport")) {
					if(is_valid_airport(dest_return, "Please make sure you have selected the right Destination Return airport")) {
						if(isValidDate(depart_date,"Please make sure you have selected the right Departure Date")){
							if(isValidDate(return_date,"Please make sure you have selected the right Return Date")) {	
								if(CompareDate(depart_date,return_date,"Please make sure Return Date not less than Departure Date")) {	
									return true;
								}
							}
						}
					}
				}
			}
		}
	}
	else if(sftrip == 1) {
		if(isValidDate(depart_date,"Please make sure you have selected the right Departure Date")){
			if(isValidDate(return_date,"Please make sure you have selected the right Return Date")) {
				if(CompareDate(depart_date,return_date,"Please make sure Return Date not less than Departure Date")) {
					return true;
				}
			}
		}
	}
	else if(sftrip == 0) {
		if(isValidDate(depart_date,"Please make sure you have selected the right Departure Date")) {
			return true;
		}
	}
    return false;
}
function check_travellers() {
    var no_adt = document.getElementById('adult').value;
	var no_chd = document.getElementById('child').value;
	var no_inf = document.getElementById('infant').value;
	
	if(no_inf > no_adt){
	    alert('Number of Infants must be less than equal to number of Adults');
        return false;
	}
	if(parseInt(no_adt)+parseInt(no_chd)+parseInt(no_inf) > 9) {
        alert('Total no of passengers should be less than or equal to 9');
        return false;
    } 
	return true;
}
/* main funtion for validate search form */
function SearchFareValidate() {
	// All input ref
	var gateway_departure = document.getElementById('gateway_departure');
	var gateway_return = document.getElementById('gateway_return');
	var trip_type = document.getElementById('trip_type');
		
	// Check each input in the order that it appears in the form!
	if(is_Empty(gateway_departure,"Please make sure you have selected the right Gateway Departure airport")){
		if(is_valid_airport(gateway_departure, "Please make sure you have selected the right Gateway Departure airport")){
			if(is_Empty(gateway_return,"Please make sure you have selected the right Gateway Return airport")){
				if(is_valid_airport(gateway_return, "Please make sure you have selected the right Gateway Return airport")){
					if(check_trip(trip_type)){
						if(check_travellers()){
						    saveCurrentData();
						    setRecentSearch();
						    return true;
					    }
					}
				}
			}
		}
	}
	return false;
}

/* set and get cookie */
// recentSearches.js

function saveCurrentData() 
{   
	var agent_flag = 0;
	var ac2u_flag = 0;
	for(i=0; i<document.SearchFare.elements.length; i++)
	{
		if (document.SearchFare.elements[i].name == 'agent_id'){
			agent_flag = 1;
		}
		if (document.SearchFare.elements[i].name == 'ac2u'){
			ac2u_flag = 1;
		}
		//document.write("The field name is: " + document.SearchFare.elements[i].name + " and it’s value is: " + document.SearchFare.elements[i].value + ".<br />");
	}
    var trip = document.SearchFare.trip_type[0].checked?1:0;
	if (document.SearchFare.trip_type[2].checked){
		trip = 2;
	}		
	var data = '';
	data = document.SearchFare.gateway_dep.value;
	data += ":" + document.SearchFare.gateway_ret.value;    	
	data += ":" + trip;
	data += ":" + document.SearchFare.depart_date.value;
	data += ":" + document.SearchFare.return_date.value;
	data += ":" + document.SearchFare.adult.value;
	data += ":" + document.SearchFare.child.value;
	data += ":" + document.SearchFare.infant.value;	
    data += ":" + document.SearchFare.cls.value;
	data += ":" + document.SearchFare.gateway_departure.value; 
	data += ":" + document.SearchFare.gateway_return.value; 
	data += ":" + document.SearchFare.dest_dep.value; 
	data += ":" + document.SearchFare.dest_ret.value; 
	data += ":" + document.SearchFare.dest_departure.value; 
	data += ":" + document.SearchFare.dest_return.value; 		
	data += ":" + document.SearchFare.client_ref.value;
    data += ":" + document.SearchFare.currency.value;
	if (ac2u_flag)
	{
		data += ":" + document.SearchFare.ac2u.value;
	}
	if (agent_flag)
	{
		//alert(document.SearchFare.agent_id.value);
		data += ":" + document.SearchFare.agent_id.value;
	}
	document.cookie= "fn_query=" + escape(data) + ";path=/";
	//alert(data);
}


