/*
====================================================================================================
Flights + Airport objects => /cgi-bin/flight-timetable.pl?output=javascript 
====================================================================================================
*/

var cityjet = { selection:{ data:null, depart:null, dest:null }, limits:{ passengers:9, adults:9, children:8, infants:5 }, message:{ html:"", timeout:2000 }, form:null, memory:{ '_from':1,'_to':1,'_depart':1,'_return':1,'adultSelector':1,'childSelector':1,'infantSelector':1,'oneWay':1,'flexMyDates':1,'oneWay':1 }, hertz:{} };

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

var dateRegxp			=	/^([0-9]){1,2}\/{1}([0-9]){1,2}\/([0-9]){4}$/;

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.init = function(panelid,frmname,config){//,hire){
	this.form = document.forms[frmname];

	this.travellers = new Array();
	while (this.form.elements['TRAVELLER_TYPE_'+(this.travellers.length+1)]) {
		this.travellers.push(this.form.elements['TRAVELLER_TYPE_'+(this.travellers.length+1)]);
	}
	
	var dep = new Date();
	this.form.elements['_depart'].value = this.addZero(dep.getDate())+"/"+this.addZero(dep.getMonth()+1)+"/"+dep.getFullYear();
	
	var ret = new Date();
	this.form.elements['_return'].value = this.addZero(ret.getDate())+"/"+this.addZero(ret.getMonth()+1)+"/"+ret.getFullYear();

	this.populate('_from','_to');
	
	this.updatePassengers();
	this.restoreState(config);
	
	//if(hire){
		//Setup panel navigation (switch between flights / car hire)
		$('#'+panelid+' .car-hire').css({cursor:'pointer'}).click(function(){
			$(this).css({cursor:'default'}).removeClass('whiteTab').addClass('redTab');
			$('#'+panelid+' .flights').css({cursor:'pointer'}).removeClass('redTab').addClass('whiteTab');
			$('#book-flight-panel').css({display:'none'});
			$('#car-hire-panel').css({display:'block'});
			
			if($('#_to').length == 1){
				var val = $('#_to').val();
				if(val != '') $('#_pickup_airport').val(val);
			}
		});
		
		$('#'+panelid+' .flights').css({cursor:'pointer'}).click(function(){
			$(this).css({cursor:'default'}).removeClass('whiteTab').addClass('redTab');
			$('#'+panelid+' .car-hire').css({cursor:'pointer'}).removeClass('redTab').addClass('whiteTab');
			$('#car-hire-panel').css({display:'none'});
			$('#book-flight-panel').css({display:'block'});
		});

		var dep = new Date(new Date().getTime() + 24 * 60 * 60 * 1000 * 7);
		$('#_pickup_date').val(this.addZero(dep.getDate())+"/"+this.addZero(dep.getMonth()+1)+"/"+dep.getFullYear());
		
		var ret = new Date(new Date().getTime() + 24 * 60 * 60 * 1000 * 14);
		$('#_dropoff_date').val(this.addZero(ret.getDate())+"/"+this.addZero(ret.getMonth()+1)+"/"+ret.getFullYear());
	
		var pickup = $('#_pickup_airport');
		pickup.empty();
		pickup.append('<option value="">--- SELECT ---</option>');
		
		this.populateGroups(pickup,null);

		pickup.append('<option value="other">Other locations</option>');
		
		//Remove airports not handled by Hertz at present
		$("#_pickup_airport option[value='DND']").remove();
		$("#_pickup_airport option[value='DOL']").remove();
	//}
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.updateSelection = function(){
	this.selection.dest = $('#_to').val();
	this.selection.depart = $('#_from').val();

	this.selection.data = {};
	this.selection.company = '';

	for(var x=0;x<Flights.length;x++){
		if(Flights[x].depart == this.selection.depart && Flights[x].dest == this.selection.dest){
			this.selection.data = Flights[x];
			this.selection.company = Flights[x].company;
			break;
		}
	}

	$('#flexible_dates').css({ display:((this.selection.company == "CITYJET")?'block':'none') });
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.populate = function(frmFrom, frmTo) {
	var fromCombo = $('#'+frmFrom);
	fromCombo.empty();																				//reset _from dropdown
	fromCombo.append('<option value="">--- SELECT ---</option>');

	var toCombo = $('#'+frmTo);
	toCombo.empty();																				//reset _to dropdown

	this.populateGroups(fromCombo,null);
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.selectRoute = function(config){
	if(config.depart && config.dest){
		$('#_from').attr('value',config.depart).change();
		$('#_to').delay(200).attr('value',config.dest);
	}else if(config.depart){
		$('#_from').attr('value',config.depart).change();
	}

	if(typeof(config.scroll) == 'undefined' || config.scroll) $(document).scrollTo($('.booking-panel'),500);
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.filter = function(frmFrom, frmTo){
	var fromCombo = $('#'+frmFrom);
	var toCombo = $('#'+frmTo);
	toCombo.empty();																				//reset _to dropdown
	
	if(fromCombo.val() != '') toCombo.append('<option value="">--- SELECT ---</option>');

	this.populateGroups(toCombo,fromCombo.val());
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.populateGroups = function(combo,depart) {
	var debug = '';
	var groups = [{ label:'', options:[] },{ label:'', options:[] },{ label:'Rest of the World', options:[] },{ label:'Other world destinations', options:[] }];
	//debug += "Filter airport: "+depart+"\n";
	for (var x in Airports){
		if (Airports[x].connections.length > 0){
			if(Airports[x].code != depart && depart != null) continue;
			var airfrance = 1; var klm = 1;
			//debug += "Airport: "+Airports[x].code+"\n";
			for(var y=0;y<Airports[x].connections.length;y++){
				for(var z=0;z<Flights.length;z++){
					if(Flights[z].depart == Airports[x].code && Flights[z].dest == Airports[x].connections[y]){
						/*if(Flights[z].company != 'AIRFRANCE')*/ airfrance = 0;
						if(Flights[z].company != 'KLM') klm = 0;
						//debug += Flights[z].depart+" -> "+Flights[z].dest+" af: "+airfrance+" klm: "+klm+" cj: "+((!klm && !airfrance)?1:0)+" cmp:"+Flights[z].company+"\n";
						
						if(depart != null){
							groups[((Flights[z].company == 'AIRFRANCE')?1:((Flights[z].company == 'KLM' && Flights[z].dest != 'LCY')?2:((Flights[z].company == 'OTHER')?3:0)))].options.push({ code:Flights[z].dest, name:Airports[Flights[z].dest].name });
						}
					}
				}
			}
			if(depart == null){
				groups[((airfrance)?1:((klm)?2:0))].options.push({ code:Airports[x].code, name:Airports[x].name });
			}
		}
	}

	var total = 0;
	for (var x=0;x<groups.length;x++) {
		if(groups[x].options.length > 0){
			var html = "";
			var options = groups[x].options.sort(function(a,b){ return ((a.name > b.name)?1:-1); });
			for(var y=0;y<options.length;y++){
				html += '<option value="'+options[y].code+'">'+options[y].name.replace(/^_/,'')+'</option>';
			}

			combo.append((groups[x].label != '')?'<optgroup label="'+groups[x].label+'">'+html+'</optgroup>':html);
			total += groups[x].options.length;
		}
	}

	//if(depart == null){
	//	combo.append("");
	//}
	//debug += "Total routes: " + total;
	//alert(debug); 
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.book = function(){
	var result = false;
	this.message.html = "";			//reset message

	this.updateSelection();

	var validated = true;

	if (this.selection.company == '' || this.selection.company == null){
		if(this.selection.depart == ''){
			this.message.html = "Please <i>select</i> an <b>origin</b> and <b>destination</b> airport.<br/>";
		}else{
			this.message.html = "Please <i>select</i> a <b>destination</b> airport.<br/>";
		}
		validated = false;
	}
	
	if (validated){
		// Only store current state if we have selected valid routes.
		this.storeState();
		
		if(this.selection.company != "CITYJET"){
			//track external / telephone only route
			if (typeof(pageTracker) == 'object') { pageTracker._trackPageview('/booking-panel/book-flight/'+Airports[this.selection.data.depart].safe_name+'/'+Airports[this.selection.data.dest].safe_name+'/'); };

			if (this.selection.company == 'AIRFRANCE' || this.selection.company == 'KLM' || this.selection.company == 'OTHER'){
				var redirect = ""; var message_html = ""; var autohide = 3500;

				if(this.selection.company == 'AIRFRANCE'){								  //defaults for AIRFRANCE
					message_html = "This route is operated by CityJet aircraft and crew for our parent company Air France, we are taking you to their website now to complete your booking.";
					redirect = 'http://www.airfrance.com/indexCOM.html'; 				  
					autohide = 3500;
				}else{												 					  //defaults for KLM
					message_html = "<b>London City to the World via Amsterdam.</b><br/>As part of the Air France KLM group, CityJet offers seamless connections to hundreds of destinations such as<br/>Delhi, Dubai, Lagos, Lima, Tokyo and Washington via Amsterdam. We are taking you to KLM.com now to complete your booking.";
					redirect = 'http://www.klm.com/travel/gb_en/plan_and_book/special_offers/flight_offers_from_london_city/index.htm';
					autohide = 6500;
				}
				_popup.create({ html:message_html, autohide:autohide, closeicon:false });
					
				var alternate_redirects = new Array(
					//+=+= AIR FRANCE +=+=+=+=+=+=+=+
					//Dublin > Paris CDG
					{ 'depart':'DUB', 'dest':'CDG', 'url':"http://www.airfrance.ie/cgi-bin/AF/IE/en/common/home/home/HomePageAction.do" },

					//Paris CDG > Dublin
					{ 'depart':'CDG', 'dest':'DUB', 'url':"http://www.airfrance.fr/cgi-bin/AF/FR/fr/common/home/home/HomePageAction.do" },
					
					//Edinburgh > Paris CDG
					{ 'depart':'EDI', 'dest':'CDG', 'url':"http://www.airfrance.co.uk/cgi-bin/AF/GB/en/common/home/home/HomePageAction.do" },

					//Paris CDG > Edinburgh
					{ 'depart':'CDG', 'dest':'EDI', 'url':"http://www.airfrance.fr/cgi-bin/AF/FR/fr/common/home/home/HomePageAction.do" },


					//+=+= VLM +=+=+=+=+=+=+=+=+=+=+=
					
					//Lagos
					{ 'depart':'LCY', 'dest':'LOS', 'url':"http://www.klm.com/travel/gb_en/plan_and_book/booking/book_a_flight/index.htm?destination=LOS&Dest=LOS&inttype=offer.LOS&c[0].os=LCY&c[0].ds=LOS&c[1].os=LOS&c[1].ds=LCY" },
					{ 'depart':'LOS', 'dest':'LCY', 'url':"http://www.klm.com/travel/gb_en/plan_and_book/booking/book_a_flight/index.htm?destination=LOS&Dest=LOS&inttype=offer.LOS&c[0].os=LCY&c[0].ds=LOS&c[1].os=LOS&c[1].ds=LCY" },
					
					//Dubai
					{ 'depart':'LCY', 'dest':'DXB', 'url':"http://www.klm.com/travel/gb_en/plan_and_book/booking/book_a_flight/index.htm?destination=DXB&Dest=DXB&inttype=offer.DXB&c[0].os=LCY&c[0].ds=DXB&c[1].os=DXB&c[1].ds=LCY" },
					{ 'depart':'DXB', 'dest':'LCY', 'url':"http://www.klm.com/travel/gb_en/plan_and_book/booking/book_a_flight/index.htm?destination=DXB&Dest=DXB&inttype=offer.DXB&c[0].os=LCY&c[0].ds=DXB&c[1].os=DXB&c[1].ds=LCY" },
					
					//Delhi
					{ 'depart':'LCY', 'dest':'DEL', 'url':"http://www.klm.com/travel/gb_en/plan_and_book/booking/book_a_flight/index.htm?destination=DEL&Dest=DEL&inttype=offer.DEL&c[0].os=LCY&c[0].ds=DEL&c[1].os=DEL&c[1].ds=LCY" },
					{ 'depart':'DEL', 'dest':'LCY', 'url':"http://www.klm.com/travel/gb_en/plan_and_book/booking/book_a_flight/index.htm?destination=DEL&Dest=DEL&inttype=offer.DEL&c[0].os=LCY&c[0].ds=DEL&c[1].os=DEL&c[1].ds=LCY" },
					
					//Lima
					{ 'depart':'LCY', 'dest':'LIM', 'url':"http://www.klm.com/travel/gb_en/plan_and_book/booking/book_a_flight/index.htm?destination=LIM&Dest=LIM&inttype=offer.LIM&c[0].os=LCY&c[0].ds=LIM&c[1].os=LIM&c[1].ds=LCY" },
					{ 'depart':'LIM', 'dest':'LCY', 'url':"http://www.klm.com/travel/gb_en/plan_and_book/booking/book_a_flight/index.htm?destination=LIM&Dest=LIM&inttype=offer.LIM&c[0].os=LCY&c[0].ds=LIM&c[1].os=LIM&c[1].ds=LCY" },
					
					//Tokyo
					{ 'depart':'LCY', 'dest':'HND', 'url':"http://www.klm.com/travel/gb_en/plan_and_book/booking/book_a_flight/index.htm?destination=TYO&Dest=TYO&inttype=offer.TYO&c[0].os=LCY&c[0].ds=TYO&c[1].os=TYO&c[1].ds=LCY" },
					{ 'depart':'HND', 'dest':'LCY', 'url':"http://www.klm.com/travel/gb_en/plan_and_book/booking/book_a_flight/index.htm?destination=TYO&Dest=TYO&inttype=offer.TYO&c[0].os=LCY&c[0].ds=TYO&c[1].os=TYO&c[1].ds=LCY" },
					
					//Washington
					{ 'depart':'LCY', 'dest':'IAD', 'url':"http://www.klm.com/travel/gb_en/plan_and_book/booking/book_a_flight/index.htm?destination=WAS&Dest=WAS&inttype=offer.WAS&c[0].os=LCY&c[0].ds=WAS&c[1].os=WAS&c[1].ds=LCY" },
					{ 'depart':'IAD', 'dest':'LCY', 'url':"http://www.klm.com/travel/gb_en/plan_and_book/booking/book_a_flight/index.htm?destination=WAS&Dest=WAS&inttype=offer.WAS&c[0].os=LCY&c[0].ds=WAS&c[1].os=WAS&c[1].ds=LCY" },
					
					//Other world destinations
					{ 'depart':'LCY', 'dest':'XXX', 'url':"http://www.klm.com/travel/generic/index.html" }
				);				

				for(var i=0;i<alternate_redirects.length;i++){
					var json = alternate_redirects[i];
					if(json.depart == this.selection.depart && json.dest == this.selection.dest){
						redirect = json.url;
					}
				}
				
				setTimeout(function(){ location.href = redirect },(autohide+500));
			}else{
				var result = window.confirm("Please book this flight by phone, click 'OK' to be redirected to telephone reservation information.");
				if(result) location.href = '/book-your-flight/telephone-reservations/';
			}
			return;
		}
	}

	if (validated){
		validated=!this.validatePassengers()?false:true;
	}
	
	if (validated){
		validated=!this.validateDates()?false:true;
	}
	
	if(this.message.html != "") _popup.create({ html:this.message.html, autohide:this.message.timeout, closeicon:false });
	
	if (validated){
		var t = new Date();
		
		// if today push times on by 3hr 5min and 5hr 5mins     for out and return
		var t3 = new Date();
		t3.setHours(t3.getHours() + 3); // 3
		t3.setMinutes(t3.getMinutes() + 5);
		
		var t5 = new Date();
		t5.setHours(t5.getHours() + 5); // 5
		t5.setMinutes(t5.getMinutes() + 5);
		
		var today = t.getFullYear() + "-" + this.addZero(t.getMonth() + 1) + "-" + this.addZero(t.getDate());
		
		if (this.form.elements['_retday'].value==""||this.form.elements['_retmonthyear'].value=="") {
			this.form.elements['TRIP_TYPE'].value='O';
			this.form.elements['_ret_hdn'].value='';
		}else{
			this.form.elements['TRIP_TYPE'].value='R';
			if(today == this.form.elements['_retmonthyear'].value + "-" + this.addZero(this.form.elements['_retday'].value)){
				this.form.elements['B_DATE_2'].value = t5.getFullYear() + this.addZero(t5.getMonth() + 1) + this.addZero(t5.getDate()) + this.addZero(t5.getHours()) + this.addZero(t5.getMinutes()); 
				this.form.elements['B_ANY_TIME_2'].value = "FALSE";
			}else{
				this.form.elements['B_DATE_2'].value = this.form.elements['_retmonthyear'].value.replace("-","") + this.addZero(this.form.elements['_retday'].value) + "0000" 
				this.form.elements['B_ANY_TIME_2'].value = "TRUE";
			}
		}
		
		//_popup.create({ html:"Searching for available flights . . . <br/><img src='/images/loading-bar.gif' alt='finding flights'/>" });

		// BC new flexible dates
		this.form.elements['DATE_RANGE_VALUE_1'].value = this.form.elements['flexMyDates'].checked?3:0;
		this.form.elements['DATE_RANGE_VALUE_2'].value = this.form.elements['flexMyDates'].checked?3:0;
		// end

		this.form.elements['B_LOCATION_1'].value = this.form.elements['_from'].options[this.form.elements['_from'].selectedIndex].value;
		this.form.elements['E_LOCATION_1'].value = this.form.elements['_to'].options[this.form.elements['_to'].selectedIndex].value;
		this.form.elements['_ret_hdn'].value='';
		this.form.elements['_dep_hdn'].value='';

		if(today == this.form.elements['_depmonthyear'].value + "-" + this.addZero(this.form.elements['_depday'].value)){
			this.form.elements['B_DATE_1'].value = t3.getFullYear() + this.addZero((t3.getMonth() + 1) + "") + this.addZero(t3.getDate() + "") + this.addZero((t3.getHours()) + "") + this.addZero(t3.getMinutes() + "") 
			this.form.elements['B_ANY_TIME_1'].value = "FALSE";
		}else{
			this.form.elements['B_DATE_1'].value = this.form.elements['_depmonthyear'].value.replace("-", "") + this.addZero(this.form.elements['_depday'].value) + "0000"
			this.form.elements['B_ANY_TIME_1'].value = "TRUE";
		}

		//alert(this.form.elements['_from'].options[this.form.elements['_from'].selectedIndex].value+this.form.elements['_to'].options[this.form.elements['_to'].selectedIndex].value);
		
		if (this.form.elements['_retday'].value==""||this.form.elements['_retmonthyear'].value=="") {
			this.form.elements['B_ANY_TIME_2'].value = this.form.elements['B_ANY_TIME_1'].value; // BC 15-4-2010
			this.form.elements['B_DATE_2'].value =  this.form.elements['B_DATE_1'].value; // BC 15-4-2010
		}
	
		
		if (this.selection.data.office == ''){
			var s='';
			for (var i=0; i<this.form.length; i++){
				var el = this.form.elements[i];
				s += el.name + ":" + el.value + ",";
			}
			ajax_post_request('/cgi-bin/local_widgets/widget-error-report.pl',{ac:'error',frm:s},"");
			
			_popup.create({ html:"There has been a problem with your request, please use our telephone booking system.", autohide:3500, closeicon:false });
			setTimeout(function(){ location.href = 'http://www.cityjet.com/contact-us/#Q1' },4750);
		}else{
			if (typeof(pageTracker) == 'object') { pageTracker._trackPageview('/booking-panel/book-flight/'+Airports[this.selection.data.depart].safe_name+'/'+Airports[this.selection.data.dest].safe_name+'/'); };
			this.form.submit();
		}
    }
    
    return result;
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.hire = function(){
	
	var message = "";
	var pickup = $('#_pickup_date').val().split("/");
	var dropoff = $('#_dropoff_date').val().split("/");

	var dtoday = new Date();				// today
	dtoday.setHours(0);
	dtoday.setMinutes(0,0,0);
	
    var pickup = $('#_pickup_airport').val();
    var dpickup = new Date(pickup[2]+"/"+pickup[1]+"/"+pickup[0]);
    var ddropoff = new Date(dropoff[2]+"/"+dropoff[1]+"/"+dropoff[0]);
    
    if(pickup == ""){
   		message = "Please <i>select</i> a <b>pickup</b> airport.<br/>";
    }else if (dateRegxp.test($('#_pickup_date').val()) == false){
		message = "The pickup date should be entered as dd/mm/yyyy<br/>";
	}else if (dateRegxp.test($('#_dropoff_date').val()) == false){
		message = "The drop off date should be entered as dd/mm/yyyy<br/>";
	}else if(dpickup < dtoday){
		message = "The pickup date should be today or in the future<br/>";
	}else if(dpickup > ddropoff){
		message = "The dropoff date should be after the pickup date<br/>";
	}

	if(message != ""){
		_popup.create({ html:message, autohide:3000, closeicon:false });
		return;
	}
	
	var idx = 0;
	var link = this.hertzLink;
	if (typeof(pageTracker) == 'object') { pageTracker._trackPageview('/booking-panel/hire/'+((pickup == 'other')?"other":Airports[pickup].safe_name)+'/'); };
	
	for(var p in this.hertzParameters){
		var value = this.hertzParameters[p];
		var reps = String(value).match(/%[^%]+%/g);
		if(reps){
			for(var x=0;x<reps.length;x++){
				var rep = reps[x].replace(/%/g,'');
				var rep_value = $('#'+rep).val();
				if(rep.indexOf('_hour') != -1 || rep.indexOf('_minute') != -1) rep_value = this.addZero(rep_value);
				if(rep.indexOf('_date') != -1){
					var bits = rep_value.split("/");
					rep_value = bits[2]+this.addZero(bits[1])+this.addZero(bits[0]);
				}

				if(rep.indexOf('_pickup_airport') != -1){
					if(rep_value == 'other'){
						//alert(this.hertzDefaultLink);
						location.href = this.hertzDefaultLink;
						return;
					}
				}

				value = value.replace(reps[x],rep_value);
				//alert("p: "+p+" rep: "+rep+" repval:"+reps[x]+" value: "+value);
			}
		}
		link += ((idx == 0)?'?':'&') + p + "=" +value;
		idx++;
	}

	location.href = link;
	//alert(link);
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.validatePassengers = function() {
   //Max number of passengers is not the same on VLM and CityJet
    if(this.selection.company == "CITYJET"){   
        this.limits.passengers = 9;
    }else if(this.selection.company == "VLM"){   
        this.limits.passengers = 6;
    }

    //Do the check
    var passErrMsg = ''
    var xa = parseInt(this.form.elements['adultSelector'].options[this.form.elements['adultSelector'].selectedIndex].text);
    var xc = parseInt(this.form.elements['childSelector'].options[this.form.elements['childSelector'].selectedIndex].text);
    var xi = parseInt(this.form.elements['infantSelector'].options[this.form.elements['infantSelector'].selectedIndex].text);
    if ((xa + xc + xi) == 0) {
        passErrMsg += 'You must enter at least 1 passenger<br/>';
    }
    if ((xa + xc) > this.limits.passengers) {
        passErrMsg += 'You cannot book for more than ' + this.limits.passengers + ' adults and children<br/>';
    }
    if (xi > 0) {
        if (xi > xa) {
            passErrMsg += 'Only 1 infant allowed per adult passenger<br/>';
        }
    }
    if (passErrMsg.length > 0) {
        this.message.html += passErrMsg;
        return false;
    } else {
        return true;
    }
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.validateDates = function(){
	var t_dep = this.form.elements['_depart'].value.split("/"); // dd/mm/yyyy
	var t_ret = this.form.elements['_return'].value.split("/");

	if (dateRegxp.test(this.form.elements['_depart'].value) == false){
		this.message.html += "The departure date should be entered as dd/mm/yyyy<br/>";
		return false;
	}
	
	var dtoday = new Date();			// today
	dtoday.setHours(0);
	dtoday.setMinutes(0,0,0);
	
	var d12 = new Date();
    d12.setMonth(d12.getMonth() + 12);	// today + 12 months
    
    var ddepart = new Date(t_dep[2]+"/"+t_dep[1]+"/"+t_dep[0]);

	//alert('depart: '+ddepart+"\n"+'today: '+dtoday+"\n"+'12 months: '+d12);

	if (ddepart > d12){
		this.message.html += "The departure date should be within the next 12 months<br/>";
		return false;
	}

	if (ddepart < dtoday){
		this.message.html += "The departure date should be today or in the future<br/>";
		return false;
	}

	if(!this.form.elements['oneWay'].checked){
		if (dateRegxp.test(this.form.elements['_return'].value) == false){
			this.message.html += "The return date should be entered as dd/mm/yyyy<br/>";
			return false;
		}
		//alert("return: "+this.form.elements['_return'].value);
		var dreturn = new Date(t_ret[2]+"/"+t_ret[1]+"/"+t_ret[0]);
		//alert(dreturn + " > " + d12);
		if (dreturn > d12){
			this.message.html += "The return date should be within the next 12 months<br/>";
			return false;
		}

		if ((t_ret[2]*1000)+(t_ret[1]*50) + t_ret[0] <(t_dep[2]*1000)+(t_dep[1]*50) + t_dep[0]){
			this.message.html += "The return date must be after the departure date<br/>";
			return false;
		}
	}
	
	//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
	//Code to cope with routes which are unavailable before a particular date.			CM 15APR2010
	//Date restriction on BVE route amended per GR request								BP 28JUL2010
	//Date restriction added to non LCY routes											BP 28JUL2010
	//Date restriction on DOL routes amended per GR request								BP 13SEP2010
	//Date restriction on DOL routes amended per GR request								BP 16SEP2010
	//Date restriction on DOL routes amended per GR request								BP 08OCT2010
	//Date restriction on DOL routes amended per GR request	BVE to 2011/01/09			BP 08OCT2010
	//Date restriction on DOL&BVE to/from LCY routes amended per PB 					BC 21OCT2010
	//Date restriction on DOL&BVE to/from LCY routes reversed 							BP 25OCT2010
	//Date restriction on RTHM>HMA route added per MJ request							BP 26OCT2010
	//Date restriction on DOL removed per GR request									BP 23NOV2010
	//Date restriction on BVE removed per GR request									BP 17JAN2011
	//Date restriction added on TLN/AVN routes per GR request							CM 18JAN2011
	//Date restriction amended on TLN/AVN routes per GR request							BP 18JAN2011


	var delayed_route_checks = new Array(
		// DOL routes
		//{ 'depart':'LCY', 'dest':'DOL', 'datefrom':new Date('2010/06/23'), 'dateto':new Date('2011/01/02') },
		//{ 'depart':'DOL', 'dest':'LCY', 'datefrom':new Date('2010/06/23'), 'dateto':new Date('2011/01/02') },
		//{ 'depart':'DUB', 'dest':'DOL', 'datefrom':new Date('2010/06/23'), 'dateto':new Date('2011/01/02') },
		//{ 'depart':'DOL', 'dest':'DUB', 'datefrom':new Date('2010/06/23'), 'dateto':new Date('2011/01/02') },
		//{ 'depart':'DND', 'dest':'DOL', 'datefrom':new Date('2010/06/23'), 'dateto':new Date('2011/01/02') },
		//{ 'depart':'DOL', 'dest':'DND', 'datefrom':new Date('2010/06/23'), 'dateto':new Date('2011/01/02') },
		//{ 'depart':'EDI', 'dest':'DOL', 'datefrom':new Date('2010/06/23'), 'dateto':new Date('2011/01/02') },
		//{ 'depart':'DOL', 'dest':'EDI', 'datefrom':new Date('2010/06/23'), 'dateto':new Date('2011/01/02') },

		// BVE routes
		//{ 'depart':'LCY', 'dest':'BVE', 'datefrom':new Date('2010/06/25'), 'dateto':new Date('2011/02/27') },
		//{ 'depart':'BVE', 'dest':'LCY', 'datefrom':new Date('2010/06/25'), 'dateto':new Date('2011/02/27') },
		//{ 'depart':'DUB', 'dest':'BVE', 'datefrom':new Date('2010/06/25'), 'dateto':new Date('2011/02/27') },
		//{ 'depart':'BVE', 'dest':'DUB', 'datefrom':new Date('2010/06/25'), 'dateto':new Date('2011/02/27') },
		//{ 'depart':'DND', 'dest':'BVE', 'datefrom':new Date('2010/06/25'), 'dateto':new Date('2011/02/27') },
		//{ 'depart':'BVE', 'dest':'DND', 'datefrom':new Date('2010/06/25'), 'dateto':new Date('2011/02/27') },
		//{ 'depart':'EDI', 'dest':'BVE', 'datefrom':new Date('2010/06/25'), 'dateto':new Date('2011/02/27') },
		//{ 'depart':'BVE', 'dest':'EDI', 'datefrom':new Date('2010/06/25'), 'dateto':new Date('2011/02/27') },

		//Toulon
		{ 'depart':'TLN', 'dest':'LCY', 'datefrom':new Date('2011/05/28') },
		{ 'depart':'LCY', 'dest':'TLN', 'datefrom':new Date('2011/05/27') },
		
		//Avignon
		{ 'depart':'AVN', 'dest':'LCY', 'datefrom':new Date('2011/05/29') },
		{ 'depart':'LCY', 'dest':'AVN', 'datefrom':new Date('2011/05/27') },

		//Pau
		{ 'depart':'PUF', 'dest':'LCY', 'datefrom':new Date('2011/04/02'), extramsg:'Days of operation: Mon, Thurs, Sat' },
		{ 'depart':'LCY', 'dest':'PUF', 'datefrom':new Date('2011/04/02'), extramsg:'Days of operation: Mon, Thurs, Sat' },

		// HAM > RTM route
		{ 'depart':'RTM', 'dest':'HAM', 'datefrom':Date(new Date()-1), 'dateto':new Date('2010/11/21') },
		{ 'depart':'HAM', 'dest':'RTM', 'datefrom':Date(new Date()-1), 'dateto':new Date('2010/11/21') }
	);

	var debug = '';
	var delayMsg = '';
	for(var i=0;i<delayed_route_checks.length;i++){
		var json = delayed_route_checks[i];
		if(json.depart == this.selection.depart && json.dest == this.selection.dest){
			if(json.datefrom && json.dateto){
				if(json.datefrom > ddepart || json.dateto < ddepart || json.dateto < dreturn){
					delayMsg = "This flight is only available for travel between<br/><b>"+cityjet.formatDateObject(json.datefrom)+"</b> and <b>"+cityjet.formatDateObject(json.dateto)+"</b>"+((json.extramsg)?"<br/>"+json.extramsg:"");
				}
			}else if(json.datefrom){
				if(json.datefrom > ddepart){
					delayMsg = "This flight is only available for travel from <b>"+cityjet.formatDateObject(json.datefrom)+"</b>"+((json.extramsg)?"<br/>"+json.extramsg:"");
				}
			}else if(json.dateto){
				if(json.dateto > ddepart && json.dateto > dreturn){
					delayMsg = "This flight is only available for travel before <b>"+cityjet.formatDateObject(json.dateto)+"</b>"+((json.extramsg)?"<br/>"+json.extramsg:"");
				}
			}
		}
	}

	if (delayMsg != ""){
		if((this.form.elements['_from'].value == 'HAM' && this.form.elements['_to'].value == 'RTM') || (this.form.elements['_from'].value == 'RTM' && this.form.elements['_to'].value == 'HAM')){
			delayMsg = "As from Saturday 20th November 2010, CityJet will no longer be operating flights between Rotterdam and Hamburg.<br/><br/>We apologize for the inconvenience.<br/><br/>Alternatively travellers can book flights from Amsterdam to Hamburg with KLM.<br/>Please visit <a href='http://www.klm.com' target='_blank'>www.klm.com</a> for more information.";
			this.message.timeout = 6500;
		}

		this.message.html = delayMsg;
		if(this.message.html != '') return false;
	}

	//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
	
	this.form.elements['_depmonthyear'].value = t_dep[2]+"-"+this.addZero(t_dep[1]); // BC 28/6/2010  ensure month is 2 digits before giving it to Amadeus
	this.form.elements['_depday'].value = t_dep[0];

	this.form.elements['_retmonthyear'].value = (this.form.elements['oneWay'].checked)?"":t_ret[2]+"-"+this.addZero(t_ret[1]);  // BC 28/6/2010
	this.form.elements['_retday'].value = (this.form.elements['oneWay'].checked)?"":t_ret[0];
	return true;
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.calendarControl = function(obj,dcontrol){
	var earlyist = new Date();
	var estr = this.addZero(earlyist.getDate())+"/"+this.addZero(earlyist.getMonth()+1)+"/"+earlyist.getFullYear();
	
	var latest = new Date(new Date(earlyist.getFullYear(),earlyist.getMonth()+12,earlyist.getDate() ));
	var lstr = this.addZero(latest.getDate())+"/"+this.addZero(latest.getMonth()+1)+"/"+latest.getFullYear();
	
	if (dcontrol == '_depart' || dcontrol == '_return'){
		if (!this.validDate(this.form.elements[dcontrol])) this.form.elements[dcontrol].value = estr;
		calendar_input_control(obj,dcontrol,{limit_start:estr,limit_end:lstr},this.flightDateChange);
	}else if (dcontrol == '_pickup_date' || dcontrol == '_dropoff_date'){
		if (!this.validDate($('#'+dcontrol)[0])) $('#'+dcontrol).val(estr);
		calendar_input_control(obj,dcontrol,{limit_start:estr,limit_end:lstr},this.hireDateChange);
	}else if (dcontrol == '_date' || dcontrol == '_rdate'){
		calendar_input_control(obj,dcontrol,{limit_start:estr,limit_end:lstr},this.timetableDateChange);
	}else{
		calendar_input_control(obj,dcontrol,{limit_start:estr,limit_end:lstr},this.flightDateChange);
	}

}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.storeState = function(){
	var state = {};
	for(var p in this.memory){
		state[p] = (this.form.elements[p].type == 'checkbox')?((this.form.elements[p].checked)?1:0):this.form.elements[p].value;
	}
	_infx.cookie.create({name:'_state',days:0.05,value:_ext.JSON.encode(state)});
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.restoreState = function(config){
	var state = _ext.JSON.decode(_infx.cookie.read('_state')) || {};
	if(state){
		if(state._from) this.form.elements['_from'].value = state._from;

		for(var p in this.memory){
			if(config[p] != undefined) state[p] = config[p];
			
			if(typeof(state[p]) != 'undefined' && this.form.elements[p]){
				if(this.form.elements[p].type == 'checkbox'){
					this.form.elements[p].checked = (state[p])?true:false;
					if(this.form.elements[p].onchange) this.form.elements[p].onchange();
				}else if(this.form.elements[p].type == 'select-one'){
					this.form.elements[p].value = state[p];
					if(this.form.elements[p].onchange) this.form.elements[p].onchange();
				}else{
					this.form.elements[p].value = state[p];
				}
			}
		}

		this.updateSelection();
	}else{
		this.filter('_from','_to');
	}

	this.toggleOneWay();
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.validDate = function(obj){
	var chklist = {};
	chklist[obj.name] = {'type':'date'};
	return (validate_single_field(obj,chklist))?true:false;
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.addZero = function(str){
	str = str+'';
	return (str.length < 2 )?"0" + str:str;
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.formatDateObject = function(date){		//changes  Mon Sep 27 2010 00:00:00 GMT+0100 (BST)  into  Mon Sep 27 2010
	return (date).toString().replace(/ [0-9]{2}:[0-9]{2}:[0-9]{2}.*$/,'');
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.toggleOneWay = function(){
	var obj = cityjet.form.elements['oneWay'];
	$('#_return_label').css({'visibility':(obj.checked)?'hidden':'visible'});
	$('#_return_btn').css({'visibility':(obj.checked)?'hidden':'visible'});
	$('#_return').css({'visibility':(obj.checked)?'hidden':'visible'});
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.flightDateChange = function(obj){
	var bits = cityjet.form.elements['_depart'].value.split('/');
	var dep = new Date(bits[2],bits[1]-1,bits[0]);
	var bits = cityjet.form.elements['_return'].value.split('/');
	var ret = new Date(bits[2],bits[1]-1,bits[0]);

	if (obj.name == '_depart' && ret < dep) cityjet.form.elements['_return'].value = obj.value;
	if (obj.name == '_return' && ret < dep) cityjet.form.elements['_depart'].value = obj.value;
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.timetableDateChange = function(obj){
	var valid = cityjet.validDate(obj);
	if(valid){			
		//work out if the depart date is set after the return date and adjust accordingly	
		var dbits = $('#_date').val().split('/');
		var dep = new Date(dbits[2],dbits[1]-1,dbits[0]);
		
		var rbits = $('#_rdate').val().split('/');
		var ret = new Date(rbits[2],rbits[1]-1,rbits[0]);
		
		if(obj.name == '_date'){
			$("#_depart").val(obj.value);
			if(ret < dep) $("#_rdate").val(obj.value).trigger('blur');
		}else if(obj.name == '_rdate'){
			$("#_return").val(obj.value);
			if(ret < dep) $("#_date").val(obj.value).trigger('blur');
		}
	}

	//if(cityjet.validDate(this)){ rtnEl("_depart").value = this.value; }
	//if(cityjet.validDate(this)){ rtnEl("_return").value = this.value; }
	
	//var bits = cityjet.form.elements['_depart'].value.split('/');
	//var dep = new Date(bits[2],bits[1]-1,bits[0]);
	//var bits = cityjet.form.elements['_return'].value.split('/');
	//var ret = new Date(bits[2],bits[1]-1,bits[0]);

	//if (obj.name == '_depart' && ret < dep) cityjet.form.elements['_return'].value = obj.value;
	//if (obj.name == '_return' && ret < dep) cityjet.form.elements['_depart'].value = obj.value;
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.hireDateChange = function(obj){
	var bits = $('#_pickup_date').val().split('/');
	var dep = new Date(bits[2],bits[1]-1,bits[0]);
	var bits = $('#_dropoff_date').val().split('/');
	var ret = new Date(bits[2],bits[1]-1,bits[0]);

	if (obj.name == '_pickup_date' && ret < dep) $('#_dropoff_date').val(obj.value);
	if (obj.name == '_dropoff_date' && ret < dep) $('#_pickup_date').val(obj.value);
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.viewTimetable = function(config){
	var fnames = {};
	if(config.source == 'booking-panel'){
		this.storeState();															//store form state
		fnames = { _from:'_from', _to:'_to', _depart:'_depart', _return:'_return' };
	}else if(config.source == 'timetable'){
		this.storeState();
		fnames = { _from:'from', _to:'to', _depart:'_date', _return:'_rdate' };
	}else{
		load_page('/timetable/');
		return 1;
	}

	//Pass on data via URL to the timetable system		
	if(rtnEl(fnames._from).value != '' && rtnEl(fnames._to).value != '' && rtnEl(fnames._depart).value != '' && rtnEl(fnames._return).value != ''){
		var sdate = { 
			_depart:rtnEl(fnames._depart).value.replace(/\//g,'-'), 
			_return:rtnEl(fnames._return).value.replace(/\//g,'-') 
		};
		var rvalidated = cityjet.validDate(rtnEl(fnames._depart));
		var dvalidated = cityjet.validDate(rtnEl(fnames._return));
		if(rvalidated && dvalidated){
			if (typeof(pageTracker) == 'object') { pageTracker._trackPageview('/booking-panel/view-timetable/'+Airports[rtnEl(fnames._from).value].safe_name+'/'+Airports[rtnEl(fnames._to).value].safe_name+'/'); }; 
			load_page('/timetable/'+Airports[rtnEl(fnames._from).value].safe_name+'/'+Airports[rtnEl(fnames._to).value].safe_name+'/'+sdate._depart+'/'+sdate._return+'/');
			return;
		}
	}else if(rtnEl(fnames._from).value != '' && rtnEl(fnames._to).value != ''){
		if (typeof(pageTracker) == 'object') { pageTracker._trackPageview('/booking-panel/view-timetable/'+Airports[rtnEl(fnames._from).value].safe_name+'/'+Airports[rtnEl(fnames._to).value].safe_name+'/'); }; 
		load_page('/timetable/'+Airports[rtnEl(fnames._from).value].safe_name+'/'+Airports[rtnEl(fnames._to).value].safe_name+'/');
		return;
	}else if(rtnEl(fnames._from).value != ''){
		if (typeof(pageTracker) == 'object') { pageTracker._trackPageview('/booking-panel/view-timetable/'+Airports[rtnEl(fnames._from).value].safe_name+'/'); }; 
		load_page('/timetable/'+Airports[rtnEl(fnames._from).value].safe_name+'/');
		return;
	}else{
		if (typeof(pageTracker) == 'object') { pageTracker._trackPageview('/booking-panel/view-timetable/'); }; 
		load_page('/timetable/');
		return;
	}
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.updatePassengers = function(){
	var config = { 
		adults:		{ obj:cityjet.form.elements['adultSelector'],	max: cityjet.limits.adults },
		children:	{ obj:cityjet.form.elements['childSelector'],	max: cityjet.limits.children },
		infants:	{ obj:cityjet.form.elements['infantSelector'],	max: cityjet.limits.infants }
	};

	//Apply limits (can be no more than 9 children + adults together) + (can be an infant per adult up 2 five)
	config.adults.max = cityjet.limits.passengers - parseInt(config.children.obj.value);
	config.children.max = cityjet.limits.passengers - parseInt(config.adults.obj.value);
	config.infants.max = (parseInt(config.adults.obj.value) > cityjet.limits.infants)?cityjet.limits.infants:parseInt(config.adults.obj.value);
	
	//alert('max adults: '+config.adults.max+' children: '+config.children.max+' infants: '+config.infants.max);
	for (var p in config){
		var curvalue = parseInt(config[p].obj.value);
		if(p == 'infants' && curvalue > config.infants.max){										//restrict infants to max as adults may of changed
			curvalue = config.infants.max;
			config[p].obj.value = config.infants.max;
		}
		var combo = $(config[p].obj).empty();														//reset dropdown
		for(var x=((p == 'adults')?1:0);x<=config[p].max;x++){
			combo.append('<option value="'+x+'" '+((x == curvalue)?'selected':'')+'>'+x+'</option>');
		}
	}
	
	//alert('adults: '+config.adults.obj.value+' children: '+config.children.obj.value);
	
	//Update traveller hidden data
	for (var x = 0; x < parseInt(config.adults.obj.value); x++) cityjet.travellers[x].value = "ADT";
	for (var x = parseInt(config.adults.obj.value); x < parseInt(config.children.obj.value) + parseInt(config.adults.obj.value); x++) cityjet.travellers[x].value = "CHD";
	for (var x = parseInt(config.children.obj.value) + parseInt(config.adults.obj.value); x < cityjet.limits.passengers; x++) cityjet.travellers[x].value = "";
	
	for (var x = 0; x < cityjet.limits.infants; x++){
		$("#HAS_INFANT_" + (x + 1).toString()).val((config.infants.obj.value >= x+1)?"TRUE":"FALSE");
	}
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

cityjet.filterTimeTable = function(fromcode){
	var select = rtnEl('to');
	if(select){
		select.length = 0;
		for(var code in Airports){
			if(code == fromcode){
				var data = Airports[code];
				select.options[select.options.length] = new Option('--- SELECT ---','-1');
				
				var tempArray=[];
				for(var x=0;x<data.connections.length;x++){
					var cityjet = 0;
					for(var y=0;y<Flights.length;y++){
						if(Flights[y].depart == fromcode && Flights[y].dest == data.connections[x]){
							cityjet = (Flights[y].company == 'CITYJET')?1:0;
							break;
						}
					}
					if(cityjet) tempArray[tempArray.length] = [Airports[data.connections[x]].name,Airports[data.connections[x]].code];
				}
				//sorting & filling the Obj with new values
				tempArray.sort();

				for (var j=0; j<tempArray.length; j++){
					select.options[select.options.length] = new Option(tempArray[j][0],tempArray[j][1]);
				}
			}
		}
	}
}

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

/**
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 5/25/2009
 * @author Ariel Flesler
 * @version 1.4.2
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);
