﻿var word = '';
var UP = 38;
var DOWN = 40;
var ENTER = 13;
var index = -1;
var TAB = 9;
var BACKSPACE = 8;

var ControlId = '';

var table = null;
var rows = null;

var selectedRow = null;

function GetSuggestions(e, _ControlId) {
   
    ControlId = _ControlId;
    
    var keynum
    var keychar
    var numcheck

    if (window.event) // IE
    {
        keynum = e.keyCode
    }
    else if (e.which) // Netscape/Firefox/Opera
    {
        keynum = e.which
    }

    keychar = String.fromCharCode(keynum)
    numcheck = /\d/

    if (keynum == DOWN) {
        MoveCursorDown();
        return;
    }

    else if (keynum == UP) {
        MoveCursorUp();
        return;
    }

    if (keynum != DOWN && keynum != UP && keynum >= 65 && keynum <= 90) {
        word = word + keychar;
    }

    else if (keynum == BACKSPACE) {
        word = word.substring(0, word.length - 1);
    }

    if (keynum == ENTER) {
        document.getElementById(ControlId + "_results").innerHTML = '';
        return false;
    }

    // Call the server side method
    CallServer(document.getElementById(ControlId).value + "<ControlId>" + ControlId);
}

function IsFireFox() {
    return (navigator.appName == 'Netscape');
}

function MoveCursorUp() {
    selectedRow = null;
    table = document.getElementById(ControlId + "_MyTable");

    if (table == null) return;

    rows = table.getElementsByTagName("TR");

    if (index > 0) {
        index--;

        SetDefaultRowColor();
        selectedRow = rows[index];
        selectedRow.className = 'HighlightRow'
    }
}

function MoveCursorDown() {
    selectedRow = null;
    table = document.getElementById(ControlId + "_MyTable");

    if (table == null) return;

    rows = table.getElementsByTagName("TR");

    if (index < rows.length) {
        if (index < rows.length - 1) {
            index++;
            SetDefaultRowColor();
            selectedRow = rows[index];
            selectedRow.className = 'HighlightRow';
        }
    }
}

function SetDefaultRowColor() {
    for (i = 0; i < rows.length; i++) {
        rows[i].className = 'DefaultRowColor';
    }
}

function RecieveServerData(response) {
    if (response != '') {
        document.getElementById(ControlId + "_results").innerHTML = response;
    }
    else {
        document.getElementById(ControlId + "_results").innerHTML = '';
    }
}

function SetSuggestionText(value) {
    document.getElementById(ControlId).value = value;
    document.getElementById(ControlId + "_results").innerHTML = '';

    index = -1;
    
    return false;
}

function HideSuggestionList() {
if(document.getElementById(ControlId + "_results")!=null)
    document.getElementById(ControlId + "_results").innerHTML = '';

index = -1;

    return false;
}

function HandleEnterKeyPress(e, _ControlId) {
    
    ControlId = _ControlId;
    
    var keynum

    if (window.event) // IE
    {
        keynum = e.keyCode
    }
    else if (e.which) // Netscape/Firefox/Opera
    {
        keynum = e.which
    }

    if (keynum == ENTER) {
        if (IsFireFox()) {
            document.getElementById(ControlId).value = selectedRow.childNodes[1].innerHTML;
        }
        else {
            document.getElementById(ControlId).value = selectedRow.innerText;
        }

        document.getElementById(ControlId + "_results").innerHTML = '';

        word = '';
        index = -1;
        return false;
    }
}

function handleMouseDown(evt) {
    if (!evt) evt = window.event;

    var srcElement = evt.srcElement ? evt.srcElement : evt.target;

    if (srcElement.id.length > 5) {
        if (srcElement.id.substring(0, 6) != "SugRow") {
            HideSuggestionList();
        }
    }
    else {
        HideSuggestionList();
    }
}

document.onmousedown = handleMouseDown;