var shortlistHandler=null;
var shortlistSrc=null;
var shortlistHighlight=0;
var shortlistData=null;
var highlightWhenSelected=false;
function shortlistConstruct(srcObj,replyHandler,highlight) {
    if (srcObj!=shortlistSrc || document.getElementById("shortlist")==null) {
        highlightWhenSelected=highlight;
        shortlistHandler=replyHandler;
        //if (shortlistSrc!=null) document.getElementById(shortlistSrc.id+"shortlist").style.display="none";
        closeShortlist();
        //removeTheNode("shortlist");
        shortlistSrc=srcObj;
        shortlistBox="<div class=\"shortlist\" id=\"shortlist\">Searching</div>";
        document.getElementById(srcObj.id+"shortlist").innerHTML=shortlistBox;
        //document.getElementById(srcObj.id+"shortlist").style.display="block";
        shortlistHighlight=0;
    }
}
function updateShortlist(reply) {
    if (highlightWhenSelected) setInputSelected(shortlistSrc,false);
    var op="";
    if (reply=="") {
        op="None found";
    }else{
        var options=reply.split("-optionsplit-");
        if (shortlistHighlight>=options.length) shortlistHighlight=options.length-1;
        shortlistData=[];
        for (var i=0;i<options.length;i++) {
            var theData=options[i].split("-datasplit-");
            shortlistData.push(theData[0]);
            op+="<div class=\"shortlist";
            if (i==shortlistHighlight) {
                op+="Highlight";
            }else{
                op+="Normal";
            }
            op+="\" onmouseover=\"shortlistHighlighter("+i+")\" onclick=\"selectShortlistOption("+i+")\" id=\"shortlist"+i+"\"><nobr>"+theData[1]+"</nobr></div>";
        }
    }
    document.getElementById("shortlist").innerHTML=op;
}
function shortlistSelect(step) {
    if (document.getElementById("shortlist"+shortlistHighlight)!=null) {
        document.getElementById("shortlist"+shortlistHighlight).className="shortlistNormal";
    }
    shortlistHighlight+=step;
    if (shortlistHighlight<0) shortlistHighlight=0;
    if (shortlistHighlight>=document.getElementById("shortlist").childNodes.length) shortlistHighlight=document.getElementById("shortlist").childNodes.length-1;
    if (document.getElementById("shortlist"+shortlistHighlight)!=null) {
        document.getElementById("shortlist"+shortlistHighlight).className="shortlistHighlight";
    }
}
function shortlistHighlighter(newoption) {
    if (newoption<0) newoption=0;
    if (newoption>=document.getElementById("shortlist").childNodes.length) newoption=document.getElementById("shortlist").childNodes.length-1;
    if (newoption!=shortlistHighlight) {
        if (document.getElementById("shortlist"+shortlistHighlight)!=null) {
            document.getElementById("shortlist"+shortlistHighlight).className="shortlistNormal";
        }
        shortlistHighlight=newoption;
        if (document.getElementById("shortlist"+shortlistHighlight)!=null) {
            document.getElementById("shortlist"+shortlistHighlight).className="shortlistHighlight";
        }
    }
}
function selectShortlistOption(newoption) {
    if (shortlistSrc!=null) {
        if (newoption==null) newoption=shortlistHighlight;
        //pasteOutput("*select*");
        if (highlightWhenSelected) {
            setInputSelected(shortlistSrc,true);
        }
        //alert(shortlistData[newoption]);
        shortlistHandler(shortlistData[newoption]);
        //document.getElementById(shortlistSrc.id+"shortlist").style.display="none";
        closeShortlist();
    }
}
function checkShortlistKeys(srcObj,e,handler,docUrl,highlight,content) {
        if (window.event) keycode=window.event.keyCode;
        else if (e) keycode=e.which;
    //pasteOutput("*"+keycode+"*");
        if (keycode==38 || keycode==40 || keycode==13 || keycode==27 || keycode==9 || keycode==11) {
            if (keycode==27) cancelShortlist();
            if (keycode==9 || keycode==11) closeShortlist();
            if (keycode==38) shortlistSelect(-1);
            if (keycode==40) shortlistSelect(+1);
            if (keycode==13) selectShortlistOption(shortlistHighlight);
        }else{
            shortlistConstruct(srcObj,handler,highlight);
            if (docUrl==null && content!=null) {
                updateShortlist(content);
            }else{
                sendRequest(docUrl,updateShortlist);
            }
        }
}
function cancelShortlist() {
    //pasteOutput("*cancel*");
    if (shortlistSrc!=null) {
        //document.body.innerHTML+="<br />Cancelling shortlist";
        if (highlightWhenSelected) {
            setInputSelected(shortlistSrc,false);
        }
        if (shortlistHandler!=null) shortlistHandler(null);
    }
    closeShortlist();
}
function closeShortlist() {
    if (shortlistSrc!=null) {
        pasteOutput("*close*");
        //if (document.getElementById(shortlistSrc.id+"shortlist")!=null) document.getElementById(shortlistSrc.id+"shortlist").style.display="none";
        shortlistHandler=null;
        shortlistSrc=null;
        shortlistHighlight=0;
        shortlistData=null;
        removeTheNode("shortlist");
    }
}

function setInputSelected(obj,selected) {
    cn="inputUnselected";
    if (selected) {
        cn="inputSelected";
    }
    //pasteOutput(cn);
    //alert(cn);
    obj.className=cn;
}
function pasteOutput(ip) {
    if (document.getElementById("test")!=null) {
        document.getElementById("test").value+=ip+"\n";
    }
}