var hide_timeout = 1000;
var highlight = -1;
var listboxContent = "";
var currentFocus = null;
var isAbleToSubmit = true;
var clearf;
var subclearf;
var subelemid;
var subitemclearf;
var isIE4;

// this function should be the only function submitting to the server
function doSubmit(aform) {
  if(isAbleToSubmit) {
    isAbleToSubmit = false;
    aform.submit();
  } else {
   alert('unable to submit');
  }
}

function enableSubmit() {
  isAbleToSubmit = true;
}

function disableSubmit() {
  isAbleToSubmit = false;
}

function hide_all_flyouts() {
    for(i = 1; i <= menuCount; i++) {
        try {
//        f = eval('f'+i);
        f = document.getElementById('f'+i);
        if (f) {
            f.style.visibility = 'hidden';
        }
        } catch (e) {
        }
    }
    clearInterval(clearf);
}

function flyout_elem_mon(elem) {
    clearInterval(clearf);
    if(!isIE4) { 
        elem.className = "flyout_highlight";
    }
}

function flyout_elem_moff(elem) {

    if(!isIE4) { 
        elem.className = "flyout_unhighlight";
    }

    clearf = setInterval("hide_all_flyouts();", hide_timeout);
}

function flydown_elem_mon(elem) {
    clearInterval(clearf);
    if(!isIE4) { 
        elem.className = "flydown_highlight";
    }
}

function flydown_elem_moff(elem) {
    if(!isIE4) { 
        elem.className = "flydown_unhighlight";
    }
    clearf = setInterval("hide_all_flyouts();", hide_timeout);
}

function elem_highlight(elem) {
    elem_highlight(elem, null);
}

function elem_highlight(elem, classname) {
    clearInterval(clearf);
    hide_all_flyouts();
    if(!isIE4) {
        if (classname != null) {
            elem.className = classname;
        }
    }
}

function elem_unhighlight(elem) {
    elem_unhighlight(elem, null);
}

function elem_unhighlight(elem, classname) {
    if(!isIE4) { 
        if (classname != null) {
            elem.className = classname;
        }
    }
    f = document.getElementById('f' + elem.id.substr(1));
    if (f) {
        subclearf = setInterval("hide_submenu(\"" + f.id + "\");", hide_timeout);
    }
    clearf = setInterval("hide_all_flyouts();", hide_timeout);
}

function elem_out(elem, classname) {
    return elem_out(elem, classname, null);
}

function elem_out(elem, classname, toffset) {
    clearInterval(subclearf);
    elem_highlight(elem, classname);
//    f = eval('f' + elem.id.substr(1));
    f = document.getElementById('f' + elem.id.substr(1));
    if (f) {
        f.style.visibility = 'visible';
//        f.style.posLeft = elem.offsetParent.offsetWidth + 1;
//        f.style.posTop = elem.offsetParent.offsetTop + elem.offsetTop+80;
        f.style.posLeft = elem.offsetLeft + elem.offsetParent.offsetLeft + elem.offsetWidth;
        if (toffset != null) {
            f.style.posTop = elem.offsetTop + toffset;
        } else {
            f.style.posTop = elem.offsetTop;
        }
        //Set Left and Top as well?? For Mozilla bug
        f.style.left = elem.offsetLeft + elem.offsetParent.offsetLeft + elem.offsetWidth;
        if (toffset != null) {
            f.style.top = elem.offsetTop + toffset;
        } else {
            f.style.top = elem.offsetTop;
        }
    }    
}

function elem_off(elem) {
    clearf = setInterval("hide_all_flyouts();", hide_timeout);
}

function elem_down(elem, classname) {
    return elem_down(elem, classname, null);
}

function elem_down(elem, classname, loffset) {
    clearInterval(clearf);
    clearInterval(subclearf);
	hide_all_flyouts();
    elem_highlight(elem, classname);
//    f = eval('f' + elem.id.substr(1));
    f = document.getElementById('f' + elem.id.substr(1));
    if (f) {
        f.style.visibility = 'visible';
        if (loffset != null) {
            f.style.posLeft = elem.offsetLeft + loffset;
        } else {
            f.style.posLeft = elem.offsetLeft;
        }
        //Set Left also for Mozilla bug?
        if (loffset != null) {
            f.style.left = elem.offsetLeft + loffset;
        } else {
            f.style.left = elem.offsetLeft;
        }
    }    
}

function elem_setclass(elem, classname) {
    clearInterval(clearf);
    clearInterval(subclearf);
    if(!isIE4) { 
        elem.className = classname;
    }
}

function sub_elem_out(elem, classname) {
    return sub_elem_out(elem, classname, null);
}

function sub_elem_out(elem, classname, toffset) {
    sub_elem_highlight(elem, classname);
//    f = eval('f' + elem.id.substr(1));
    f = document.getElementById('f' + elem.id.substr(1));
//    parelem = eval('f' + elem.id.substr(1,elem.id.lastIndexOf('s')-1));
    parelem = document.getElementById('f' + elem.id.substr(1,elem.id.lastIndexOf('s')-1));
    if (f) {
        f.style.visibility = 'visible';
//        parent_offset = 0;
//        if (parelem) {
//            parent_offset = parelem.style.posLeft;
//        }
//        f.style.posLeft = parelem.offsetLeft + elem.offsetWidth + elem.offsetLeft;
//        f.style.posLeft = elem.style.posLeft + elem.offsetLeft + elem.offsetWidth + elem.offsetParent.offsetLeft + elem.offsetParent.offsetWidth;
//        f.style.posLeft = parelem.style.posLeft + elem.offsetWidth;
//        f.style.posTop = elem.offsetTop + elem.offsetHeight + 20;
//        f.style.posTop = parelem.style.posTop + elem.offsetTop;
        f.style.posLeft = elem.offsetWidth;
        if (toffset != null) {
            f.style.posTop = elem.offsetTop + toffset;
        } else {
            f.style.posTop = elem.offsetTop;
        }
        //Set Left and Top also for Mozilla
        f.style.left = elem.offsetWidth;
        if (toffset != null) {
            f.style.top = elem.offsetTop + toffset;
        } else {
            f.style.top = elem.offsetTop;
        }
    }    
}

function sub_elem_down(elem, classname) {
    sub_elem_down(elem, classname, null);
}

function sub_elem_down(elem, classname, loffset) {
    sub_elem_highlight(elem, classname);
//    f = eval('f' + elem.id.substr(1));
    f = document.getElementById('f' + elem.id.substr(1));
    if (f) {
        f.style.visibility = 'visible';
        if (loffset != null) {
            f.style.posLeft = elem.offsetLeft + loffset;
        } else {
            f.style.posLeft = elem.offsetLeft;
        }
        //Set Left as well for Mozilla
        if (loffset != null) {
            f.style.left = elem.offsetLeft + loffset;
        } else {
            f.style.left = elem.offsetLeft;
        }
    }
}

function sub_elem_off(elem, classname) {
    if(!isIE4) { 
        elem.className = classname;
    }
//    parelem = eval('f' + elem.id.substr(1));
    parelem = document.getElementById('f' + elem.id.substr(1));
    subelemid = parelem.id;
    subclearf = setInterval("hide_submenu(\"" + parelem.id + "\");", hide_timeout);
//    subitemclearf = setInterval("hide_childmenu(\"" + parelem.id + "\");", hide_timeout);
}

function sub_elem_highlight(elem) {
    sub_elem_highlight(elem, null);
}

function sub_elem_highlight(elem, classname) {
    clearInterval(subclearf);
    clearInterval(clearf);
    if (subelemid != null) {
        sub_str = subelemid.substr(1);
        elem_str = elem.id.substr(1);
        if (elem_str.substr(0,sub_str.length) != sub_str && sub_str != elem_str) {
            hide_childmenu('f' + sub_str);
        }
/*        if (sub_str.substr(0,elem_str.length) == elem_str) {
            clearInterval(subitemclearf);
        } else if (sub_str == elem_str) {
            clearInterval(subitemclearf);
        } */
    }
    if(!isIE4) { 
        if (classname != null) {
            elem.className = classname;
        }
    }
}

function sub_elem_unhighlight(elem) {
    sub_elem_unhighlight(elem, null);
}

function sub_elem_unhighlight(elem, classname) {
    if(!isIE4) {
        if (classname != null) {
            elem.className = classname;
        }
    }
    parelem = document.getElementById('f' + elem.id.substr(1,elem.id.lastIndexOf('s')-1));
    if (parelem) {
        subclearf = setInterval("hide_submenu(\"" + parelem.id + "\");", hide_timeout);
    }
    clearInterval(subitemclearf);
}

function hide_submenu(str) {
    clearInterval(subclearf);
//    f = eval(str);
    f = document.getElementById(str);
    if(f) {
        f.style.visibility = 'hidden';
    }
    if (str.lastIndexOf('s') > 0) {
        str = str.substr(0, str.lastIndexOf('s'));
        hide_submenu(str);
    }
}

function hide_childmenu(str) {
    clearInterval(subitemclearf);
    subelemid = null;
//    alert('clear child ' + str);
//    f = eval(str);
    f = document.getElementById(str);
    if(f) {
        f.style.visibility = 'hidden';
    }
}

function openWindow(urlName, title, features, force)
{
    window.open(urlName, title, features, force);
}

function doCancel() {
  var methodVar = document.forms[0].elements['method'];
  methodVar.value='list';
  doSubmit(document.forms[0]);
}

function elem_setimg(elemname, imgname) {
    f = document.getElementById(elemname);
    if (f) {
        f.src = "images/" + imgname;
    }
}

function getElementByName(inform, inname) {
    for (var i = 0; i < inform.elements.length; i++) {
        if (inform.elements[i].name == inname) {
            return inform.elements[i];
        }
    }
}
