var g_search = 0; //true if search button has been pressed 
/**
 * Intiate the jQuery date pickers at startup.
 * Also stores away the date of the date input fields to hidden fields for restore after refresh.
 * This is required since autocomplete=off as default for datepicker fields
 */
function initCalendars(){
	//Initiate the date pickers
	var appRoot = $("#appRoot").val();	
	var earliestDepartureDate =  $("#earliestDepartureDate").val();
	var latestDepartureDate   =  $("#latestDepartureDate").val();

	$(".depDate").attr('readonly', true); //prevents writing in the date fields

	//Prevents historylist to be displayed which clutters the date picker
	//A negative sideeffect is that the input field loses memory (between refreshes)
	$('input.depDate').attr('autocomplete', 'off');

	$.datepicker.setDefaults($.datepicker.regional['no']); //norwegian
	$.datepicker.setDefaults({
		monthNamesShort: ['JAN','FEB','MAR','APR','MAI','JUN','JUL','AUG','SEP','OKT','NOV','DES'],		
//		dateFormat: 'dd M yy',
		dateFormat: 'yy-mm-dd',
		altFormat: 'yy-mm-dd',
		firstDay: 1, //monday is first column in calendar
		onSelect: function(dateText, inst){
			var id = this.id;
			var numberOfSegments = $('#numberOfDisplayedSegments').val()*1;
			var arr = /(\w+)?_(\d+)$/.exec(id); 
			if (arr) {
				if (arr[1]) {
					//hidden inputs for location code and name
					$('#' + arr[1] + 'Mem_' + arr[2]).val(dateText);
				}
			}
			else {
				//hidden inputs for location code and name
				$('#' + id + 'Mem').val(dateText);
			}
			//when departure date is changed, check if return date is earlier and adjust
			if (id == 'depDate') {
				var retDate = $('#retDate').datepicker("getDate");

				var dd = dateText.replace(/-/g, '/'); //IE requires '/' not '-' as date seprator
				//var depDate = new Date(dateText);
				var depDate = new Date(dd);
				if (depDate > retDate) {
					$('#retDate').datepicker("setDate", dateText);
					$('#retDateMem').val(dateText);
				}
			}
			else if (arr && (arr[1] == 'depDate')) {
				
				//check if departure date of next segment comes before departure date of this segment
				var n = arr[2]*1 + 1;
				if (n <= numberOfSegments) {
					var depDateNext = $('#depDate_' + n).datepicker("getDate");
	
					dd = dateText.replace(/-/g, '/'); //IE requires '/' not '-' as date separator
					var depDate = new Date(dd);

					if (depDate > depDateNext) {
						$('#depDate_' + n).datepicker("setDate", dateText);
						$('#depDateMem_' + n).val(dateText);
					}
				}
			}
		}
	});
	
	//Set min and max values of the date pickers
	$(".depDate").datepicker({
		minDate: earliestDepartureDate,
		maxDate: latestDepartureDate
//		minDate: '10 FEB 2011',
//		maxDate: '10 NOV 2011'
	});
	
	$("#depDate, #retDate").datepicker("option", "defaultDate", earliestDepartureDate);
//	$("#depDate, #retDate").datepicker("option", "defaultDate", '10 FEB 2011');
	
	//restore all datefields since they have no memory due to autocomplete=off (in case of refresh)
	$('.depDateMem').each(function(){
		var arr = /(\w+?)Mem(_\d+)?$/.exec(this.id);
		if (arr) {
			if (arr[2]) {
				$('#' + arr[1] + arr[2]).val(this.value);
			}
			else {
				$('#' + arr[1]).val(this.value);
			}
		}
	});
}


/**
 * Initiate search type and visibility of corresponding sections of the user interface
 */
function setDefaultSearch(){
	var maxSegments = $('#maxSegments').val()*1;	//maximum segments allowed
	var defaultSearchType = $('#defaultSearchType').val();
	var camp = $('#camp').val()*1; 		//campaign - true if campaign (one carrier and limited number of departure and destination locations)
	
	if (camp) { //a campaign reduces the number of departure and destination locations
		$('.locSelector').addClass('noDisplay'); 	//do NOT show the autocomplete input fields 
		$('.locSelect').removeClass('noDisplay'); 	//do display the select lists for departure and desination locations
		
		$('#numberOfDisplayedSegments').val(0); 	//multiple segments not handled for campaigns
	}
	else {
		if ($('#numberOfDisplayedSegments').val()*1 == 0) { //not set
			$('#numberOfDisplayedSegments').val(2); 		//starting with 2 segments for searchType=='SEG' (multiple segments)
		}
	}
	if (maxSegments < 3) {
		$('#searchType_SEG').addClass('noDisplay'); //hide radio button for selection of multiple segments
	}
	else {
		var numberOfDisplayedSegments = $('#numberOfDisplayedSegments').val()*1;
		for (var i=1; i<=maxSegments; i++) {
			if (i<=numberOfDisplayedSegments) {
				addSegment(i);	//show input fields for a new segment
			}
		}
	}
	
	var radios = $('input:radio[name=searchType]');
	if (radios.is(':checked')) { //has the search type already been set? (before refresh)
		defaultSearchType = $('input:radio[name=searchType]:checked').val();
		//searchType = defaultSearchType; //use the search type already selected
	}
	else {
		//set search type radio input to what has been evaluated above
		var filterParam = '[value="' + defaultSearchType + '"]';
		radios.filter(filterParam).attr('checked', true);
	}

//	if ($.uniform && $.uniform.elements) {
//		$.uniform.update(radios);
//	}

	//show or hide the corresponding sections of the user interface
	initSearchType(defaultSearchType);
}


/**
 * Initiate the children dialog by showing the correct number of age input lists
 */
function initChildren() {
	var cntChildren = $('#chd').val()*1; //number of children selected
	setChildren(cntChildren);
	
	//more to do here, because not correct
	for (var i=1; i<=cntChildren; i++) {
		var v = $('#chdAge_'+i).val();
		$('#chdAge_'+i).val(v);
	}
}


/**
 * Initiate the location selectors (Devbridge autocomplete controls) with the initial location (default) as 
 * set by launching perl-script
 */

var cache = {}, lastXhr, query;
var autocompleteSelectedOk = {};


function setHiddenLocationFields(id, value, label) {
	var arr = /(\w+)?(_\d+)$/.exec(id); //countryCode|type|code

	if (arr) {
		if (arr[1]) {
			//hidden inputs for location code and name
			$('#' + arr[1] + 'Code' + arr[2]).val(value);
			$('#' + arr[1] + 'Name' + arr[2]).val(label); //testing
		}
	}
	else {
		//hidden inputs for location code and name
		$('#' + id + 'Code').val(value);
		$('#' + id + 'Name').val(label); //testing
	}
}


function initLocSelector() {
	
	var appRoot = $("#appRoot").val();	
	var lang = $("#lang").val();
	if (!lang) {
		lang='no';
	}
	//Prevents history list to be displayed which clutters the screen
	//A negative sideeffect is that the input field loses memory (between refreshes)
	$('input.locSelector').attr('autocomplete', 'off');

//	var completeUrl = appRoot+"/getLocation";
	var completeUrl = "getLocation";

	$(".locSelector").each(function(){ 
		$(this).blur(function() {
			// No selectFirst set? return
			if (!$(this).data("autocomplete").options.selectFirst) {
				return;
			}
			var menu = $(this).data("autocomplete").menu;
			var fe = menu.element.children().first();
			var id = $(this).attr('id');

			// No value typed in or no matching data from server? blank hidden fields.
			if ( ! $(this).val() || ! fe.data("item.autocomplete") || ! fe.data("item.autocomplete").value ) {
				setHiddenLocationFields(id, '', '');
			}

			// Empty input? Just return
			if ( ! $(this).val() ) {
				autocompleteSelectedOk[id] = false;
				setHiddenLocationFields(id, '', '');
				return false;
			}

			if ( ! /\(\w+\)/.test($(this).val() )) {
				autocompleteSelectedOk[id] = false;
				setHiddenLocationFields(id, '', '');
				$(this).val('');
			}

			if ( ! autocompleteSelectedOk[id] ) {
				menu.activate(	$.Event(
										{
											type: "mouseenter" 
										}
										), 
								fe 
							 );
			if ( fe.data("item.autocomplete") )
				setHiddenLocationFields(id, fe.data("item.autocomplete").value, fe.data("item.autocomplete").label);
			}

		});

		if ($(this).val()) {
			autocompleteSelectedOk[$(this).attr('id')] = true;
		}
		
		$(this).autocomplete({ 
			minLength: 2,
			selectFirst: true,
			delay: 0,
			source: 
				function( request, response ) { 
					var term = request.term;

					// Don't autocomplete something which matches the pattern for ok
					if ( /\(\w+\)/.test( term )) {
						return;
					}

					autocompleteSelectedOk[this.element[0].id] = false;

					query = term; // global

					// Fake response to clear the menu
					response( 
								[
									{
										value: '',
										label: '' 
									}
								]
							);

					if ( term in cache ) {
						response( cache[ term ] );
						return;
					}
					request.term = request.term + '|' + lang;
					lastXhr = $.getJSON( 	completeUrl, 
											request, 
											function( data, status, xhr ) { 
												if ( data.length > 0 ) {
													cache[ term ] = data;
												}

												if ( xhr === lastXhr ) {
													response( data );
												}
											}
										);
				},
						
			focus: 
				function( event, ui ) {
					var id = $(this).attr('id');
					if ( ui && ui.item ) {
						setHiddenLocationFields(id, ui.item.value, ui.item.label);
						var v = ui && ui.item ? ui.item.label : '';
						autocompleteSelectedOk[id] = true;
						$(this).val( v );
						return false;
					}
				},
					
			//callback function:
			select: 
				function(event, ui){
					// Don't do anything. The necessary steps are taken by focus()
					return false;
				}
			
		}).data( "autocomplete" )._renderItem = function( ul, item ) {
														var data = item.value;
														var arr = /(.+)\|(.+)\|(.+)/.exec(data); //countryCode|type|code
														// Remove ( and ) from query
														var r = /\(|\)/g;
														query = query.replace(r,'');
														var regexp = new RegExp('(' + query + ')', 'i');
														var imgFlight = "";
														if (arr && (arr[2] == 'AP')) { //isAirport
															imgFlight = "<img src='" + appRoot + "/static/asset/symbol/plane.gif'/>&nbsp;";
														}
														var imgFlag = "";
														if (arr && arr[1]) { //countryCode
															imgFlag = "<img src='" + appRoot + "/static/asset/flag/" + arr[1] + ".gif'/>&nbsp;";
														}
														var suggestionStashed = item.label.replace(regexp, "<strong>$1</strong>");
														suggestionStashed = suggestionStashed.replace(/(.+?)\|(.+)/, "$1,&nbsp;<span style='font-size:90%;font-style:italic;'>$2</span>");

														return $( '<li></li>' )
															.data( "item.autocomplete", item )
															.append( '<a>' + imgFlag + imgFlight + suggestionStashed + '</a>')
															.appendTo( ul );
			};
	});
}


/**
 * Hide/show the correct number of age input select lists
 * @param {Object} cntChildren - the number of children selected
 */
function setChildren(cntChildren) {
	//Hide or show the div containg information about age of the children
	if (cntChildren > 0) {
		$('#chdAge').removeClass('noDisplay');
	}
	else {
		$('#chdAge').addClass('noDisplay');
	}
	//Hide or show the correct number of age input select lists
	for (var i=1; i<=9; i++) {
		if (i<=cntChildren) {
			$('#chdAge_'+i).removeClass('noDisplay');
			//$('#uniform-chdAge_'+i).removeClass('noDisplay');
		}
		else {
			$('#chdAge_'+i).addClass('noDisplay');
			//$('#uniform-chdAge_'+i).addClass('noDisplay');
		}
	}
}


/**
 * Hide/show the parts of the user dialog corresponding with the search type
 * @param {Object} searchType
 */
function initSearchType(searchType) {
	
	switch (searchType) {
		case 'RT': 
			$(".multipleSegments").addClass("noDisplay");
	 		$(".roundTrip").removeClass("noDisplay");
			$(".oneWay").removeClass("noDisplay");
			break;
		case 'OW':
			$(".multipleSegments").addClass("noDisplay");
	 		$(".roundTrip").addClass("noDisplay");
			$(".oneWay").removeClass("noDisplay");
			break;
		case 'SEG':
			$(".multipleSegments").removeClass("noDisplay");
	 		$(".roundTrip").addClass("noDisplay");
			$(".oneWay").addClass("noDisplay");
			break;
	}
}


/**
 * Check if a date is valid and not exceeding the max/min values
 * @param {Object} dateValue
 * @param {Object} dateText - description of the date to be cheched (eg. 'departure date')
 * @param {Object} calSelector - jQuery selector for the date picker
 */
function checkDateValidity(dateValue, dateText, calSelector) {
	var error = [];
	if (!dateValue) {
		error.push(loc("[_1] mangler", [dateText]));
	}
	else {
		var dateValueValidity = dateValue.replace(/-/g, '/'); //IE requires '/' not '-' as date seprator
		var d = Date.parse(dateValueValidity); 
		if (isNaN(d)) {
//			error.push(dateText+" har ugyldig format. Korrekt format er 'ÅÅÅÅ-MM-DD");
			error.push(loc("[_1] har ugyldig format. Korrekt format er 'ÅÅÅÅ-MM-DD", [dateText]));
		}
		else {
			var maxDate = $(calSelector).datepicker("option", "maxDate");
			var minDate = $(calSelector).datepicker("option", "minDate");
			
			if (dateValue > maxDate) {
				error.push(loc("[_1] er for langt frem i tid (maks 361 dager)", [dateText]));
			}
			if (dateValue < minDate) {
				error.push(loc("[_1] kommer for tidlig. Vi trenger minst en virkedag for å utstede billett", [dateText]));
			}
		}
	}
	return error;	
}


/**
 * Check all input fields for correctness
 * @Return {Array} list of error messages
 */
function checkForSearchParamError() {
	var error = [];
	var searchType = $('input:radio[name=searchType]:checked').val();
	var camp = $('#camp').val()*1;
	var numberOfDisplayedSegments = $('#numberOfDisplayedSegments').val()
	if (camp) {
		//check #depLocSelect, #retLocSelect, #depDate
		if (!$('#depLocSelect').val()) {
			error.push(loc("Utreisested er ikke valgt"));
		}
		if (!$('#retLocSelect').val()) {
			error.push(loc("Destinasjon er ikke valgt"));
		}
		else {
			if ($('#depLocSelect').val() == $('#retLocSelect').val()) {
				error.push(loc("Utreisested og destinasjon er like"));
			}
		}

		var depDate = $('#depDate').val();
		var err = checkDateValidity(depDate, loc('Utreisedato'), '#depDate');
		if (err.length) {
			error.push(err);
		}
		
	 	if (searchType == 'RT') {
			//check #retDate
			var retDate = $('#retDate').val();
			var err = checkDateValidity(retDate, loc('Hjemreisedato'), '#retDate');
			if (err.length) {
				error = error.concat(err);
			}
			else {
				if (retDate < depDate) {
					error.push(loc("Du har valgt en hjemreisedato som kommer før utreisedatoen"));
				}
			}
	 	}
	 }
	 else {
	 	if ((searchType == 'OW') || (searchType == 'RT')) {
		 	//check #depLoc, #retLoc, #depDate
			if (!$('#depLocCode').val()) {
				error.push(loc("Utreisested er ikke valgt"));
				$('#depLoc').val('');	//clear the field showing the location 
			}

			if (!$('#retLocCode').val()) {
				error.push(loc("Destinasjon er ikke valgt"));
				$('#retLoc').val('');	//clear the field showing the location 
			}
			else {
				if ($('#depLocCode').val() == $('#retLocCode').val()) {
					error.push(loc("Utreisested og destinasjon er like"));
				}
			}

			var depDate = $('#depDate').val();
			var err = checkDateValidity(depDate, loc('Utreisedato'), '#depDate');
			if (err.length) {
				error = error.concat(err);
			}
			if (searchType == 'RT') {
		 		//check #depDate
		 		//check #retDate
				var retDate = $('#retDate').val();
				var err = checkDateValidity(retDate, loc('Hjemreisedato'), '#retDate');
				if (err.length) {
					error = error.concat(err);
				}
				else {
					if (retDate < depDate) {
						error.push(loc("Du har valgt en hjemreisedato som kommer før utreisedatoen"));
					}
				}
			}
	 	}
		else if (searchType == 'SEG') {
		 	//check #depLoc_n, #arrLoc_n, #depDate_n where 1=0, ..., numberOfDisplayedSegments
			for (var i=1; i<=numberOfDisplayedSegments; i++) {
				var t=$('#depLocCode_'+i).val();
				if (!$('#depLocCode_'+i).val()) {
					error.push(loc('Avreisested for strekning [_1] er ikke valgt', [i]));
					$('#depLoc_'+i).val('');	//clear the field showing the location 

				}
				if (!$('#arrLocCode_'+i).val()) {
					error.push(loc('Destinasjon for strekning [_1] er ikke valgt', [i]));
					$('#arrLoc_'+i).val('');	//clear the field showing the lcoation 
				}
				else {
					if ($('#depLocCode_'+i).val() == $('#arrLocCode_'+i).val()) {
						error.push(loc("Avreisested og destinasjon er like for strekning [_1]", [i]));
					}
				}

				var depDate = $('#depDate_'+i).val();
				var err = checkDateValidity(depDate, loc('Avreisedato for strekning [_1]', [i]), '#depDate_'+i);
				if (err.length) {
					error = error.concat(err);
				}
				else {
					if (i > 1) {
						if (depDate < $('#depDate_' + (i - 1)).val()) {
							error.push(loc("Du har valgt en avreisedato på strekning [_1] som kommer før avreisedatoen for strekning [_2]", [i, (i - 1)]));
						}
					}
				}
			} 
		}
	 }

	//check that age of all children has been set
	var cntChd = $('#chd').val()*1;
	var cntInf=0;
	for (var i = 1; i <= cntChd; i++) {
		var age = $('#chdAge_' + i).val();
		if (!age) {
			error.push(loc("Velg alder for barn [_1]", [i]));
		}
		else if (age * 1 < 2) {
			cntInf = cntInf + 1;
		}
	}

	//number of infants cannot exceed number of adults
	if (cntInf > $('#adt').val()*1) {
		error.push(loc("Antall spedbarn må ikke overstige antall voksne"));
	}

	//number of adults and children cannot exceed 9
	if ($('#adt').val()*1 + $('#chd').val()*1 - cntInf > 9) {
		error.push(loc("Antall voksne og barn kan ikke overstige 9"));
	}
	
	return error;
}


/**
 * Show input fields for new segment and "move" the "remove segment" link
 * @param {Object} ndx - index of segment
 */
function addSegment(ndx) {
	
	if ((ndx > 2) && ($('#multipleSegment_' + ndx).length > 0)) { //test for existency
		$('#removeSegment_' + (ndx-1)).addClass("noDisplay");
		$('#removeSegment_' + ndx).removeClass("noDisplay");

		//'+Add segment' should not be displayed if max number of segments already are displayed 
		if (ndx >= $("div[id^=multipleSegment_]").length) {
			$('#addSegment').addClass("noDisplay");
		}  
		$('#multipleSegment_' + ndx).removeClass("noDisplay");
		$('#numberOfDisplayedSegments').val(ndx);
	}
}


/**
 * Hide input fields for new segment and "move" the "remove segment" link
 * @param {Object} ndx - index of segment
 */
function removeSegment(ndx) {

	if ((ndx > 2) && ($('#multipleSegment_' + ndx).length > 0)) {
		$('#removeSegment_' + (ndx)).addClass("noDisplay");
		$('#removeSegment_' + (ndx - 1)).removeClass("noDisplay");
		$('#multipleSegment_'+ndx).addClass("noDisplay");
		$('#numberOfDisplayedSegments').val(ndx - 1);

		//'+Add segment' should be displayed  
		if (ndx-1 < $("div[id^=multipleSegment_]").length) {
			$('#addSegment').removeClass("noDisplay");
		}
	}  
}


/**
 * The surrounding Iframe must be resized when increasing/reducing size of content
 * to avoid scrollbars to pop up
 */
function document_height(){
	var D = document;
	
	/* Just return this */
	if (jQuery.browser.msie) {
		return D.body.scrollHeight;
	}
	else { 
		return D.documentElement.offsetHeight;
	}
	
	return Math.max(
		Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
		Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
		Math.max(D.body.clientHeight, D.documentElement.clientHeight)
	);
}


/**
 * Actions to be done when DOM is ready
 */

$(document).ready( function() { 

	initCarrierImg();
	initCalendars();
	setDefaultSearch();
	initChildren();
	initLocSelector();

	$('div#search').removeClass('noDisplay');
	
	/**
	 * Show/hide error detail information 
	 * @param {Object} event
	 */
	
	/**
	 * Change handler for search type 
	 * @param {Object} event
	 */
	$('.searchType').change( function(event) {
		initSearchType($(this).val());
	});

	/**
	 * Change handler for date input field
	 * Copies values from id depDate -> depDateMem and depDate_n -> depDateMem_n 
	 * @param {Object} event
	 */
	$('.depDate').change( function(event) {
		//change value of field with same id with Mem as id postfix
		var id = this.id;
		var value = this.value;
		var arr = /(\w+)?(_\d+)$/.exec(id); //depDate or depDate_n
		if (arr) {
			if (arr[1]) {
				//hidden inputs for departure date
				$('#' + arr[1] + 'Mem' + arr[2]).val(value);
			}
		}
		else {
			//hidden inputs for departure date
			$('#' + id + 'Mem').val(value);
		}
	});


	/**
	 * Click handler for remove segment anchor 
	 * @param {Object} event
	 */
	$('.removeSegment').click( function(event) {
		var lastSegmentNdx = $('#numberOfDisplayedSegments').val()*1;
		removeSegment(lastSegmentNdx) 
	});

	/**
	 * Clik handler for add segment anchor 
	 * @param {Object} event
	 */
	$('#addSegment').click( function(event) {
		var lastSegmentNdx = $('#numberOfDisplayedSegments').val()*1;
		addSegment(lastSegmentNdx+1);
	});
	
	/**
	 * Change handler for number of children input 
	 * @param {Object} event
	 */
	$('#chd').change( function(event) {
		var cntChildren = $(this).val()*1;
		setChildren(cntChildren);
	});

	/**
	 * Change handler for departure location used for campaigns 
	 * @param {Object} event
	 */
	$('#depLocSelect').change( function(event) {
		var locCode = $(this).val();
		$('#depLocCode').val(locCode);
	});
	
	/**
	 * Change handler for return location used for campaigns 
	 * @param {Object} event
	 */
	$('#retLocSelect').change( function(event) {
		var locCode = $(this).val();
		$('#retLocCode').val(locCode);
	});

	/**
	 * 	Form submit handler
	 * @param {Object} event
	 */
	//$('#startSearch').click( function(event) {
	$('#frmSearch').submit(function() {
		if (g_search) {
			return;
		}

		g_search = 1;
		$('#startSearch').attr("disabled", true); //prevent pressing "Search" more than once to enter next step

		//check the parameters before submitting
		var paramError = checkForSearchParamError();
		if (paramError.length) {
			//$("#dlgSearchParamError").addClass('noDisplay');
			
			var error = "<div class='paramError' style='font-size:150%;'>"+loc("Vennligst rett følgende feil:")+"<ul>";
			for (var i = 0; i < paramError.length; i++) {
				error = error + "<li>" + paramError[i] + "</li>";
			}
			error = error + "</ul></div>";
			
			$("#checkParamHidden").fancybox({ 	
				hideOnOverlayClick: true,
				hideOnContentClick: true,
				showCloseButton: true,
				overlayShow: false,
				modal: false,
				autoDimensions: true,
				content: error,
				scrolling: 'no'
			});

			$('#checkParamHidden').trigger('click');
			
			return false;
			
		}
		else {
			$.fancybox.close();
			
			$("#searchProgress").toggleClass('noDisplay');
			
			$('div#step').toggleClass('noDisplay'); //hide the search result, error messages, flight list or whatever is displayed on the page (must be included in a <div>)
			
			//start display of carrier and word of wisdom
			var carrier = $('#carrier').val();
			if (!carrier) { //check if only one carrier has been selected
				carrier = $('#campaignCarrier').val();
			}
			if (carrier) {
				setDisplayCarrier(carrier); //only one carrier is displayed in the progress dialog
				changeWordOfWisdom();
			}
			else {
				changeDisplayCarrier(); //all carrier logos in object displayCarrier is displayed in the progress dialog	
				changeWordOfWisdom();
			}
			
			//disabling empty tags to prevent beeing included in url when submitting the form
			$(this).find('input, textarea, select').each(function(_, inp) {
				if ($(inp).val() === '' || $(inp).val() === null) {
					inp.disabled = true;
				}
			});

			return true;


//
//			//remove all unused tags
//			var urlSearch = $('#frmSearch').serialize();
//			urlSearch = urlSearch.replace(/\w+=&/g, "");
//			urlSearch = urlSearch.replace(/&\w+=$/, "");
//			
//			//make new href
//			var path = window.location.pathname; //this url is the url that inititated the search and is also required for the next step to populate the search input elements
//
//			if (!path.match(/\/step\d.*/)) {
//				path = path + '/step0';
//			}
//
//			path = path.replace(/\/step\d.*/, "/step1?");
//			path = path.replace(/\/flyg/, "");
//
//			var to = window.location.protocol + '//' + window.location.host + path + urlSearch;
//			window.location.href = to;
//			
//			return false;
		}

	});
});

//new
//$('#frmSearch').submit(function() {
//
//	$(this).children(':input[value=""]').attr("disabled", "disabled");
//	
//	return true;
//});


/**
 * Changes text in the progress box from searching to finished
 */
$(window).unload(function() {
	/**
	 * Changes visible messages in the progress window when unloading
	 */
	$("#progress1").toggleClass('noDisplay');
	$("#progress2").toggleClass('noDisplay');
});


