var contextMenus = new Array(); // Used to track all menus.
var contextMenuParameters = new Array();

function _contextNewMenu(menu_name) {
    var index = contextMenus.length;
     contextMenus[index] = menu_name;
    contextMenuParameters[index] = - 1;
    return false;
}

function _contextFindMenuIndex(menu_name) {
    for (i = 0; i < this.contextMenus.length; i++) {
        if (contextMenus[i] == menu_name) {
            return (i);
        }
    }

    return (- 1);
}

function _contextShowMenu(menu_name,event) {
    _contextHideAllMenus();
    var index = _contextFindMenuIndex(menu_name); //see if menu exists first

    if (index == - 1) {
        _contextNewMenu(menu_name);               //create it if it doesn't exist
    }

    if(is.ie) {
        var menu = null;

        menu = document.all[menu_name];

        var rightedge = document.body.clientWidth - event.clientX;
        var bottomedge = document.body.clientHeight - event.clientY;

        if (rightedge < menu.offsetWidth)
            menu.style.left = document.body.scrollLeft + event.clientX - menu.offsetWidth;
        else
            menu.style.left = document.body.scrollLeft + event.clientX;

        if (bottomedge < menu.offsetHeight)
            menu.style.top = document.body.scrollTop + event.clientY - menu.offsetHeight;
        else
            menu.style.top = document.body.scrollTop + event.clientY;

        menu.style.visibility = "visible";

        event.cancelBubble = true; //trap the event
        event.returnValue = false;
    } else if (document.layers) {
        var menu = null;
        menu = document.layers[menu_name];
    } else if(is.ns) {/*if (!document.all && document.getElementById) { */
        var menu = null;
        menu = document.getElementById(menu_name)
        var rightedge = window.innerWidth - event.pageX;
        //alert("right edge = "+rightedge);

        var bottomedge = event.pageY;
        //alert("bottom edge = "+bottomedge);

//left = event.pageX ;
//right = innerWidth - event.pageX ;
//bottom = event.pageY ;

        if (rightedge < menu.offsetWidth)
            menu.style.left = document.body.scrollLeft + event.clientX - menu.offsetWidth;
        else
            menu.style.left = document.body.scrollLeft + event.clientX;

        if (bottomedge < menu.offsetHeight)
            menu.style.top = document.body.scrollTop + event.clientY - menu.offsetHeight;
        else
            menu.style.top = document.body.scrollTop + event.clientY;

//alert("left "+menu.style.left);
//alert("top "+menu.style.top);

        menu.style.visibility = "visible";

        event.cancelBubble = true; //trap the event
        event.returnValue = false;
        //alert("done");
    }

    return false;
}

function _contextTrapContext() {
    _contextHideAllMenus();

    event.cancelBubble = true; //trap the event
    event.returnValue = false;
    return false;
}

function _contextHideMenu(menu_name) {
    var ie5menu = document.all[menu_name];
    ie5menu.style.visibility = "hidden";
    return false;
}

function _contextHideAllMenus() {
    for (i = 0; i < this.contextMenus.length; i++) {
        //alert("context hide : " + i +  " , " + contextMenus[i]);
        _contextHideMenu(contextMenus[i]);
    }

    return false;
}

function _contextHighlight() {
    if (event.srcElement.className == "menuitems") {
        event.srcElement.style.backgroundColor = "skyblue";
    }
}

function _contextLowlight() {
    if (event.srcElement.className == "menuitems") {
        event.srcElement.style.backgroundColor = "";
    }
}

function context(menu_name, parameter, event) {
    _contextShowMenu(menu_name, event);
    var index = _contextFindMenuIndex(menu_name);
    contextMenuParameters[index] = parameter;
    var p1 = contextMenuParameters[index];
    return false;
}

function _contextGetParameter(menu_name) {
    var index = _contextFindMenuIndex(menu_name);
    var parameter = contextMenuParameters[index];
    return parameter;
}
function _contextHideSelect()
{
    if(is.ie) {
        var hidSel = document.all.tags("SELECT");//document.getElementById("SELECT");
    	//Hide any select objects on the page
    	for (i=0;i<hidSel.length;i++) {
            hidSel[i].style.visibility='hidden';
    //        hidSel[i].style.backgroundColor = "gray";
            hidSel[i].disabled = true;
        }
    }
}

function _contextShowSelect()
{
    if(is.ie) {
        var hidSel = document.all.tags("SELECT");//document.getElementById("SELECT");
    	//Display any selects on the page
    	for (i=0;i<hidSel.length;i++) {
            hidSel[i].style.visibility='visible';
    //        hidSel[i].style.backgroundColor = "white";
            hidSel[i].disabled = false;
        }
    }
}