﻿var req;
var notSearching = true;

function xmlOpen(method, url, toSend, responseHandler)
{
     if(window.XMLHttpRequest)
     {
         // browser has native support for XMLHttpRequest object
         req = new XMLHttpRequest();
     }
     else if(window.ActiveXObject)
     {
         // try XMLHTTP ActiveX (Internet Explorer) version
         req = new ActiveXObject("Microsoft.XMLHTTP");
     }
     if(req)
     {
         req.onreadystatechange = responseHandler;
         req.open(method, url, true);
         req.setRequestHeader("content-type", "application/x-www-form-urlencoded");
         req.send(toSend);
     }
}

function SetVisibility(obj, visibility)
{
    obj.style.visibility = visibility;
}

function rtrim(txt)
{
    var nonspaceCnt = txt.length;
    while(nonspaceCnt > 0 && txt.charAt(nonspaceCnt - 1) == ' ')
    {
        --nonspaceCnt;
    }
    return txt.substr(0, nonspaceCnt);
}

function getKeyCode(evt)
{
    return (evt.keyCode) ? evt.keyCode : evt.which;
}

function ProcessKeyEvent(evt, obj)
{
    var myDivLocal = document.getElementById('divSearch');
    //divSearch.getElementsByTagName("input")[0].disabled = true;
    myDivLocal.getElementsByTagName("input")[0].disabled = true;
    var keycode = getKeyCode(evt);
    if(keycode == 40)
    {
        var slct = document.forms[0].elements['slctCity'];
        if(slct.style.visibility == 'visible')
        {
            slct.focus();
            slct.selectedIndex = 0;
        }
    }
    else
    {
        if(rtrim(obj.value) == '')
        {
            SetVisibility(document.forms[0].elements['slctCity'], 'hidden');
            return;
        }
        SearchTown(obj);
    }
}

function SearchTown(obj)
{
    if(notSearching == true)
    {
        notSearching = false;
        xmlOpen("POST", "JavaScript/CitiesAjaxHandler.ashx", "city=" + obj.value, DoResponceArrived);
        setTimeout("notSearching = true;", 300);
    }
}

function DoResponceArrived()
{
    if(req.readyState == 4)
    {
         if(req.status == 200)
         {
             var slct = document.forms[0].elements['slctCity'];
             if(req.responseText != '')
             {
                slct.options.length = 0;
                var optns = req.responseText.split('^');
                for(i = 0; i < optns.length - 1; ++i)
                {
                    slct.options[i] = new Option(optns[i], ' ');
                }
                SetVisibility(slct, 'visible');
             }
             else
             {
                SetVisibility(slct, 'hidden');
             }
         }
    }
}

function ProcessSlctKeyEvent(evt, obj)
{
    var keycode = getKeyCode(evt);
    if(keycode == 13)
    {
        SelectTown(obj);
    }
}

function SelectTown(obj)
{
    var txtCity = document.forms[0].elements['txtCity'];
    if(obj.selectedIndex != -1)
    {
        txtCity.value = obj.options[obj.selectedIndex].text;
        SetVisibility(obj, 'hidden');
        txtCity.focus();
        var myDivLocal = document.getElementById('divSearch');
        myDivLocal.getElementsByTagName("input")[0].disabled = false;
        //divSearch.getElementsByTagName("input")[0].disabled = false;
    }
}

function CheckTxtValid(msg)
{
    if(document.forms[0].elements['txtCity'].value == '')
    {
        alert(msg);
        return false;
    }
    return true;
}

function Cleartxt(id)
{
    document.forms[0].elements[id].value = '';
}
