/* -------------------------------------------------------------
 *	@Project: Frankfurt Airport City
 *	@Author: Florian Ludwig (triplesense.de)
 *	@Created: 2008-12-12
 *	@Last edited: Nils Hagemann, 2008-12-17
 * ------------------------------------------------------------- */


/**
 * ViewController2 for second flight search frontend application
 */
function ViewController2() 
{
	var page; // current page 
	var items; // nr of items to be displayed
	var searchtype; // current type of search(arrival or departure)
	var iata; // current selected airport
	var flight;// current selected flight
	var baseurl;
	var init_arrival;
	var init_departure;
	var loading;
	var context; // 0 Startseite, 1 Arrivals, 2 Departures
	var language; // en, de
	
	var detailpanel; // Zeiger auf geöffnete Detailansicht
    var date_return;

    var typ; // p=pax, c=cargo
	// Text-Platzhalter
	var html_loading;
	var text_flightnumber;
	var text_airport;
	
	ViewController2.prototype.init = function (url,lng)
	{
		this.page = 1;
		this.items= 12;
		this.iata = '';
		this.flight ='';
		this.baseurl = url;
		this.init_arrival=0;
		this.init_departure=0;
		this.loading=false;
		this.language = lng;
		this.detailpanel =false;
		this.date_return = '';
        this.typ = 'p';

		this.html_loading = fVc.html_loading;
		this.text_flightnumber = fVc.text_flightnumber;
		this.text_airport =fVc.text_airport;
		this.html_error =fVc.html_error;

		$(".flightsearch2 .flightsearch").submit(function(){
			fVc2.page=1;
			fVc2.search();
			return false;
		});
		

		$(".flightsearch2 .itemcount").click(function(){
			var cHref = $(this).attr("href");
			fVc2.items = cHref.substr(1);
			$(".flightsearch2 .itemcount").removeClass("active");
			$(this).addClass("active");
			fVc2.search();
			return false;
		});

		this.context=3; // Immer Flugübersichtsseite
		this.items=12;
		//this.switch2Departures();

        if ( ignoreinit2 )
        {
            $(".flightsearch2").each(function(){this.style.display="none";} );
            ignoreinit2 = false;
        }
	}
	
	ViewController2.prototype.switch2Departures = function ()
	{
		this.searchtype = 'departure';
		$("#"+this.searchtype+"_flightnumber").val(this.text_flightnumber);
		$("#"+this.searchtype+"_location").val(this.text_airport);
		$("#"+this.searchtype+"_time").val(timeframes[0].n);
		this.initAutoComplete();
	}
	
	ViewController2.prototype.initAutoComplete = function ()
	{
		this.page = 1;
		this.iata = '';
		this.flight ='';

		var doinit=false;
		if (this.searchtype=="arrival" && this.init_arrival==0)
		{
			this.init_arrival=1;
			doinit=true;
		}
		if (this.searchtype=="departure" && this.init_departure==0)
		{
			this.init_departure=1;
			doinit=true;
		}	
		if (doinit==true)
		{
			
			$("#"+this.searchtype+"_location").autocomplete(airports,
			{
				autoFill: true,
				matchContains:true,
				formatItem: function(row, i, max) {return row.n + " ("+row.i+")";},
				formatMatch: function(row, i, max) {return row.n + " ("+row.i+")";},
				formatResult: function(row) {return row.n;}
			}
			);
			$("#"+this.searchtype+"_flightnumber").autocomplete(flights,
				{
					autoFill: true,
					matchContains:true,
					formatItem: function(row, i, max) {return row.n;},
					formatMatch: function(row, i, max) {return row.n;},
					formatResult: function(row) {return row.n;}
				}
			);
			$("#"+this.searchtype+"_time").autocomplete(timeframes,
					{
						autoFill: true,
						matchContains:true,
						formatItem: function(row, i, max) {return row.n;},
						formatMatch: function(row, i, max) {return row.n;},
						formatResult: function(row) {return row.i;}
					}
				);
			
			$("#"+this.searchtype+"_location").result(function(event, data, formatted) 
			{
				if (data)
				{
					fVc2.iata =data.i;
					fVc2.flight='';
					fVc2.page=1;
					$("#"+fVc2.searchtype+"_flightnumber").val(fVc2.text_flightnumber);
					// Direkt nach Autocomplete Suche auslösen
					fVc2.search();
				}
				else
				{
					fVc2.iata ='';
				}
				
			});
			
			$("#"+this.searchtype+"_flightnumber").result(function(event, data, formatted) 
			{
				if (data)
				{
					fVc2.flight =data.i;
					fVc2.iata='';
					fVc2.page=1;
					$("#"+fVc2.searchtype+"_location").val(fVc2.text_airport);
					// Direkt nach Autocomplete Suche auslösen
					fVc2.search();
				}
				else
				{
					fVc2.flight ='';
				}
			});
			$("#"+this.searchtype+"_time").result(function(event, data, formatted) 
			{
				if (data)
				{
					fVc2.search();
				}
				else
				{
					fVc2.flight ='';
				}
			});
		}
		fVc2.search();
	}
	
	ViewController2.prototype.initPager = function ()
	{
		$(".flightsearch2 .reloadbutton").click(
		function()
		{
			fVc2.search();
			return false;
		}
		);
		$(".flightsearch2 .page-browser a").click(
		function()
		{
			var cHref = $(this).attr("href");
            var pos = cHref.indexOf('#');
            if ( pos != -1)
                cHref = cHref.substring(pos);
			fVc2.page = cHref.replace(/[^0-9]/g,'');

            fVc2.search("usepager","true");
		}
		);
	}

	ViewController2.prototype.search = function (paraname,paravalue)
	{
		// Wenn gerade schon eine Suche gestartet wird, wird die zweite unterdrückt (z.B. bei Autocomplete+Return)
		if (this.loading==true|| ignoreinit2==true)
		{
			// Um bei Netzwerkhängern die Funktionalität nicht zu gefährden, wird das aber gleich wieder aufgehoben
			this.loading=false;
			return false;
		}
		this.loading=true;

        this.searchtype = fVc.searchtype=='departure'?'arrival':'departure';

        $(".flightsearch2").each(function(){this.style.display = ""});

		$("#current-departures .content-container").html(this.html_loading);

        var time = $("#"+this.searchtype+"_time").val();
        if ( !time )
        {
            time = $("#time_out").val();
        }

		var timeval = time?escape(time.replace(/[^0-9:]/g,'')):"";
        var flightval= fVc2.flight?escape(fVc2.flight):"";
	    var airlineval= fVc.airline?escape(fVc.airline):"";
        
        $("#page2").val(fVc2.page);

		var url = this.baseurl+"?" +"type="+escape(fVc2.searchtype)+"&typ="+escape(fVc2.typ)+"&iata="+escape(fVc2.iata)+"&flight="+flightval+"&time="+timeval+"&page="+escape(fVc2.page)+"&items="+escape(fVc2.items)+"&context="+escape(fVc2.context)+"&sprache="+escape(fVc2.language)+"&airlines="+airlineval;

        if ( paraname && paravalue)
        {
            url = url + "&"+paraname+"="+escape(paravalue);
        }
        if ( this.date_out && this.date_out != '')
        {
            url = url + "&dateout="+escape(this.date_out);
        }
        if ( this.date_return && this.date_return != '' )
        {
            url = url + "&datereturn="+escape(this.date_return);
        }

		// User-Sucheingabe anhängen
		url = url + "&search_location=" + escape($("#"+this.searchtype+"_location").val())+ "&search_flight=" + escape($("#"+this.searchtype+"_flightnumber").val())

		$("#current-departures .content-container").load(url, null ,function(responseText, textStatus, XMLHttpRequest){
			if(textStatus!="success")
			{
				$("#current-departures .content-container").html(fVc2.html_error);
			}
			fVc2.initPager();
			initdetailview();
            fVc.correctButtons();
			fVc2.loading=false;

		});

		return false;
	}
}


var fVc2;

$(document).ready(
function ()
{
    fVc2 = new ViewController2();
    fVc2.init(dfra.config.flightsearchUrl, dfra.config.language);

    try
    {
        if ( typeof(initpage2) != 'undefined' )
        {
            fVc2.initPager();
            initdetailview();
            fVc.correctButtons();
            fVc2.loading=false;

            fVc2.iata=fVc.iata;

            if ( $('#return:checked').val() )
            {
                fVc2.date_out=$('#date_return').val();
            }
        }
    } catch ( Exception ){}
});

