﻿// suggest.js File

var mOver = false;
var currentSuggestBox;
var currentSelectedSuggestText;

function trim(str) {
    return str.replace(/^\s+|\s+$/g, '');
}

function txtKeyUpEvent(e, obj, type, divResultId){
    if(!e){
        if( window.event )
            e = window.event;
    }
    if (e){
        switch (e.keyCode) {
            case 9: // tab key
                break;  
            case 13: break; // enter key
            case 16: break; // shift key
            case 17: break; // control key
            case 18: break; // alt key
            case 20: break; // caps key
            case 33: break; // pageup
            case 34: break; // pagedown
            case 35: break; // end key
            case 36: break; // home
            case 37: break; // left arrow key
            case 39: break; // right arrow key
            case 45: break; // insert
            case 91: break; // windows key
            case 144: break;// numlock key
            case 27:        // escape key
                hideSuggestBox(divResultId);
                break;
            case 38: // up arrow key
                arrowHit(false, divResultId, obj);
                break; 
            case 40: // down arrow key
                arrowHit(true, divResultId, obj);
                break; 
            default:
                if ((e.keyCode >= 112) && (e.keyCode <= 123)){ //function key
                } else {
                    if (obj.value.length > 2) {
                        searchSuggest(obj, type, divResultId);
                    }
                    else {
                        hideSuggestBox(divResultId);
                    }
                }
        }
    }    
}

function arrowHit(isDownHit, divResultId, obj){
    var resultdiv = document.getElementById(divResultId);
    if (resultdiv && resultdiv.getElementsByTagName("div").length > 0) {
        var items = resultdiv.getElementsByTagName("div");
        var index = -1;
        for (var i=1; i < items.length; i++) {
            var item = items[i];
            if (item.className != '') {
                item.className = "";
                index = i;
                break;
            }
        }
        if (!isDownHit){
            if (index == -1) { // Nothing is selected so select the last one
                index = (items.length - 1);
            } else {
                index--;
            }
        } else {
            if (index == -1) { // Nothing is selected so select the first one
                index = 1;
            } else {
                index++;
            }
        }
        
        if ((index >= 1) && (index < items.length)) {
            suggestOver(items[index]);
            items[index].className = "suggestOver";
            obj.value = trim(items[index].innerHTML).replace(/&amp;/g, '&');
        }
    }
    
    
}

function searchSuggest(obj, type, divResultId){
    retrievePage('suggest.aspx', 'type='+type+'&value='+obj.value, divResultId, obj.getAttribute('id'));
}

function suggestloaded(divResultId, elemId){
    currentSuggestBox = document.getElementById(divResultId);
    var items = xmlHttp.responseXML.getElementsByTagName("item");
    currentSuggestBox.innerHTML = '';
    if (items && items.length > 0) {
        var suggest = "<div class='suggestBox'><span class='suggestTitle'>Click list below to choose (optional):</span></div>";
        for (i=0; (i < items.length) && (i < 10); i++) {
            var item = items[i];
            suggest += '<div onmouseover="suggestOver(this);" onmousedown="suggestBoxClick(\''+elemId+'\', this)">' + item.firstChild.nodeValue + '</div>'
            currentSuggestBox.innerHTML = suggest;
        }
    } else {
        hideSuggestBox(divResultId);
    }    
    if (currentSuggestBox) {
        currentSuggestBox.style.visibility = "visible";
        var myPos = findPos(document.getElementById(elemId));
        currentSuggestBox.style.top = myPos[1] + "px";
        alltagOut();
    }
}

function suggestBoxClick(elemId, selectedText){
    if (elemId != null){
        var txtbox = document.getElementById(elemId);
        txtbox.value = trim(selectedText.innerHTML).replace(/&amp;/g, '&');
        //hideSuggestBox(selectedText.parentNode.id);
    }else{
        setTimeout(function(){hideSuggestBox(selectedText);}, 100);
    }
}

function hideSuggestBox(divResultId){
    
    //setTimeout(function(){
        var box = document.getElementById(divResultId);
        currentSuggestBox = null;
        if (box) {
            if (currentSelectedSuggestText) 
                suggestOut(currentSelectedSuggestText);
            box.style.visibility = "hidden";
        }
    //}, 100);
    
}

function suggestOver(div) {
    if (currentSelectedSuggestText) suggestOut(currentSelectedSuggestText);
    currentSelectedSuggestText = div;
    div.className = "suggestOver";    
}

function suggestOut(div) {
    div.className = "";
    currentSelectedSuggestText = null;
}