﻿// JScript 
var Ajax_request;
var Ajax_url = "SantaMarina/AjaxHandler.aspx?";

function Ajax_RequestCreate() {
    try {
        Ajax_request = new XMLHttpRequest();
    }
    catch (trymicrosoft) {
        try {
            Ajax_request = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (othermicrosoft) {
            try {
                Ajax_request = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (failed) {
                Ajax_request = false;
            }
        }
    }

    if (!Ajax_request)
        alert("Error initializing XMLHttpRequest!");
}

function Ajax_GetValueOf(key, fromStr) {
    key = key + "=";

    if (fromStr.indexOf(key) == -1) {
        return null;
    }
    else {
        return fromStr.substring(fromStr.indexOf(key), fromStr.indexOf(";", fromStr.indexOf(key))).split("=")[1];
    }
}

function Ajax_LoadingShow() {
//    document.getElementById("divLoading").style.display = "block";
}

function Ajax_LoadingHide() {
//    document.getElementById("divLoading").style.display = "none";
}

function Ajax_Debug(message, isAppend) {
    var debugObj = document.getElementById("divDebug");
    debugObj.style.display = "block";
    debugObj.innerHTML = (!isAppend || isAppend == null) ? message : debugObj.innerHTML + message;
}

var CountryCodeModule_divLoadingObj;

function CountryCodeModule_AirportSelect(obj) {
    var prefix = obj.id.replace("_lstAirport", "");
    var lstCountryObj = document.getElementById(prefix + "_lstCountry");
    var lstAirportObj = obj;
    var divCodesObj = document.getElementById(prefix + "_divCodes");
    var spnAirportCodeObj = document.getElementById(prefix + "_spnAirportCode");
    var spnCountryCodeObj = document.getElementById(prefix + "_spnCountryCode");
    var spnAreaCodeObj = document.getElementById(prefix + "_spnAreaCode");

    spnCountryCodeObj.innerHTML = "";
    spnAirportCodeObj.innerHTML = "";
    spnAreaCodeObj.innerHTML = "";
    divCodesObj.style.display = "none";

    if (lstAirportObj.value != "") {
        var countryCode = lstCountryObj.value;
        var airportCode = lstAirportObj.value.split(".")[0];
        var areaCode = lstAirportObj.value.split(".")[1];
        spnCountryCodeObj.innerHTML = (countryCode == null || countryCode == "null") ? "" : countryCode;
        spnAirportCodeObj.innerHTML = (airportCode == null || airportCode == "null") ? "" : airportCode;
        spnAreaCodeObj.innerHTML = (areaCode == null || areaCode == "null") ? "" : areaCode;
        divCodesObj.style.display = "block";
    }
}

function CountryCodeModule_CountrySelect(obj) {
    var prefix = obj.id.replace("_lstCountry", "");
    var lstAirportObj = document.getElementById(prefix + "_lstAirport");
    var countryCode = obj.value;
    var divCodesObj = document.getElementById(prefix + "_divCodes");
    var spnAirportCodeObj = document.getElementById(prefix + "_spnAirportCode");
    var spnCountryCodeObj = document.getElementById(prefix + "_spnCountryCode");
    var spnAreaCodeObj = document.getElementById(prefix + "_spnAreaCode");
    CountryCodeModule_divLoadingObj = document.getElementById(prefix + "_divLoading");

    lstAirportObj.style.display = "none";
    divCodesObj.style.display = "none";
    spnCountryCodeObj.innerHTML = "";
    spnAirportCodeObj.innerHTML = "";
    spnAreaCodeObj.innerHTML = "";
    
    if (obj.value != "") {
        CountryCodeModule_divLoadingObj.style.display = "block";
        
        Ajax_RequestCreate();

        var url = Ajax_url;
        var params =
            "cmd=getairports"
            + "&ms=" + new Date().getTime()
            + "&countryCode=" + countryCode
            + "&callerId=" + lstAirportObj.id;

        Ajax_request.onreadystatechange = CountryCodeModule_AirportGetCallback
        Ajax_request.open("POST", url, true);
        Ajax_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        Ajax_request.setRequestHeader("Content-length", params.length);
        Ajax_request.send(params);
    }
}

function CountryCodeModule_AirportGetCallback() {
    if (Ajax_request.readyState == 4) {
        if (CountryCodeModule_divLoadingObj != null) CountryCodeModule_divLoadingObj.style.display = "none";
        if (Ajax_request.status == 200) {
            var response = Ajax_request.responseText;
            // debug
            // Ajax_Debug(response, false);
            var error = Ajax_GetValueOf("error", response);
            var callerId = Ajax_GetValueOf("callerId", response);

            if (error == "0") {                
                var lstAirportObj = document.getElementById(callerId)
                var codes = Ajax_GetValueOf("codes", response).split(":");
                var names = Ajax_GetValueOf("names", response).split(":");
                var areaCodes = Ajax_GetValueOf("areaCodes", response).split(":");
                lstAirportObj.innerHTML = "";
                var option = document.createElement("option");
                option.text = "(choose an airport)";
                option.value = "";
                try {
                    lstAirportObj.add(option, null);
                }
                catch (ex) {
                    lstAirportObj.add(option);
                }                
                for (var i = 0; i < codes.length; i++) {
                    if (codes[i] != "") {
                        option = document.createElement("option");
                        option.text = names[i];
                        option.value = codes[i] + "." + areaCodes[i];
                        try {
                            lstAirportObj.add(option, null);
                        }
                        catch (ex) {
                            lstAirportObj.add(option);
                        }
                    }
                }
                lstAirportObj.style.display = "inline";
            }            
        }
        else {
            alert(Ajax_request.status);
        }               
    }
}

