	

var valid = true;
			
$(function() {

	$( ".autoAirportSearch").autocomplete({
		source: function( request, response ) {
			$.ajax({
				url: "/model/bookingengine/suggestairport.cfm",
				dataType: "json",
				data: {
					city: request.term
				},
				success: function( data ) {
					response( $.map( data, function( item ) {
						return {
							label: item.airport,
							value: item.airport
						}
					}));
				}
			});
		},
		minLength: 3
	});
	
	$( ".autoAirlineSearch").autocomplete({
		source: function( request, response ) {
			$.ajax({
				url: "/model/bookingengine/suggestairline.cfm",
				dataType: "json",
				data: {
					airline: request.term
				},
				success: function( data ) {
					response( $.map( data, function( item ) {
						return {
							label: item.airline,
							value: item.airline
						}
					}));
				}
			});
		},
		minLength: 2
	});

	$( ".autoRelatedCitySearch").autocomplete({
		source: function( request, response ) {
			$.ajax({
				url: "/model/bookingengine/suggestrelatedcity.cfm",
				dataType: "json",
				data: {
					airline: request.term
				},
				success: function( data ) {
					response( $.map( data, function( item ) {
						return {
							label: item.displayValue,
							value: item.selectionValue
						}
					}));
				}
			});
		},
		minLength: 3
	});

	$( ".autoRelatedCitySearch" ).catcomplete({
		source: function( request, response ) {
			$.ajax({
				url: "/model/bookingengine/suggestrelatedcity.cfm",
				dataType: "json",
				data: {
					city: request.term
				},
				success: function( data ) {
					response( $.map( data, function( item ) {
						return {
							label: item.displayValue,
							category: item.category
						}
					}));
				}
			});
		},
		minLength: 3
	});
	
	$('input[name=tabPick]').click(function() {
		$('#airfareTabs > div').hide();
	    $('#' + $(this).val()).show();
	});
	
	$('.autoTabs').tabs();
	
	$( ".autoDatePicker" ).datepicker({
		defaultDate: "+3d",
		changeMonth: true,
		numberOfMonths: 2,
		minDate: "+3d",
		maxDate: "+10m"		
	});
		
});

	$.widget( "custom.catcomplete", $.ui.autocomplete, {
		_renderMenu: function( ul, items ) {
			var self = this,
				currentCategory = "";
			$.each( items, function( index, item ) {
				if ( item.category != currentCategory ) {
					ul.append( "<li class='ui-autocomplete-category'>" + item.category + "</li>" );
					currentCategory = item.category;
				}
				self._renderItem( ul, item );
			});
		}
	});
		
function bindStartAndEndDates(startID,endID) {
	var dates = $( "#" + startID + ", #" + endID).datepicker({
		defaultDate: "+3d",
		changeMonth: true,
		numberOfMonths: 2,
		minDate: "+3d",
		maxDate: "+10m",
		onSelect: function( selectedDate ) {
			if(this.id == startID) {
				var option = this.id == startID ? "minDate" : "maxDate",
					instance = $( this ).data( "datepicker" );
					date = $.datepicker.parseDate(
						instance.settings.dateFormat ||
						$.datepicker._defaults.dateFormat,
						selectedDate, instance.settings );
				dates.not( this ).datepicker( "option", option, date );
			}
		}
	});	
}

function toDatePicker(id) {
	$("#" + id).datepicker({
		defaultDate: "+3d",
		changeMonth: true,
		numberOfMonths: 2,
		minDate: "+3d",
		maxDate: "+10m"
	});
}

function toggleError(inp,toggle){
	var id = "";
	if (inp.indexOf("Error")>0)
		id = inp;
	else
		id = inp + 'Error';
		
	var errEle = document.getElementById(id);
	
	if (toggle == 'on'){
		errEle.style.display = 'block';
		valid = false;
		return;	
	}
	else{
		errEle.style.display = 'none';
		return;
	}	
}
		
function checkForm(myForm){
	var formType = myForm.itineraryType.value;
	var elem = document.getElementsByTagName('div');
	var temp = null;
	valid = true;	
	
	for (i=0;i<elem.length;i++){
		if (elem[i].id.indexOf('Error') > 0){
			toggleError(elem[i].id,'off');
		}	
	}
	
	if(formType == "RT"){
		if(!requireValue(document.getElementById('depCity')))
			toggleError('depCity','on');
		if(!requireValue(document.getElementById('retCity')))
			toggleError('retCity','on');
		if(!requireValue(document.getElementById('depDate')) || !checkDate(document.getElementById('depDate')))
			toggleError('depDate','on');
		if(!requireValue(document.getElementById('retDate')) || !checkDate(document.getElementById('retDate')))
			toggleError('retDate','on');
		if(!checkDateSequence('depDate','retDate'))
			toggleError('depDate','on');
		checkNumPax(''); 	
	}
	else if (formType == "OW"){
		if(!requireValue(document.getElementById('depCityOW')))
			toggleError('depCityOW','on');
		if(!requireValue(document.getElementById('arrCityOW')))
			toggleError('arrCityOW','on');
		if(!requireValue(document.getElementById('depDateOW')) || !checkDate(document.getElementById('depDateOW')))
			toggleError('depDateOW','on');
		checkNumPax('OW'); 							
	}
	else {
		if(!requireValue(document.getElementById('depCity1MC')))
			toggleError('depCity1MC','on');
		if(!requireValue(document.getElementById('arrCity1MC')))
			toggleError('arrCity1MC','on');
		if(!requireValue(document.getElementById('depDate1MC')) || !checkDate(document.getElementById('depDate1MC')))
			toggleError('depDate1MC','on');
		if(requireValue(document.getElementById('depCity2'))){
			if(!requireValue(document.getElementById('arrCity2')))
				toggleError('arrCity2','on');
			if(!requireValue(document.getElementById('depDate2MC')) || !checkDate(document.getElementById('depDate2MC')))
				toggleError('depDate2MC','on');
			if(!checkDateSequence('depDate1MC','depDate2MC'))
				toggleError('depDate2MC','on');
		}		
		if(requireValue(document.getElementById('depCity3'))){
			if(!requireValue(document.getElementById('arrCity3')))
				toggleError('arrCity3','on');
			if(!requireValue(document.getElementById('depDate3')) || !checkDate(document.getElementById('depDate3')))
				toggleError('depDate3','on');
			if(!checkDateSequence('depDate2MC','depDate3'))
				toggleError('depDate3','on');
		}
		temp = document.getElementById('depCity4');
		if (temp){		
			if(requireValue(document.getElementById('depCity4'))){
				if(!requireValue(document.getElementById('arrCity4')))
					toggleError('arrCity4','on');
				if(!requireValue(document.getElementById('depDate4')) || !checkDate(document.getElementById('depDate4')))
					toggleError('depDate4','on');
				if(!checkDateSequence('depDate3','depDate4'))
					toggleError('depDate4','on');
			}		
		}
		temp = document.getElementById('depCity5');		
		if (temp){		
			if(requireValue(document.getElementById('depCity5'))){
				if(!requireValue(document.getElementById('arrCity5')))
					toggleError('arrCity5','on');
				if(!requireValue(document.getElementById('depDate5')) || !checkDate(document.getElementById('depDate5')))
					toggleError('depDate5','on');
				if(!checkDateSequence('depDate4','depDate5'))
					toggleError('depDate5','on');
			}		
		}		
		checkNumPax('3'); 		
	}	
	return valid; 
}

function checkNumPax(suff){
	var adult = document.getElementById('numAdults'+suff);
	var child = document.getElementById('numChildren'+suff);
	var infant = document.getElementById('numInfants'+suff);
	
	if (parseInt(adult.value)+parseInt(child.value)+parseInt(infant.value)>0){
		toggleError('passenger'+suff,'off');
		return;
	}
	toggleError('passenger'+suff,'on');
	valid = false;
	return;	
}

function displayEnterMessage(str,display){
	var tb = document.getElementById(str);
	var mes = document.getElementById(str+'Enter');
	if (tb.value.length < 3 && display)
		mes.style.display = 'block';
	else
		mes.style.display = 'none';	
}

function requireValue(fld)
{ // disallow a blank field
  if(fld.disabled) return;
  var fldName = fld.name;
  if(!fld.value.length)
  	return false;
  return true;
}

function checkDate(fld)
{ // tenacious date correction 
  if(!fld.value.length||fld.disabled) return true; // blank fields are the domain of requireValue 
  var val= fld.value;
  var fldName = fld.name;
  var dt= new Date(val.replace(/\D/g,'/'));
  var curr = new Date();
  if(!dt.valueOf())
  { // the date was unparseable 
    return false;
  }
  if(Date.parse(fld.value)<=Date.parse(curr)){
  	return false;
  }
  fld.value= (dt.getMonth()+1)+'/'+dt.getDate()+'/'+dt.getFullYear();
  return true;
}

function checkDateSequence(start,end){
	var s = document.getElementById(start);
	var e = document.getElementById(end);		
		if (Date.parse(e.value)>Date.parse(s.value))
			return true;
		else
			return false;
}

function setEndDate(startDate,endDate) {
	var theEndDate = new Date(endDate.value);
	var theStartDate = new Date(startDate.value);
	var dd;
	var mm;
	var day;
	var month;
	if((endDate.value == "") || (theEndDate < theStartDate)){
		theEndDate = new Date(startDate.value);
	    theEndDate.setDate(theStartDate.getDate() + 7);
	    day = parseInt(theEndDate.getDate());
	    month = parseInt(theEndDate.getMonth());
	    dd = day < 10 ? '0' + day + '': day + '';
	    mm = month < 9 ? '0'+ (1 + month) + '' : (1 + month)+ '';
		endDate.value = mm + "/" + dd + "/" + theEndDate.getFullYear();
	}
}	
function toggleAdvancedOptions(a){
	var o = document.getElementById('advancedOptions'+a);
	var oBox = document.getElementById('advancedOptionsBox'+a);
	if (o.checked){
		oBox.style.display = 'block';
		}
	else{
		oBox.style.display = 'none';
	}
	return;
}
