 jQuery(function() {
 	
    //$("#time1").timePicker();
    // 02.00 AM - 03.30 PM, 15 minutes steps.
  $("#time1").timePicker({
  startTime: "00:00",
  // Using string. Can take string or Date object.
  endTime: "23:59",  // Using Date object here.
  show24Hours: true,
  separator:':',
  step: 15});
 
  Calendar.setup({
        trigger    : "date_bb",
        inputField : "date",
		dateFormat :'%d/%m/%Y',
		min		   : Calendar.dateToInt(new Date()),
		onSelect   : function() { 
					 var dateForm=document.getElementById('date');
		 			 var reg = new RegExp('(\\s|^)'+ "addBorder"+'(\\s|$)');
					 dateForm.className=dateForm.className.replace(reg,' ');
					 this.hide();
					 }
    });
	 
	 Custom.init();
	 //getCurrentTime();
	 
	 //Issues with autocomplete when pressing enter focus get on autocomplete
	 jQuery("#originCity").live('keypress',function(e) {
		 if (e.keyCode == 13)
			 return false; // returning false will prevent the event from bubbling up.
	 });
	 
	 jQuery("#destinCity").live('keypress',function(e) {
		 if (e.keyCode == 13)
			 return false; // returning false will prevent the event from bubbling up.
	 });
	 
	 resetCountriesCities();
	 enableSearchButton(); //Enable it anyway
 
  });
 
 (function( $ ) {
		$.widget( "ui.combobox", {
			_create: function() {
				var self = this,
					select = this.element.hide(),
					selected = select.children( ":selected" ),
					value = selected.val() ? selected.text() : "";
				var cntr = $( this ).val();
				var input = this.input = $( "<input>" )
					.insertAfter( select )
					.val( value )
					.focusin(function(){cntr = $( this ).val();$( this ).val("");}) 	
					.focusout(function(){if ($( this ).val()== "") $(this).val(cntr);})				
					.autocomplete({
						delay: 0,
						minLength: 0,
						source: function( request, response ) {
							var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
							response( select.children( "option:not([value='0'])" ).map(function() {
								var text = $( this ).text();
								if ( this.value && ( !request.term || matcher.test(text) ) )
									return {
										label: text.replace(
											new RegExp(
												"(?![^&;]+;)(?!<[^<>]*)(" +
												$.ui.autocomplete.escapeRegex(request.term) +
												")(?![^<>]*>)(?![^&;]+;)", "gi"
											), "<strong>$1</strong>" ),
										value: text,
										option: this
									};
							}) );
						},
						select: function( event, ui ) {
							ui.item.option.selected = true;
							self._trigger( "selected", event, {
								item: ui.item.option
							});
							clearWarnings($(this));
							handleCitiesField (select.attr('name'));
							$(this).blur();
						},
						change: function( event, ui ) {
							var elementName = select.attr('name');
							if ( !ui.item ) {
								var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( $(this).val() ) + "$", "i" ),
									valid = false;
								select.children( "option" ).each(function() {
									if ( $( this ).text().match( matcher ) ) {
										this.selected = valid = true;
										return false;
									}
								});
								if ( !valid ) {
									// remove invalid value, as it didn't match anything
									$( this ).val( localized_messages_CountrySelect );
									select.val( "0" );
									input.data( "autocomplete" ).term = "";
									//return false;
								}
								clearWarnings($(this));
								handleCitiesField (elementName);
							}
						}
					})
					.addClass( "ui-widget ui-widget-content ui-corner-left" );
					
				input.data( "autocomplete" )._renderItem = function( ul, item ) {
					return $( "<li></li>" )
						.data( "item.autocomplete", item )
						.append( "<a>" + item.label + "</a>" )
						.appendTo( ul );
				};

				this.button = $( "<button>&nbsp;</button>" )
					.attr( "tabIndex", -1 )
					.attr( "title", localized_messages_showall )
					.insertAfter( input )
					.button({
						icons: {
							primary: "ui-icon-triangle-1-s"
						},
						text: false
					})
					.removeClass( "ui-corner-all" )
					.addClass( "ui-corner-right ui-button-icon" )
					.click(function(e) {
						// close if already visible
						if ( input.autocomplete( "widget" ).is( ":visible" ) ) {
							input.autocomplete( "close" );
							return false;
						}

						// pass empty string as value to search for, displaying all results
						input.autocomplete( "search", "" );
						input.focus();
						e.preventDefault();
					});
			},

			destroy: function() {
				this.input.remove();
				this.button.remove();
				this.element.show();
				$.Widget.prototype.destroy.call( this );
			}
		});
	})( jQuery );

	$(function() {
		$( "#originCountry" ).val("0");
		$( "#destinCountry" ).val("0");
		$( "#originCountry" ).combobox().siblings("input.ui-autocomplete-input").css('width','280px').keypress(function(e) {
	          if (e.keyCode === 13) {
	            return false;
	          }
			});
		$( "#destinCountry" ).combobox().siblings("input.ui-autocomplete-input").css('width','280px').keypress(function(e) {
	          if (e.keyCode === 13) {
	            return false;
	          }
			});							
	});
  
function resetCountriesCities(){
	if(jQuery('#loadingImageoriginCity').length > 0)
		jQuery('#loadingImageoriginCity').remove();
	if(jQuery('#loadingImagedestinCity').length > 0)
		jQuery('#loadingImagedestinCity').remove();
	jQuery('#originCity').css('width','330px');
	jQuery('#originCity').removeAttr('disabled');
	jQuery('#destinCity').css('width','330px');
	jQuery('#destinCity').removeAttr('disabled');
	
	var searchButton = jQuery("#search_button");
	buttonText = searchButton.find('a').text();
}

function handleCitiesField (fieldName){
	if (fieldName == "originCountry" || fieldName == "destinCountry") {
		var countryCode= jQuery("#" + fieldName).val();
		
		// Country Code of available Journey Planners -- Avoid checking for predefined cities
		if (!(countryCode == "GB" || countryCode == "CN" || countryCode == "IT" 
			|| countryCode == "GR" || countryCode == "0" || countryCode == "-")){ 
			
			if (fieldName == "originCountry"){
				if(xhrOrigin)
					xhrOrigin.abort();
				xhrOrigin = populateSelectBoxes(jQuery("#originCountry"),'originCity');
			}
			else{
				if(xhrDestin)
					xhrDestin.abort();
				xhrDestin = populateSelectBoxes(jQuery("#destinCountry"),'destinCity');
			}
		}
		else{
			if (fieldName == "originCountry"){
				if(xhrOrigin){
					xhrOrigin.abort();
					enableSearchButton('originCity');
				}
				restoreCityTextBox('originCity');
			}
			if (fieldName == "destinCountry"){
				if(xhrDestin){
					xhrDestin.abort();
					enableSearchButton('destinCity');
				}
				restoreCityTextBox('destinCity');
			}
		}
	}
	
}

function enableSearchButton(fieldName){
	if (fieldName == "originCity")
		flag_ajaxOriginCity = 0
	if (fieldName == "destinCity")
		flag_ajaxDestinCity = 0
			
	if (flag_ajaxOriginCity == 0 && flag_ajaxDestinCity == 0){
		var searchButton = jQuery("#search_button");
		searchButton.find('a').text(buttonText); // Restore the text on button
		searchButton.find('a').bind('click',function(){
			return submitform(document.getElementById('tripForm'));
		})
	}
}

function disableSearchButton(fieldName){
	if (fieldName == "originCity")
		flag_ajaxOriginCity = 1
	
	if (fieldName == "destinCity")
		flag_ajaxDestinCity = 1
	
	var searchButton = jQuery("#search_button");
	searchButton.find('a').unbind('click').text(localized_messages_wait);	
}

function clearWarningCities(fld) {

	var imgWarning = document.getElementById('warningImage');
	var errorMessage = document.getElementById('errorMessage');
	if(document.getElementById('originCityCode'))
		var originCity = document.getElementById('originCityCode').getElementsByTagName("option");
	if(document.getElementById('destinCityCode'))
		var destinCity = document.getElementById('destinCityCode').getElementsByTagName("option");
		
	if(fld.getElementsByTagName("option") != originCity && fld.getElementsByTagName("option") != destinCity)
			return;
	
	if(fld.getElementsByTagName("option")[0].selected == true){
		jQuery("#select" + fld.id).addClass("addBorder");
		return;
	}
	else
		jQuery("#select" + fld.id).removeClass("addBorder");
	
	clearWarningImg();
}

function clearWarnings(fld){ 
	fld.css('border','none')
	clearWarningImg();
}

function clearWarningImg(){
	if(jQuery('#warningImage').css('display') != 'none'){
		if(validateFormOnSubmit(document.getElementById('tripForm'))){
			jQuery('#errorMessage').css('display','none')
			jQuery('#warningImage').css('display','none')
		}
	}
	
}
 
function getCurrentTime(){
		var currentTime = new Date();
		var hours = currentTime.getHours();
		var minutes = currentTime.getMinutes();
		if (minutes < 10){
			minutes = "0" + minutes;
		}
		document.getElementById("time1").value = hours + ":" + minutes;
}

function createSelectElement(elementNameOriginal,options,parentElement){
	var elementName = elementNameOriginal+"Code";
	var element = jQuery(document.createElement("select")).attr('name',elementName).attr('id',elementName).addClass("styled")
				  .appendTo(parentElement); 
	element.html(options);
	element.css('width','330px');
	var selectElement = element.get(0);
	
	var option = selectElement.getElementsByTagName("option");
	var active = option[0].childNodes[0].nodeValue;
	var textnode = document.createTextNode(active);
	for(b = 0; b < option.length; b++) {
			if(option[b].selected == true) {
				textnode = document.createTextNode(option[b].childNodes[0].nodeValue);
			}
	}
	var spanElement = document.createElement("span");
	spanElement.className = "select";
	spanElement.id = "select" + selectElement.name;
	spanElement.appendChild(textnode);
	selectElement.parentNode.insertBefore( spanElement, selectElement);
	selectElement.onchange = Custom.choose;

	parentElement.find('input').remove();
	createHiddenTextBox('hidden' + elementNameOriginal,elementNameOriginal,'',parentElement)

	return element;
}

function createHiddenTextBox(id,name,value,parentElement){
	var element = jQuery(document.createElement("input")).attr({
		id: id,
		name: name,
		value: value,
		type: 'hidden'
	}).appendTo(parentElement);
}
       
