/////////////////////
// Helper Function //
/////////////////////

function addURLParam(sURL, sParamName, sParamValue) {
	sURL += (sURL.indexOf("?") == -1 ? "?" : "&");
	sURL += encodeURIComponent(sParamName) + "=" + encodeURIComponent(sParamValue);
	return sURL;
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function openAirportLookUpPanel(objID) {

    var x = 0;
    var y = 0;

    var browser = navigator.appName;
    //alert(browser);
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x;
 		var ieversion=new Number(RegExp.$1) // capture x.x portion and store as a number
 		
	}

	
    if (objID == "txtDepartureAirportCode") {
        if((browser=="Microsoft Internet Explorer") && (ieversion == 7)) {
            x = -50;
            y = -410;
        } else {
            x = -50;
            y = -410;
        }
    }

    if (objID == "txtArrivalAirportCode") {
        if ((browser == "Microsoft Internet Explorer") && (ieversion == 7)) {
            x = -500;
            y = -410;
        } else {
            x = -500;
            y = -410;
        }
    }

	// clear previous input and results
	document.getElementById("airportResults").innerHTML = "";
	document.getElementById("SearchString").value = "";

	var airportLookUpPanel = document.getElementById("AirportLookUpPanel");
	
	// enable old target object
	var targetObjectValue = document.getElementById("TargetObject");
	
	if (targetObjectValue.value != "")
	{
		var oldTargetObject = document.getElementById(targetObjectValue.value);
		oldTargetObject.disabled = false;
	}
	
	// disable target object
	var realTargetObject = document.getElementById(objID);
	realTargetObject.disabled = true;
	
	// store target object id in hidden input
	var targetObject = document.getElementById("TargetObject");
	targetObject.value = objID;

	var obj = document.getElementById(objID);
	airportLookUpPanel.style.display = "block";
	airportLookUpPanel.style.position = "absolute";
	airportLookUpPanel.style.left = findPosX(obj) - x + "px";
	airportLookUpPanel.style.top = findPosY(obj) - y +"px";
	// focus on search string
	var searchString = document.getElementById("SearchString");
	searchString.focus();
}

function closeAirportLookUpPanel() {
	var targetObjectValue = document.getElementById("TargetObject");
	if (targetObjectValue.value != "") {
		var targetObject = document.getElementById(targetObjectValue.value);
		
		// enable targetObject, if any.
		if (targetObject != null)
			targetObject.disabled = false;
	}
	
	var airportLookUpPanel = document.getElementById("AirportLookUpPanel");
	airportLookUpPanel.style.display = "none";

	// display aircraft size dropdown list, if any.
	var aircraftSizeDiv = document.getElementById("AircraftSizeDiv");
	if (aircraftSizeDiv != null) {
		aircraftSizeDiv.style.display = "block";
	}

	// display dropdown list, if any.
	var radiusDiv = document.getElementById("RadiusDiv");
	if (radiusDiv != null) {
		radiusDiv.style.display = "block";
	}
	
	// display map, if any.
	var googleMap = document.getElementById("map");
	if (googleMap != null) {
		googleMap.style.display = "block";
	}	
	
}

////////////////////
// XMLHttpRequest //
////////////////////

var req;

function processReqChange() {
	if (req.readyState == 4) {
		if (req.status == 200) {
		
			// hide aircraft size dropdown list, if any.
			var aircraftSizeDiv = document.getElementById("AircraftSizeDiv");
			if (aircraftSizeDiv != null)
				aircraftSizeDiv.style.display = "none";

			// hide radius dropdown list, if any.
			var radiusDiv = document.getElementById("RadiusDiv");
			if (radiusDiv != null)
				radiusDiv.style.display = "none";
				
			// hide map, if any.
			var googleMap = document.getElementById("map");
			if (googleMap != null)
				googleMap.style.display = "none";
		
			var airportResults = document.getElementById("airportResults");
			airportResults.innerHTML = req.responseText;
			// eval(req.responseText);

		} else {
			alert("Error connecting to server, please try again later");
		}
	}
}

function loadXMLDoc(url) {
	
	// branch for native XMLHttpRequest object
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
		req.onreadystatechange = processReqChange;
		req.open("GET", url, true);
		req.send(null);
		
	// branch for IE/Windows ActiveX version
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if (req) {
			req.onreadystatechange = processReqChange;
			req.open("GET", url, true);
			req.send();
		}
	} else {
		alert("Your browser does not support XMLHttpRequest");
	}
}


function getAirports() {
	var searchString = document.getElementById("SearchString");
	
	if (searchString.value == "") {
		return;
	}
	
	var airportResults = document.getElementById("airportResults");
	airportResults.innerHTML = "<p align=center>Please wait while we look that up...</p>";
	
	var url = "_GetAirports.aspx";
	url = addURLParam(url, "SearchString", searchString.value);

	loadXMLDoc(url);
}

function setTarget(airportCode) {
	var targetObjectValue = document.getElementById("TargetObject");
	var targetObject = document.getElementById(targetObjectValue.value);
	targetObject.value = airportCode;
	if (targetObjectValue.value == "txtDepartureAirportCode") {
	    document.getElementById("dvDepartureAirportCode").innerHTML = airportCode;
	    document.getElementById("rfvDepartureAirportCode").innerHTML = "";
	}
	if (targetObjectValue.value == "txtArrivalAirportCode") {
	    document.getElementById("dvArrivalAirportCode").innerHTML = airportCode;
	    document.getElementById("rfvArrivalAirportCode").innerHTML = "";
	}

	closeAirportLookUpPanel();
}

