﻿var lstCities = null;

function PostCodeInit()
{
    writeToLog("PostCodeInit()");
    if (defaultZip)
    {
        if (defaultZip != null && defaultZip != "")
        {            
           PostCodeSearchZip();
        }
    }
}

function PostCodeSearchZip()
{   
    writeToLog("PostCodeSearch()");
    removeScript("PostCodeSearch");
    writeToLog("Call PostCodeSearch -> " + PostCodeServerURL + "?c=" + varC + "&iz=" + defaultZip);
    var url = PostCodeServerURL + "?c=" + varC + "&iz=" + defaultZip;
    addScript("PostCodeSearch", url);
}

function PostCodeSearch()
{   
    writeToLog("PostCodeSearch()");
    var txtCity = document.getElementById(ServerTxtCity);
    if (txtCity)
    {           
        removeScript("PostCodeSearch");
        var varZ = txtCity.value;         
        if (varZ != "")
        {
            writeToLog("Call PostCodeSearch -> " + PostCodeServerURL + "?c=" + varC + "&z=" + varZ);
            var url = PostCodeServerURL + "?c=" + varC + "&z=" + varZ;
            addScript("PostCodeSearch", url);
        }
        else
        {
            PostCodeServer_NotFound();
        }
    }
}

function PostCodeServer_ClearList()
{
    writeToLog("PostCodeServer_ClearList()");
    removeScript("PostCodeSearch");
    lstCities = document.getElementById(ServerLstCities);
    if (lstCities)
    {  
        var cnt;
        for (cnt = lstCities.length - 1; cnt >= 0; cnt--)
        { 
            lstCities.remove(cnt);            
        }       
    }
}

function PCS_Add(ZipCode, City)
{
    removeScript("PostCodeSearch");
    if (lstCities)
    {
        var NewOption = document.createElement('option');
        NewOption.text = City + " (" + ZipCode + ")";
        NewOption.value = ZipCode + "_#_" + City;
        try {
            lstCities.add(NewOption, null); // standards compliant; doesn't work in IE
        }
        catch(ex) {
            lstCities.add(NewOption); // IE only
        }        
    }
}

function PostCodeServer_DoneList(ZipCount)
{
    writeToLog("PostCodeServer_DoneList(" + ZipCount + ")");
    removeScript("PostCodeSearch");
    if (lstCities)
    {
        lstCities.style.visibility = "visible";
        lstCities.style.display = "inline";        
        lstCities.selectedIndex = 0;
    }
}

function PostCodeServer_SelectInList()
{
    writeToLog("PostCodeServer_SelectInList()");
    removeScript("PostCodeSearch");
    if (lstCities)
    {        
        if (lstCities.length == 1)
        {
            var txtCity = document.getElementById(ServerTxtCity);            
            var listValue = lstCities[0].value;
            if (listValue.indexOf("_#_") > 0);
                listValue = listValue.substr(listValue.indexOf("_#_") + 3)
            txtCity.value = listValue;
            lstCities.selectedIndex = 0;
        }
    }
}

function PostCodeServer_Found(ZipCode, City)
{
    writeToLog("PostCodeServer_Found(\"" + ZipCode + "\", \"" + City + "\")");
    
    removeScript("PostCodeSearch");    
    var hidCity = document.getElementById(HiddenCityField);
    if (hidCity)
    {
        hidCity.value = City;
    }
    
    var txtCity = document.getElementById(txtCityField);
    if (txtCity)
    {
        txtCity.innerHTML = City;
    }    
}

function PostCodeServer_NotFound()
{
    writeToLog("PostCodeServer_NotFound()");

    removeScript("PostCodeSearch");
    
    lstCities = document.getElementById(ServerLstCities);
    if (lstCities)
    {  
        var cnt;
        for (cnt = lstCities.length - 1; cnt >= 0; cnt--)
        { 
            lstCities.remove(cnt);            
        }
        
        var NewOption = document.createElement('option');
        NewOption.text = notFoundText;
        NewOption.value = 0;
        try {
            lstCities.add(NewOption, null); // standards compliant; doesn't work in IE
        }
        catch(ex) {
            lstCities.add(NewOption); // IE only
        }           
    }    
}

// ---------------------------------------------------
// MISC METHODS
// ---------------------------------------------------
var logElementName = "divPostCodeSearchLog";

function removeScript(id)
{
    var objScript = document.getElementById(id);
    var objHead = document.getElementsByTagName("head").item(0);
    if (objScript) 
    {
        objHead.removeChild(objScript);
        objScript = null;   
    }
}

function addScript(id, url) {
    
    // Add unique info to url
    var d = new Date();
    url = url + "&d=" + d.getTime();
    
    removeScript(id);
    var objHead = document.getElementsByTagName("head").item(0);
    var objScript = document.createElement("script");
    objScript.setAttribute("src", url);
    objScript.setAttribute("id", id);
    objHead.appendChild(objScript);    
}

function getNowTimeString()
{
    var date_now = new Date();
    return date_now.getHours() + ":" + date_now.getMinutes() + ":" + date_now.getSeconds() + ":" + date_now.getMilliseconds();
}

function writeToLog(textToLog)
{
    var objLog = document.getElementById(logElementName);
    if (objLog != null)
    {
        if (objLog.innerHTML != null)
            objLog.innerHTML = getNowTimeString() + " -> " + textToLog + "<br>" + objLog.innerHTML;
        else
            objLog.innerHTML = getNowTimeString() + " -> " + textToLog + "<br>";
    }
}
