//set events
document.onkeydown = handleKeyDown;

var openSelectImageId = ""; //image id of last opened select
var lastOpenedSelect; //last opened select element
var lastSelectedChoiceElement = null; //selected choice
var lastMouseOverElement = null; //last mouseover choice

var lastInfoDiv = null;

//select
function selectMouseOver(element, name) 
{
    if (lastMouseOverElement!=null) 
        lastMouseOverElement.style.backgroundColor = '#ffffff';

    //deselect
    if(document.getElementById("nodeid" + name + document.getElementById("value" + name).value))
        document.getElementById("nodeid" + name + document.getElementById("value" + name).value).style.backgroundColor = '#ffffff';
    lastMouseOverElement = element;
    
    //select
    element.style.cursor = 'pointer';
    element.style.backgroundColor = '#f0ede8';
}

//select choice
function selectChoice(element, name, value, textbefore, onchange) 
{
    lastSelectedChoiceElement = element;

    var prevvalue = document.getElementById("title" + name).value;

    if (textbefore == '' && element)
        document.getElementById("title" + name).value = element.title;
    else 
    {
        if (element)
            document.getElementById("title" + name).value = textbefore + element.title;
    }
        
    document.getElementById("value" + name).value = value;

    //onchange event
    if (element) {
        if (element.title != prevvalue && document.getElementById("onchange" + name).value != "" && onchange == "true") {
            eval(document.getElementById("onchange" + name).value);
        }
    }
}

//select
function showSelectChoises(name) 
{
    var display = document.getElementById("div" + name).style.display;

    if (display == "none") 
    {
        document.getElementById("div" + name).style.display = "block";
        document.getElementById("selectimg" + name).src = rooturl + "images/buttons/select1.gif";
       
        lastOpenedSelect = document.getElementById("div" + name);

        //select current
        if (document.getElementById("value" + name).value) 
        {
            if (document.getElementById("nodeid" + name + document.getElementById("value" + name).value)) {
                document.getElementById("nodeid" + name + document.getElementById("value" + name).value).style.backgroundColor = '#f0ede8';
                lastMouseOverElement = document.getElementById("nodeid" + name + document.getElementById("value" + name));
            }
        }
    }
    else if (display == "block") 
    {
        document.getElementById("div" + name).style.display = "none";
        document.getElementById("selectimg" + name).src = rooturl + "images/buttons/select1.gif";

        lastOpenedSelect = null;
    }
}

//handle body click
function handleClick(event) 
{
    var target = null;

    if (event.target) {
        target = event.target;
    }
    else {
        if (!e) {
            var e = window.event;
        }
        if (e.target) {
            target = e.target;
        }
        else if (e.srcElement) {
            target = e.srcElement;
        }
        if (target.nodeType == 3) {
            target = target.parentNode;
        }
    }
    var tname = target.id;

    //if click on image of select / not
    if (tname.substring(0, 9) == "selectimg" || (tname.substring(0, 5) == "title" && tname.length>5)) 
    {
        if (tname.substring(0, 5) == "title") 
        {
            if($("selectimg" + tname.substring(5, tname.length)))
                tname = "selectimg" + tname.substring(5, tname.length);
        }

        //hide
        if (openSelectImageId != tname) 
        {
            if (openSelectImageId != "") 
            {
                document.getElementById("div" + openSelectImageId.substring(9, openSelectImageId.length)).style.display = "none";

                //hide last mouseover
                if (lastMouseOverElement!=null) 
                {
                    lastMouseOverElement.style.backgroundColor = '#ffffff';
                    lastMouseOverElement = null;
                }
            }
        }
        openSelectImageId = tname;
    }
    else 
    {
        //close div
        if (lastOpenedSelect && tname.substring(0, 3) != "div") 
        {
            lastOpenedSelect.style.display = "none";
            document.getElementById("selectimg" + lastOpenedSelect.id.substring(3, lastOpenedSelect.id.length)).src = rooturl + "images/buttons/select1.gif";           

            //hide last mouseover
            if (lastMouseOverElement!=null) 
            {
                lastMouseOverElement.style.backgroundColor = '#ffffff';
                lastMouseOverElement = null;
            }
        }
        
        //close info div
        if (lastInfoDiv != null && tname.substring(0, 7) != "infodiv") 
        {
            lastInfoDiv.style.display = "none";
        }
    }
}

//handle body key down
function handleKeyDown(e) 
{
    var keyIndex=0;
    if (navigator.appName == "Netscape")
        keyIndex = e.which;
    else
        keyIndex = window.event.keyCode;
        

    //if one select open        
    if(openSelectImageId != "")
    {
        var name = openSelectImageId.substring(9, openSelectImageId.length);
        if (document.getElementById("div" + name).style.display != "none") 
        {
            var currentselected = document.getElementById("value" + name).value;
            if (lastMouseOverElement!=null) 
                currentselected = lastMouseOverElement.value;

            //array
            var allValuesArray = new Array();
            allValuesArray = document.getElementById("allvalues" + name).value.split("#");
            var allTitlesArray = new Array();
            allTitlesArray = document.getElementById("alltitles" + name).value.split("#");
            var selectedIndex = 0;

            //find current index
            for (i = 0; i < allValuesArray.length; i++) 
            {
                if (allValuesArray[i] == currentselected)
                    selectedIndex = i;
            }
            
            //up
            if (keyIndex == 38) 
            {
                if (selectedIndex > 0) 
                {
                    //deselect
                    document.getElementById("nodeid" + name + document.getElementById("value" + name).value).style.backgroundColor = '#ffffff';

                    //select
                    document.getElementById("nodeid" + name + allValuesArray[selectedIndex - 1]).style.cursor = 'pointer';
                    document.getElementById("nodeid" + name + allValuesArray[selectedIndex - 1]).style.backgroundColor = '#f0ede8';
                    lastSelectedChoiceElement = document.getElementById("nodeid" + name + allValuesArray[selectedIndex - 1]);
                    document.getElementById("title" + name).value = allTitlesArray[selectedIndex - 1];
                    document.getElementById("value" + name).value = allValuesArray[selectedIndex - 1];

                    //scroll
                    if (selectedIndex < allValuesArray.length - 11) 
                        document.getElementById("divnodes" + name).scrollTop -= document.getElementById("nodeid" + name + allValuesArray[selectedIndex - 1]).scrollHeight;

                    //set last
                    if (lastMouseOverElement!=null)
                        lastMouseOverElement.style.backgroundColor = '#ffffff';
                        
                    lastMouseOverElement = document.getElementById("nodeid" + name + allValuesArray[selectedIndex - 1]);
                }
                return false;
            }
            
            //down
            if (keyIndex == 40) 
            {
                if (selectedIndex < allValuesArray.length-1) 
                {
                    //deselect
                    document.getElementById("nodeid" + name + document.getElementById("value" + name).value).style.backgroundColor = '#ffffff';

                    //select
                    document.getElementById("nodeid" + name + allValuesArray[selectedIndex + 1]).style.cursor = 'pointer';
                    document.getElementById("nodeid" + name + allValuesArray[selectedIndex + 1]).style.backgroundColor = '#f0ede8';
                    lastSelectedChoiceElement = document.getElementById("nodeid" + name + allValuesArray[selectedIndex + 1]);
                    document.getElementById("title" + name).value = allTitlesArray[selectedIndex + 1];
                    document.getElementById("value" + name).value = allValuesArray[selectedIndex + 1];

                    //scroll
                    if (selectedIndex > 11) 
                        document.getElementById("divnodes" + name).scrollTop += document.getElementById("nodeid" + name + allValuesArray[selectedIndex + 1]).scrollHeight;

                    //set last
                    if (lastMouseOverElement!=null) 
                        lastMouseOverElement.style.backgroundColor = '#ffffff';
                    lastMouseOverElement = document.getElementById("nodeid" + name + allValuesArray[selectedIndex + 1]);
                }
                
                return false;
            }

            //enter
            if (keyIndex == 13) 
            {
                //close
                document.getElementById("div" + name).style.display = "none";
                document.getElementById("selectimg" + name).src = rooturl + "images/buttons/select1.gif";
            
                lastOpenedSelect = null;

                //onchange event
                if (document.getElementById("onchange" + name).value != "") 
                {
                    eval(document.getElementById("onchange" + name).value);
                }
                
                return false;
            }    
        }
    }
}


