﻿var xmlHttp;
var tmrModal;
var tmrTick;

//===========================================================================================================
function CheckCode(event, ID) {
    var Code = event.keyCode;
    
    if (((Code >= 65) && (Code <= 90)) || ((Code >= 48) && (Code <= 57)) || ((Code >= 96) && (Code <= 105)) || (Code == 109) || (Code == 110) || (Code == 188) || (Code == 189) || (Code == 190) || (Code == 222) || (Code == 32) || (Code == 46) || (Code == 8)) {
        clearTimeout(tmrModal);
        showFlights();
        startModalTimer();
        
        //track which control the focus was last on in case a modal dialog interrupts the experience
        var objFocus = document.getElementById('hidFocus');
        objFocus.value = ID;
    }
}

//===========================================================================================================
function tabArrivalClick() {
    var objType = document.getElementById('hidType');
    
    if (objType.value != 'arrival') {
        clearTimeout(tmrModal);
        objType.value = 'arrival';
        showFlights();
        startModalTimer();
   
        //set default focus direction
        var objFocus = document.getElementById('hidFocus');
        objFocus.value = document.getElementById('hidArrivalAirlineID').value;
    }  
}

//===========================================================================================================
function tabDepartureClick() {
    var objType = document.getElementById('hidType');
    
    if (objType.value != 'departure') {
        clearTimeout(tmrModal);
        objType.value = 'departure';
        showFlights();
        startModalTimer();
   
        //set default focus direction
        var objFocus = document.getElementById('hidFocus');
        objFocus.value = document.getElementById('hidDepartureAirlineID').value;
    }
}

//===========================================================================================================
function startModalTimer() {
    var objToggle = document.getElementById('chkRefreshToggle');
    if (objToggle != null) {
        if (objToggle.checked == true) {
            var objModal = document.getElementById('hidModal');
            if (objModal != null) {
                tmrModal = setTimeout("showRefresh()", objModal.value);
            }
        }
    }          
}

//===========================================================================================================
function startTickTimer() {
    var objToggle = document.getElementById('chkRefreshToggle');
    if (objToggle != null) {
        if (objToggle.checked == true) {
            var objTick = document.getElementById('hidTick');
            if (objTick != null) {
                tmrTick = setTimeout("showFlights()", objTick.value);
            }
        }
    }         
}

//===========================================================================================================
function toggleRefresh() {
    var objToggle = document.getElementById('chkRefreshToggle');
    if (objToggle != null) {
        if (objToggle.checked == true) {
            //start refresh timers
            startTickTimer();
            startModalTimer();
        }
        else {
            //stop refresh timers
            clearTimeout(tmrTick);
            clearTimeout(tmrModal);
        }
    }
}
//===========================================================================================================
function showRefresh() {
    clearTimeout(tmrTick);
    var objModal = $find('mpeRefresh');
    if (objModal != null) {
        objModal.show();
    }
}

//===========================================================================================================
function showAlert() {
    clearTimeout(tmrModal);
    var objModal = $find('mpeAlert');
    if (objModal != null) {
        objModal.show();
    }
}

//===========================================================================================================
function hideRefresh() {
    var objModal = $find('mpeRefresh');
    if (objModal != null) {
        objModal.hide();
        
        //start timers so they will execute again later
        startModalTimer();
        showFlights();
        
        //reset focus to last used control
        var objFocus = document.getElementById('hidFocus');
        var objControl = document.getElementById(objFocus.value);
        objControl.focus();
    }
}

//===========================================================================================================
function hideAlert() {
    var objModal = $find('mpeAlert');
    if (objModal != null) {
        objModal.hide();
        
        //start timers so they will execute again later
        startModalTimer();
	    startTickTimer();
	    
	    //reset focus to last used control
        var objFocus = document.getElementById('hidFocus');
        var objControl = document.getElementById(objFocus.value);
        objControl.focus();
    }
}

//===========================================================================================================
function getCarrierFilter(ID) {
    var objCarrier = document.getElementById(ID);
	var CarrierFilter;
	
	if ((objCarrier.value != "") && (objCarrier.value != "Airline")) {
	    CarrierFilter = objCarrier.value + "%";
	}
	else {
	    CarrierFilter = "%";
	}
	
	return CarrierFilter;
}

//===========================================================================================================
function getFlightFilter(ID) {
    var objFlight = document.getElementById(ID);
	var FlightFilter;
	
	if ((objFlight.value != "") && (objFlight.value != "Flight #")) {
	    FlightFilter = objFlight.value + "%";
	}
	else {
	    FlightFilter = "%";
	}
	
	return FlightFilter;
}

//===========================================================================================================
function getCityFilter(ID) {
    var objCity = document.getElementById(ID);
	var CityFilter;
	
	if ((objCity.value != "") && (objCity.value != "Origin") && (objCity.value != "Destination")) {
	    CityFilter = objCity.value + "%";
	}
	else {
	    CityFilter = "%";
	}
	
	return CityFilter;
}

//===========================================================================================================
function showFlights()
{
	xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null)
	{
		alert("Browser does not support HTTP Request.");
		return
	}
	
	//clear timer so it doesn't automatically fire before ajax can return
	clearTimeout(tmrTick);
	
	var objType = document.getElementById('hidType');
    if (objType != null) {
        if (objType.value == "arrival") {
            var carrierID = document.getElementById('hidArrivalAirlineID').value;
            var flightID = document.getElementById('hidArrivalFlightID').value;
            var cityID = document.getElementById('hidArrivalCityID').value;
            var type = "arrival";
        }
        else {
            var carrierID = document.getElementById('hidDepartureAirlineID').value;
            var flightID = document.getElementById('hidDepartureFlightID').value;
            var cityID = document.getElementById('hidDepartureCityID').value;
            var type = "departure";
        }
    }
    else {
        alert("Javascript is mandatory.");
        return
    }
        
	var CarrierFilter = getCarrierFilter(carrierID);
	var FlightFilter = getFlightFilter(flightID);
	var CityFilter = getCityFilter(cityID);
	
	var url= "ajax/ajax_getFlights.aspx"
	url = url + "?airline=" + CarrierFilter
	url = url + "&flight=" + FlightFilter
	url = url + "&city=" + CityFilter
	url = url + "&type=" + type
	url = url + "&sid=" + Math.random();    //must have this for page to refresh (otherwise, it will cache)
    
    document.getElementById(type + "_list").innerHTML = "<div class='loading modal-background'><img class='align-center' src='App_Themes/default/images/wdgt-loading.gif' alt='Loading...' /></div>";
	xmlHttp.onreadystatechange = stateChanged;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
} 

//===========================================================================================================
function stateChanged() 
{ 
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
	{
	    var objType = document.getElementById('hidType');   //this function will never be called if hidType doesn't exist
		document.getElementById(objType.value + "_list").innerHTML = xmlHttp.responseText;
		
		if (document.getElementById('hidMessageClass')) {
		    document.getElementById('lblUpdateMessage').innerHTML = document.getElementById('hidMessageText').value;
		    document.getElementById('lblUpdateMessage').className = document.getElementById('hidMessageClass').value;
		    document.getElementById('imgUpdateMessage').src = document.getElementById('hidMessageImage').value;
		    document.getElementById('last_update').style.display = 'inline';
		    
		    if (document.getElementById('hidMessageClass').value == "alert") {
		        showAlert();
		    }
		    else {
		        startTickTimer();
		        
		        //if modal timer isn't already running, start it
		        if (!tmrModal) {
		            startModalTimer();
		        }
		    }
		}
	} 
} 

//===========================================================================================================
function GetXmlHttpObject()
{ 
	var objXMLHttp=null
	
	if (window.XMLHttpRequest)
	{
		objXMLHttp=new XMLHttpRequest()
	}
	else if (window.ActiveXObject)
	{
		objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
	}
	
	return objXMLHttp
}