﻿var sUrlBase = 'http://www.buljobs.bg/'; //'http://' + window.location.host.replace('/', '') + '/'; // Some browsers put '/' at the end of the host name, others miss it. This replace unifies both
var keys = { 13: 'Enter', 27: 'Esc', 38: 'Arrow Up', 40: 'Arrow Down', 16: 'Shift' }
var txtValue = ''; //the value of the text box entered by the user

function LoadJSON(a_sURL)
{
    var sHead = document.getElementsByTagName("head")[0];
    var tagNewScript = document.createElement('script');
    tagNewScript.type = 'text/javascript';
    tagNewScript.src = a_sURL;
    sHead.appendChild(tagNewScript);
}

function ProcessJSON(a_sResponseData)
{
    var ctlAutocompleteDiv = document.getElementById(a_sResponseData.SearchResultsBox);    

    ctlAutocompleteDiv.style.display = "";
    ctlAutocompleteDiv.innerHTML = "";

    for (var i = 0; i < a_sResponseData.Data.length; i++) {

        if (a_sResponseData.Data[i].Text)
            ctlAutocompleteDiv.innerHTML += '<div name=\"AutocomplText\" class="autocompleteText" onmouseover="this.className=\'autocompleteTextHover\'" onmouseout="this.className=\'autocompleteText\'" onmousedown="' + a_sResponseData.UIMethod + '(this, \'' + ctlAutocompleteDiv.id + '\');">' + a_sResponseData.Data[i].Text + '</div>';

    }
    if (a_sResponseData.Data.length == 0) {
        ctlAutocompleteDiv.style.display = "none";
    }
}

/*
a_oObject - the object for which the autocomplete is for,
a_sTxtBoxType - 1 - for professions etc., 2 - for regions,
a_oEvent = 'event',
a_oAutocompleteDiv = the ID of the div object where the results go
*/
function DoAutocompleteRequest(a_oObject, a_sTxtBoxType, a_oEvent, a_oAutocompleteDiv, a_sUrl, a_sUIMethod)
{
    //alert('do auto complete');
    var e = e || a_oEvent;    

    if (keys[e.keyCode] != 'Arrow Up' && keys[e.keyCode] != 'Arrow Down' && keys[e.keyCode] != 'Esc')
        txtValue = a_oObject.value;

    if (keys[e.keyCode] == 'Arrow Up' ||
            keys[e.keyCode] == 'Arrow Down' //|| keys[e.keyCode] == 'Shift'
            )//if up or down arrows have been pressed
    {
        var divElem = document.getElementById(a_oAutocompleteDiv);
        var arrAutocompleteElems = divElem.getElementsByTagName('div');

        var pos = -1;

        for (var i = 0; i < arrAutocompleteElems.length; i++) //goes through all the elements in the autocomplete div
        {
            if (arrAutocompleteElems[i].className == 'autocompleteTextHover') //if there is selected element in the autocomplete div
            {
                pos = i;
                arrAutocompleteElems[i].className = 'autocompleteText';
                if (keys[e.keyCode] == 'Arrow Down') //select next element if Up Arrow is pressed
                {
                    if (i >= arrAutocompleteElems.length - 1) a_oObject.value = txtValue;
                    else {
                        arrAutocompleteElems[i + 1].className = 'autocompleteTextHover';
                        a_oObject.value = arrAutocompleteElems[i + 1].innerHTML.replace('&amp;', '&');
                    }
                }
                else //select previous element if Down Arrow is selected
                {
                    if (i == '0') a_oObject.value = txtValue;
                    else {
                        arrAutocompleteElems[i - 1].className = 'autocompleteTextHover';
                        a_oObject.value = arrAutocompleteElems[i - 1].innerHTML.replace('&amp;', '&');
                    }
                }
                break;
            }
        }
        if (pos == -1) //no element is selected => select first element
        {
            arrAutocompleteElems[0].className = 'autocompleteTextHover';
            a_oObject.value = arrAutocompleteElems[0].innerHTML.replace('&amp;', '&');
        }
    }
    else if (keys[e.keyCode] == 'Enter') {
        var divElem = document.getElementById(a_oAutocompleteDiv);
        var arrAutocompleteElems = divElem.getElementsByTagName('div');

        for (var i = 0; i < arrAutocompleteElems.length; i++) //goes through all the elements in the autocomplete div
        {
            if (arrAutocompleteElems[i].className == 'autocompleteTextHover') {
                a_oObject.value = arrAutocompleteElems[i].innerHTML.replace('&amp;', '&');
                document.getElementById(a_oAutocompleteDiv).style.display = "none";
                arrAutocompleteElems[i].className = 'autocompleteText';
                break;
            }
        }
    }
    else if (keys[e.keyCode] == 'Esc') {
        document.getElementById(a_oAutocompleteDiv).style.display = "none";
        a_oObject.value = txtValue;
    }
    else {
        if (a_oObject.value.length > 0) {
            var sUrl = sUrlBase;
            if (a_sUrl && a_sUrl != null)
                sUrl = a_sUrl;

            //LoadJSON(encodeURI(sUrl + 'Autocomplete.ashx?resultsFormat=JSON&text=' + a_oObject.value + '&txtBox=' + a_sTxtBoxType + '&divResultBox=' + a_oAutocompleteDiv + (a_sUIMethod == null ? '' : '&UIMethod=' + a_sUIMethod)));
            LoadJSON(encodeURI(sUrl + 'php/Autocomplete.php?resultsFormat=JSON&text=' + a_oObject.value + '&txtBox=' + a_sTxtBoxType + '&divResultBox=' + a_oAutocompleteDiv + (a_sUIMethod == null ? '' : '&UIMethod=' + a_sUIMethod)));
        }
        else {
            document.getElementById(a_oAutocompleteDiv).style.display = "none";
        }
    }
}

