﻿// --- init fn, global vars
var hintBuff
var ref
var refSrc

window.onload = initScript

function initScript() {
    var x = getElementsByClassName('inMenuBarItem')
    for (var i = 0; i < x.length; i++) {
            x[i].onmouseover = over;
            x[i].onmouseout = out;
        }
}

function over() {
    if (this.src == undefined) { ref = this.getElementsByTagName("img")[0] }
    else { ref = this }
    refSrc = ref.src
    ref.src = this.getAttribute("srcOver");

    hintBuff = document.getElementById(this.getAttribute("HintTgt")).innerHTML;
    document.getElementById(this.getAttribute("HintTgt")).innerHTML = this.getAttribute("Hint");
}

function out() {
    ref.src = refSrc;
    document.getElementById(this.getAttribute("HintTgt")).innerHTML = hintBuff;
}

function showPanel(inObj) {
    document.getElementById(inObj).style.display = "block"
}

function hidePanel(inObj) {
    document.getElementById(inObj).style.display = "none"
}

function subTgt(f, newtarget) {
    f.target = newtarget;
}

/* fn */
function getElementsByClassName(classname, node) {
    if (!node) node = document.getElementsByTagName("body")[0];
    var a = [];
    var re = new RegExp('\\b' + classname + '\\b');
    var els = node.getElementsByTagName("*");
    for (var i = 0, j = els.length; i < j; i++)
        if (re.test(els[i].className)) a.push(els[i]);
    return a;
}

/* trash */
function click() {
    var leafname = this.src.split('\\').pop().split('/').pop();
    leafname = leafname.split('.');
    alert(leafname[0] + 'Up.' + leafname[1]);
}

// based in part on: "Nested Side Bar Menu" By Dynamic Drive: http://www.dynamicdrive.com/style/
var menuids=["MainMenu"] //Enter id(s) of each Side Bar Menu's main UL, separated by commas

function initsidebarmenu(){
	for (var i=0; i<menuids.length; i++){
	var ultags = document.getElementById(menuids[i]).getElementsByTagName("ul")

	    for (var t=0; t<ultags.length; t++){
			if (ultags[t].parentNode.parentNode.id == menuids[i]) {
				ultags[t].style.left = ultags[t].parentNode.offsetWidth + "px"
			}
			else {
			    ultags[t].style.left = ultags[t-1].getElementsByTagName("a")[0].offsetWidth + tmpPadd(ultags[t-1].parentNode) + "px"
	    	}
		    ultags[t].parentNode.onmouseover = onLi
	    	ultags[t].parentNode.onmouseout = offLi
	    }
	    	
		for (var t=ultags.length-1; t>-1; t--){
			ultags[t].style.visibility = "visible"
			ultags[t].style.display = "none"
		}
	}
}

function onLi(){ this.getElementsByTagName("ul")[0].style.display="block" }
function offLi(){ this.getElementsByTagName("ul")[0].style.display = "none" }

function tmpPadd(inObj){
	return parseInt(document.deepCss(inObj,'padding-left').replace(/px/g,"")) + parseInt(document.deepCss(inObj,'padding-right').replace(/px/g,""))
}

// --- non-inline css getter
document.deepCss= function(who, css){
    var val= '', str= '';
    if(!who || who.style== undefined) return '';
    if(/\-/.test(css)){
        str= css.replace(/\-[a-z]/g, function(w){
            return w.charAt(1).toUpperCase() + w.substring(2);
        })
    }
    val= who.style[str];
    if(!val){
        if(who.currentStyle) val= who.currentStyle[str];
        else{
            var dv= document.defaultView || window;
            if(dv && dv.getComputedStyle){
                str= str.dash(true);
                val= dv.getComputedStyle(who,'').getPropertyValue(css);
            }
        }
    }
    return (val)? val: '';
}

// --- dash removal fn
String.prototype.dash = function(boo){
    var s= this;
    if(/^[A-Z]+$/.test(s) || /\-/.test(s)) s = s.toLowerCase();
    if(boo=== true ){
        if(/[a-z][A-Z]/.test(s)){
            s= s.replace(/[A-Z]/g, function(w){
                return "-" + w.toLowerCase();
            })
        }
    }
    else if(/\-/.test(s)){
        s= s.replace(/\-[a-z]/g, function(w){
            return w.charAt(1).toUpperCase() + w.substring(2);
        })
    }
    return s;
}

 
/* --- script init --- */
if (window.addEventListener)
	window.addEventListener("load", initsidebarmenu, false)
else if (window.attachEvent)
	window.attachEvent("onload", initsidebarmenu)