/* GLOBALS */
/* Load Events */
function addLoadEvent(func) {
	var oldonload = window.onload;
		
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}
/* Get Elements by class: Source-javascript.about.com */
document.getElementsByClassName = function(cl) {
	var retnode = [];
	var myclass = new RegExp('\\b'+cl+'\\b');
	var elem = this.getElementsByTagName('*');
	for (var i = 0; i < elem.length; i++) {
		var classes = elem[i].className;
		if (myclass.test(classes)) retnode.push(elem[i]);
	}
	return retnode;
};
/* R & L TRIM */
function rltrim(sString){
	while (sString.substring(0,1) == ' ')
	{
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ')
	{
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}
/* Computed Styles (From external and head CSS rules */
function getComputedStyleForElement (element, cssPropertyName) {
    if (element) {
        if (window.getComputedStyle) {
            return window.getComputedStyle(element,'').getPropertyValue(cssPropertyName.replace(/([A-Z])/g,"-$1").toLowerCase());
        }
        else if (element.currentStyle) {
            return element.currentStyle[cssPropertyName];
        }
        else {
            return null;
        }
    }else{
        return null;
    }
}
/* Update CSS Class */
function updateClassList(ele,classout,classin){
	var classliststring = "";
	var classlist = ele.className.split(",")

	for(cname in classlist){
		if(rltrim(classlist[cname]) == rltrim(classout)){
			classlist[cname] = classin;
		}
		classliststring = classliststring + classlist[cname];
	}
	if(classliststring.indexOf(classin) == -1){classliststring = classliststring + classin;}
	ele.className = classliststring;
}
/* Toggle Visibility */
function toggleLayer(whichLayer)
{
	if (document.getElementById)
	{// FF
		var style2 = document.getElementById(whichLayer).style;
		style2.display = style2.display ? "":"none";
	}
	else if (document.all)
	{// MSIE
		var style2 = document.all[whichLayer].style;
		style2.display = style2.display ? "":"none";
	}
	else if (document.layers)
	{// NN4
		var style2 = document.layers[whichLayer].style;
		style2.display = style2.display ? "":"none";
	}
}
/* Toggle Visibility of element */
function toggleEle(whichEle, newstyle)
{
    switch(whichEle.style.display){
        case "block": whichEle.style.display = (whichEle.style.display != newstyle) ? newstyle:"none";break;
        case "none": whichEle.style.display = (whichEle.style.display != newstyle) ? newstyle:"block";break;
        default: whichEle.style.display = newstyle;
    }
}
/* Activate list links */
function initlistlinks(container)
{
	var linkarea = document.getElementById(container);
	if(linkarea){
		var linklists = linkarea.getElementsByTagName('li');
	
		for ( i = 0; i < linklists.length; i++ ) {
			var linktags = linklists[i].getElementsByTagName('a');
			
			if(linktags[0]){
				if(linktags[0].rel == "external"){
					linklists[i].onclick = visitlink;
				    linklists[0].target = 'New_Window';
			    }else{
    				linklists[i].onclick = visitlink;
				}
				linklists[i].style.cursor = 'pointer';
			}
		}
	}
};
/* Visit Link */
function visitlink(){
	var linktags = this.getElementsByTagName('a');
	if(linktags[0].rel == "external"){
		window.open(linktags[0].href, 'New_Window','menubar, toolbar, location, directories, status, scrollbars, resizable, dependent, width=800, height=600, left=0, top=0');
	}else if(linktags[0].href){
			location.href = linktags[0].href;
	}else if(linktags[0].onclick){
		linktags[0].onclick();
	}
}
/* Show or Hide detail */
function showhidedetail(){
    cleardetails(this);
    thisDD = getDDfromDT(this);
    toggleEle(this.firstChild, "none");
    toggleEle(thisDD,"block");
    thisDD.firstChild.style.margin = "-45px 0px 0px 0px";
    thisDD.firstChild.style.height = "0px";
}
function getDDfromDT(dt)
{
    x = dt.nextSibling;
    while (x.nodeType!=1 && x.tagName != "dd")
    {
        x = x.nextSibling;
    }
    return x;
}
function cleardetails(dt)
{
    dl = dt.parentNode;
    while (dl.nodeType!=1 && dl.tagName != "dl")
    {
        dl = dl.parentNode;
    }
    dds = dl.getElementsByTagName("dd");
    dts = dl.getElementsByTagName("dt");
    
    for(var j=0; j < dts.length; j++)
    {
        if(dts[j] != dt)
            dts[j].firstChild.style.display = "block";
    }
    for(var i=0; i < dds.length; i++)
    {
        if(dds[i] != getDDfromDT(dt))
            dds[i].style.display = "none";
    }
}
/* Load Events */
addLoadEvent(function(){initlistlinks("imagecolumn");});
addLoadEvent(function(){initlistlinks("functionlinks");});
addLoadEvent(function(){
setTimeout(function(){
    var intro = document.getElementById('flash');
    if(intro){
        intro.style.background="transparent";
        intro.style.width = 0;
        intro.style.height = 0;
    }
},1000)}
);
addLoadEvent(function(){
        var il = document.getElementById('imagecolumn');
        if(il){
            var dts = il.getElementsByTagName('dt');
            for ( i = 0; i < dts.length; i++ ) {
                var dd = getDDfromDT(dts[i]);
                if(dd.firstChild.firstChild.nodeValue.length > 0){
                dts[i].onclick = showhidedetail;
                dts[i].style.cursor = 'pointer';}
            }
        }
    }
);