
	// Some globals
	var trimmedOBdep;
	var trimmedOBarr;
	var trimmedIBdep;
	var trimmedIBarr;
	var depapt = new Array();
	var arrapt = new Array();
	var directonly;

	$(document).ready(function(){
		// Default to return flights
		$("[name=radioval]").attr("checked", false);
		$("#return").attr("checked", true);
		lockReturn();
		// Popup calender initialization
        $(".datepicker").datepicker({  
			showOn: 'both', 
			buttonImage: 'quicksearch/images/calendar.gif', 
			buttonImageOnly: true, 
			showAnim: '',
			minDate: 0 
		});
		
		// Autocomplete initilialization
        $(".citySelect")
			.autocomplete(airports, {
				autoFill: false,
				selectFirst: true,
				max: 18,
				mustMatch: false,
				matchContains: true,
				scrollHeight: 220,
				width: 260
			})
			.result(function() {
			  completeAutofill();
			  if ($(this).attr("id") == "OBdep")
				$("#OBarr").focus();
			  if ($(this).attr("id") == "OBarr") 
				$("#DepDate").focus();
		});
		
		// AutoFill for return flights
		$("#OBdep, #OBarr").change(function () {
			completeAutofill();
		});
		// Attach actions to the radio button options
        $("#return").change(function() {

           showReturn();
        });
        $("#oneway").change(function() {

           hideReturn();
        });
        $("#multicity").change(function() {
           lockReturn();
           multiOn();
		   
        });
	
		// For our good friend ie6 to show transparent pings
		$('.pngfx,.outbound-header,.inbound-header,.price').ifixpng();
	});
    
   

// Attach actions to the radio button options
        $("#return").change(function() {
           multiOff();
           showReturn();
        });

        $("#oneway").change(function() {
			$("#adatecol, #atimecol").hide();
           multiOff();
        });
        $("#multicity").change(function() {
           multiOn();
        });
		
		
    function showReturn() {
        $("#adatecol, #atimecol").fadeIn();
    }
    function hideReturn() {
        $("#adatecol, #atimecol").fadeOut();
    }
    function lockReturn() {
        $("#return-row-1").slideDown();
        $("#IBarr").attr("disabled", true);
        $("#IBdep").attr("disabled", true);
    }
    function multiOn() {
		$("#multicity-flights input").removeAttr("disabled");
        $("#mainflights").slideUp(300, function(){
            $("#multicity-flights").slideDown(250, function() {
				$(".numbercol1 > .mask").fadeOut(250, function() {
					$(".numbercol2 > .mask").fadeOut(250, function() {
						$(".numbercol3 > .mask").fadeOut(250, function() {
							$(".numbercol4 > .mask").fadeOut(250);
						});
					});
				});
			});
        });
        $("#mainflights input").attr("disabled", true);
    }
    function multiOff() {
        $("#multicity-flights").slideUp(300, function(){
            $("#mainflights").slideDown(300);
        });
		$(".mask").show();
		$("#mainflights input").removeAttr("disabled");
		$("#multicity-flights input").attr("disabled", true);
    }
	
	/*
	Begin form processing scripts.
	The following scripts process the submission form and error check before sending.
	*/
	
	//Return flights auto fill the inbound destinations.
	function completeAutofill() {
		if ($('[name=radioval]:checked').val() == "R") {
			$("#IBarr").val($("#OBdep").val());
			$("#IBdep").val($("#OBarr").val());
		}
	}
	
	// Generic trimming functions to pull the airport code out of city names
	function trim(str, chars) {
		return ltrim(rtrim(str, chars), chars);
	}
	function ltrim(str, chars) {
		chars = chars || "\\s";
		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
	}
	function rtrim(str, chars) {
		chars = chars || "\\s";
		return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
	}

    // Trim the city names to include only the three character airport code for form submission,
	// then assign the trimmed airport codes to hidden fields.
    function trimCities() {

        var arr = $("#OBarr").val();
        var n = arr.indexOf('(');
        var arrn = "";
        
        if(n>0) {
            arrn=arr.substring(n+1,arr.length-1);
            $("#OBarrvl").val(trim(arrn,' '));
        } else {
            $("#OBarrvl").val(arr);
        }

        arr = $("#OBdep").val();
        n = arr.indexOf('(');
        if(n>0) {
            arrn=arr.substring(n+1,arr.length-1);
            $("#OBdepart").val(trim(arrn,' '));
        } else {
            $("#OBdepart").val(arr);
        }
        
        arr = $("#IBdep").val();
        n = arr.indexOf('(');
        if(n>0) {
            arrn=arr.substring(n+1,arr.length-1);
            $("#IBdepart").val(trim(arrn,' '));
        } else {
            $("#IBdepart").val(arr);
        }
        
        arr = $("#IBarr").val();
        n = arr.indexOf('(');
        if(n>0) {
            arrn=arr.substring(n+1,arr.length-1);
            $("#IBarrvl").val(trim(arrn,' '));
        } else {
            $("#IBarrvl").val(arr);
        }
        
        return true;
    }
	
	function checkDepartAndArrivalDates() {
		var departureDate = $("#DepDate").val();
		var arrivalDate = $("#ArrDate").val();
		
		
		if (departureDate == null || departureDate == "") {
			createDialog($("#DepDate"), 'Please enter a departure date.', 'Departure Date Error');
			return false;
		}
		if ((arrivalDate == null || arrivalDate == "") && ($('[name=radioval]:checked').val() == "R")) {
			createDialog($("#ArrDate"), 'Please enter an return date.', 'Return Date Error');
			return false;
		}
		
		try {
			departureDate = $.datepicker.parseDate('mm/dd/yy', departureDate);
		} catch (e) {
			if (e == "Invalid date") { 
				createDialog($("#DepDate"), 'Your departure date does not appear to be a valid date.', 'Departure Date Error');
			} else {
				createDialog($("#DepDate"), 'Please ensure that your departure date follows the format mm/dd/yyyy.', 'Departure Date Error');
			}
			return false;
		}
		
		try {
			arrivalDate = $.datepicker.parseDate('mm/dd/yy', arrivalDate);
		} catch (e) {
			if (e == "Invalid date") { 
				createDialog($("#ArrDate"), 'Your return date does not appear to be a valid date.', 'Departure Date Error');
			} else {
				createDialog($("#ArrDate"), 'Please ensure that your return date follows the format mm/dd/yyyy.', 'Departure Date Error');
			}
			return false;
		}
		
		if ( (departureDate > arrivalDate) && ($('[name=radioval]:checked').val() == "R")) {
			createDialog($("#ArrDate"), 'Your departure date must be before your return date.', 'Date Conflict Error');
			return false;
		}
		return true;
	}
	
	function checkTotPax() {
		if (parseInt($("#nbinfants").val()) > parseInt($("#nbadults").val())) {
			createDialog($("#nbinfants"), 'The number of adults must be greater than the number of infants.', 'Too Many Infants');
			return false;
		}
		if ((parseInt($("#nbadults").val()) + parseInt($("#nbchilds").val())) > 8) {
			createDialog($("#nbadults"), 'The total number of Adults and Children cannot exceed 8.', 'Too Many Passengers');
			return false;
		}
		if (parseInt($("#nbchilds").val()) > (parseInt($("#nbadults").val()) *2)) {
			createDialog($("#nbadults"), 'We permit a maximum of 2 children per adult or 1 child and 1 infant per adult, for a total of 9 passengers, including infants.', 'Passenger Limit Error');
			return false;
		}
		if ((parseInt($("#nbchilds").val()) + parseInt($("#nbinfants").val())) > (parseInt($("#nbadults").val()) *2)) {
			createDialog($("#nbadults"), 'We permit a maximum of 2 children per adult or 1 child and 1 infant per adult, for a total of 9 passengers, including infants.', 'Passenger Limit Error');
			return false;
		}
		if ((parseInt($("#nbchilds").val()) + parseInt($("#nbinfants").val()) + parseInt($("#nbadults").val())) > 9) {
			createDialog($("#nbadults"), 'We permit a maximum of 2 children per adult or 1 child and 1 infant per adult, for a total of 9 passengers, including infants.', 'Passenger Limit Error');
			return false;
		}

		return true;
	}

	/*function checkAirline (strng) {
		if (strng==null)
			strng="";
		if(strng != "") {
			if (strng.length > 2) {
			
				if (strng.length < 5) {
					createDialog($("#Airline"), 'The Airline Code must be either two or five characters.', 'Airline Code Error');
					return false;
				}
				if(strng.indexOf("/")== -1) {
					createDialog($("#Airline"), 'The Airline Code must have a Slash.', 'Airline Code Error');
					return false;
				}
				if (strng.indexOf("/")!= 2) {
					createDialog($("#Airline"), 'The Airline Code Slash must be the third character.', 'Airline Code Error');
					return false;
				}
				
				return true;
					
			} else {
				alert ("Your Airline Code is too short. The Airline Code must be either two or five characters!");
				return false;
			}
		} else {
			return true;
		}
	}*/

	function createDialog(element, errorText, errorTitle) {
		if (!errorTitle) 
			errorTitle = "Error";
		//For positioning the popup box, use offsets of the passed element.
		var offsetX = 10;
		var offsetY = 10;
		
		var offsetBox = element;
		offsetX = offsetBox.offset().left + 75;
		offsetY = offsetBox.offset().top - 8;
		
		//Custom alert dialog initilialization 
		var $dialog = $('<div></div>')
				.html('Error!')
				.dialog({
					autoOpen: false,
					title: errorTitle,
					buttons: { "Ok": function() { $(this).dialog("close"); } },
					modal: true,
					draggable: false,
					height: 120,
					position: [offsetX,offsetY]
				});
				
				
		$dialog.html(errorText);
		$dialog.dialog('open');
	}
	
// Check all field inputs for validity.
	function checkWholeForm() {
		
		// ********* Muthukumar 13-Apr-2010 ***********
			var first = $("#first").val();
			var last = $("#last").val();
			var email = $("#email").val();
			var phnumber = $("#phnumber").val();
			var agentbooking = $("#agentbooking").val();
			var ownbooking = $("#ownbooking").val();
		// ********* Muthukumar 13-Apr-2010 ***********
				
		directonly = $('#directOnly').attr('checked')?1:0;
	
		if (!checkTotPax())
			return false;
		
		//if (!checkAirline($("#Airline").val()))
		//	return false;
			if ($("#first").val() == "") {
				createDialog($("#first"), 'You must enter a first name.', 'Firstname Location Error');
				return false;
			}
			
			if ($("#last").val() == "") {
				createDialog($("#first"), 'You must enter a last name.', 'Lastname Location Error');
				return false;
			}
			
			if ($("#email").val() == "") {
				createDialog($("#email"), 'You must enter a email.', 'E-Mail Location Error');
				return false;
			}
			
			if ($("#phnumber").val() == "") {
				createDialog($("#phnumber"), 'You must enter a phone number.', 'Phone Number Location Error');
				return false;
			}

		if ($("#OBdep").val() == "") {
			createDialog($("#OBdep"), 'You must enter a departure location.', 'Departure Location Error');
			return false;
		}
		
		if ($("#OBarr").val() == "") {
			createDialog($("#OBarr"), 'You must enter an arrival location.', 'Arrival Location Error');
			return false;
		}
		
		
		if (!checkDepartAndArrivalDates()) 
			return false;
			
		// Trim the city names to get airport codes
		var fullcity = "";
		var airportCode = "";
		var n = 0;
		
		fullcity = $("#OBdep").val();
		n = fullcity.indexOf('(');
		if (n>0) {
			airportCode = fullcity.substring(n+1,fullcity.length-1);
			trimmedOBdep = trim(airportCode,' ');
		} else { 
			trimmedOBdep = fullcity;
		}
		
		fullcity = $("#OBarr").val();
		n = fullcity.indexOf('(');
		if (n>0) {
			airportCode = fullcity.substring(n+1,fullcity.length-1);
			trimmedOBarr = trim(airportCode,' ');
		} else { 
			trimmedOBarr = fullcity;
		}
		
		fullcity = $("#IBdep").val();
		n = fullcity.indexOf('(');
		if (n>0) {
			airportCode = fullcity.substring(n+1,fullcity.length-1);
			trimmedIBdep = trim(airportCode,' ');
		} else { 
			trimmedIBdep = fullcity;
		}
		
		fullcity = $("#IBarr").val();
		n = fullcity.indexOf('(');
		if (n>0) {
			airportCode = fullcity.substring(n+1,fullcity.length-1);
			trimmedIBarr = trim(airportCode,' ');
		} else { 
			trimmedIBarr = fullcity;
		}
		
		/*var newURL = "http://www.skylinkcanada.com/cbe/faresdisp.aspx?OBDep=" + trimmedOBdep +
					"&OBArr="		+ trimmedOBarr +
					"&IBDep="		+ trimmedIBdep +
					"&IBArr="		+ trimmedIBarr +
					"&Airline="		+ $("#Airline").val() +
					"&DepDate="		+ $("#DepDate").val() +
					"&ArrDate="		+ $("#ArrDate").val() +
					"&FareType="	+ $("#FareType").val() +
					"&radioval="	+ $('[name=radioval]:checked').val() +
					"&LowestFares="	+ "" +
					"&nbadults="	+ $("#nbadults").val() +
					"&nbchilds="	+ $("#nbchilds").val() +
					"&nbinfants="	+ $("#nbinfants").val() +
					"&OBtime="		+ $("#OBtime").val() +
					"&IBtime="		+ $("#IBtime").val() +
					"&directOnly="	+ directonly;*/
					
		var newURL="quicksearch/index-standard.php?testflag=test&first=" + first +
					"&last=" + last +
					"&email=" + email +
					"&phnumber=" + phnumber +
					"&OBDep="       + trimmedOBdep +
					"&OBArr="		+ trimmedOBarr +
					"&IBDep="		+ trimmedIBdep +
					"&IBArr="		+ trimmedIBarr +
					"&Airline="		+ $("#Airline").val() +
					"&DepDate="		+ $("#DepDate").val() +
					"&ArrDate="		+ $("#ArrDate").val() +
					"&FareType="	+ $("#FareType").val() +
					"&radioval="	+ $('[name=radioval]:checked').val() +
					"&LowestFares="	+ "" +
					"&nbadults="	+ $("#nbadults").val() +
					"&nbchilds="	+ $("#nbchilds").val() +
					"&nbinfants="	+ $("#nbinfants").val() +
					"&OBtime="		+ $("#OBtime").val() +
					"&IBtime="		+ $("#IBtime").val() +
					"&agentbooking="	+ $("#agentbooking").val() +
					"&ownbooking="	+ $("#ownbooking").val() +
					"&directOnly="	+ directonly;
					
    	 top.location.href=newURL;

		 return false;
	}
	
