//--------------------------------------------------------------------------------------------------
// All material contained within this document and associated downloaded pages 
// is the property of 4thorder(TM) unless otherwise noted
// Copyright © 2005.  All rights reserved.
//
// Author: Michael Falatine || Authors email: 4thorder@4thorder.us
//
// USAGE: You may use this script for commercial or personal use, however, the copyright is retained-
// by 4thorder (TM).
//
// For other free Scripts visit: http://www.4thorder.us/Scripts/
//---------------------------------------------------------------------------------------------------

//-----------------begin insertAdjacent code-----------------------------------------------------
// This portion written by Thor Larholm thor@jscript.dk
// Allows for insertAdjacentHTML(), insertAdjacentText() and insertAdjacentElement()
// functionality in Netscape / Mozilla /Opera
if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentElement){
	HTMLElement.prototype.insertAdjacentElement = function(where,parsedNode)
	{
		switch (where){
		case 'beforeBegin':
			this.parentNode.insertBefore(parsedNode,this)
			break;
		case 'afterBegin':
			this.insertBefore(parsedNode,this.firstChild);
			break;
		case 'beforeEnd':
			this.appendChild(parsedNode);
			break;
		case 'afterEnd':
			if (this.nextSibling) this.parentNode.insertBefore(parsedNode,this.nextSibling);
			else this.parentNode.appendChild(parsedNode);
			break;
		}
	}

	HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr)
	{
		var r = this.ownerDocument.createRange();
		r.setStartBefore(this);
		var parsedHTML = r.createContextualFragment(htmlStr);
		this.insertAdjacentElement(where,parsedHTML)
	}


	HTMLElement.prototype.insertAdjacentText = function(where,txtStr)
	{
		var parsedText = document.createTextNode(txtStr)
		this.insertAdjacentElement(where,parsedText)
	}
}
//----------------------end insertAdjacent code-------------------------------------------------------


// :::::::::::::::::::::::::::
// :::: Global Functions :::
// :::::::::::::::::::::::::::
window.onload=InitializePage;

function InitializePage() {
  // Set Transparency level
  if(navigator.appName == 'Microsoft Internet Explorer') {
    document.getElementById('menuSystem').style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity="+TValue+")";
  } else {
    document.getElementById('menuSystem').style.MozOpacity=1;
	  TValue=parseFloat(TValue/100-.001); // .001 is fix for moz opacity/image bug
	  document.getElementById('menuSystem').style.MozOpacity=TValue;
	}
	
	mainTABLEElement=document.getElementById("mainTable");
  TABLECol=mainTABLEElement.getElementsByTagName("TABLE");
  if( TABLECol!=null ) {
    for( l=0; l<TABLECol.length; l++ ) {
  		THCol=TABLECol.item(l).getElementsByTagName("TH");
  	  TDCol=TABLECol.item(l).getElementsByTagName("TD");
    
      // TH elementen
      if( THCol.length > 0 ) {
   		  THCol.item(0).style.cursor="pointer";
        THCol.item(0).setAttribute('id',l);
  	    AElement=THCol.item(0).getElementsByTagName("A");
  	    if( AElement.length > 0 ) {
    	    strText=AElement.item(0).innerHTML;
    	    strLink=AElement.item(0).getAttribute('href');
    	    THCol.item(0).removeChild(AElement.item(0));
    	    // tekst toevoegen
    	    THCol.item(0).insertAdjacentText("afterBegin", strText);
    	    // onclick toevoegen
    	    THCol.item(0).setAttribute('onclick', "goTo('"+strLink+"')");
    	    if(navigator.appName == 'Microsoft Internet Explorer') {
    	      THCol.item(0).onclick=new Function("goTo('"+strLink+"');");
    	    } else {
    	      THCol.item(0).setAttribute('onclick', "goTo('"+strLink+"')");
    	    }
    	  }
        if( TDCol.length > 0 ) {
      		if( handlerTYPE=='mouseover' ) {
      		  THCol.item(0).onmouseover=eHandler;
      			document.getElementsByTagName("BODY").item(0).onclick=hideALL;
      	  } else {
      	    if( handlerTYPE=='click' ){
      			  document.getElementsByTagName("BODY").item(0).onclick=hideALL;
      			}
      		}
    		  if(ImagePlacement=='before') {
    			  var str='<IMG border="0" src="images\/'+imagePLUS+'" alt="Expand ALL">&nbsp;';
    			  THCol.item(0).insertAdjacentHTML("afterBegin", str);
    			} else if( ImagePlacement=='after' ) {
    			  var str='&nbsp;<IMG border="0" src="images\/'+imagePLUS+'" alt="Expand ALL">';
    			  THCol.item(0).insertAdjacentHTML("beforeEnd", str);
    			}
    		} else {
  			  var str='<IMG border="0" src="images\/'+imageOUT+'" alt="">&nbsp;';
  			  THCol.item(0).insertAdjacentHTML("afterBegin", str);
    			// events toevoegen
    	    THCol.item(0).onmouseover=eHandlerTHs;
    	    THCol.item(0).onmouseout=eHandlerTHh;
    		}
    	}

    
  		// TD elementen	
  	  for( m=0; m<TDCol.length; m++ ) {
  	    TDCol.item(m).style.verticalAlign='top';
  	    // link + tekst opslaan daarna verwijderen
  	    AElement=TDCol.item(m).getElementsByTagName("A");
  	    strText=AElement.item(0).innerHTML;
  	    strLink=AElement.item(0).getAttribute('href');
  	    TDCol.item(m).removeChild(AElement.item(0));
  	    // tekst toevoegen
  	    TDCol.item(m).insertAdjacentText("afterBegin", strText);
  	    
  	    // img toevoegen
  			var str='<img src="images\/'+imageOUT+'" alt="" style="border: 0px; margin-left: 10px;" />&nbsp;';
  			TDCol.item(m).insertAdjacentHTML("afterBegin", str);
  			
  			// events toevoegen
  	    TDCol.item(m).onmouseover=eHandlerTDs;
  	    TDCol.item(m).onmouseout=eHandlerTDh;
  	    
  	    // class + onclick toevoegen
  	    if(navigator.appName == 'Microsoft Internet Explorer') {
  	      TDCol.item(m).setAttribute('className','def');
  	      TDCol.item(m).onclick=new Function("goTo('"+strLink+"');");
  	    } else {
  	      TDCol.item(m).setAttribute('class','def');
  	      TDCol.item(m).setAttribute('onclick', "goTo('"+strLink+"')");
  	    }
  	  }
  	  
  	}
  }
	 
  hideALL();
}

function hideALL() {
  mainTABLEElement=document.getElementById("mainTable");
  TABLECol=mainTABLEElement.getElementsByTagName("TABLE");
  for( a=0; a<TABLECol.length; a++ ) {
	  THCol=TABLECol.item(a).getElementsByTagName("TH");
	  TDCol=TABLECol.item(a).getElementsByTagName("TD");
	  if( THCol.length > 0 && TDCol.length > 0 ) {
  	  IMGCol=THCol.item(0).getElementsByTagName("IMG");
      if( IMGCol.item(0)!=null ) { 
        IMGCol.item(0).setAttribute('src','images/'+imagePLUS);
      }
  	
  	  for( b=0; b<THCol.length; b++ ) {
  	    THCol.item(b).setAttribute("ECState",0);
  	  }
  		
  	  TRCol=TABLECol.item(a).getElementsByTagName("TR");
  	  for (c=1; c<TRCol.length; c++) {
  		  TRCol.item(c).style.display='none';
  		}
  	}
  }
}

function showSingle() {
mainTABLEElement=document.getElementById("mainTable");
TABLECol=mainTABLEElement.getElementsByTagName("TABLE");
if (TABLECol!=null)
	{
	for (z=0; z<TABLECol.length; z++)
		{
		TRCol=TABLECol.item(z).getElementsByTagName("TR");
		THCol=TABLECol.item(z).getElementsByTagName("TH");
		IMGCol=TABLECol.item(z).getElementsByTagName("IMG");

		// Grab ECState and expand or collapse branch
		State=THCol.item(0).getAttribute("ECState");
		if(State==0)
			{
			// ECState is COLLAPSED (+) (0)
			if (IMGCol.item(0)!=null){IMGCol.item(0).setAttribute('src','images/'+imagePLUS);}
			for (l=1; l<TRCol.length;l++)
				{
				TRCol.item(l).style.display='none';
				}
			}
		else	 if(State==1)
			{
			// ECState is EXPANDED (-) (1)
			if (IMGCol.item(0)!=null){IMGCol.item(0).setAttribute('src','images/'+imageMINUS);}
				for (m=0; m<TRCol.length; m++)
				{// Browser compatibility code
				if(navigator.appName == 'Microsoft Internet Explorer')
					{
					if(navigator.userAgent.indexOf('Opera') != -1)
						{TRCol.item(m).style.display='table-row';}
					else	{TRCol.item(m).style.display='block'; }
					}
				else	{TRCol.item(m).style.display='table-row';}
				}
			}
		}
	}
}

// ::::::::::::::::::::::::::
// :::: Event Handlers ::::
// ::::::::::::::::::::::::::
var targ;
var previousTargID

function eHandler(e)
{
// Browser compatibility code
if (!e) var e = window.event;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3) // defeat Safari bug
	targ=targ.parentNode;

THElement=findTH(targ);

if(THElement!=null)
	{
	if(THElement.id!=previousTargID && oneBranch=='yes' )
		{hideALL();} else {
	if(handlerTYPE=='mouseover')
	{hideALL();}}
	previousTargID=THElement.id
	// Toggle ECState
	State=THElement.getAttribute("ECState");
		if(State==0){THElement.setAttribute("ECState",1);}
		else{THElement.setAttribute("ECState",0);}
	showSingle();
	}
else{hideALL();}
}

function findTH(t)
{
  if (t.tagName == "TH")
  	{return t;}
  else if
  	(t.tagName == "BODY")
  	{return null;}
  else
  {return findTH(t.parentNode);}
}

function findTD(t)
{
  if (t.tagName == "TD")
  	{return t;}
  else if
  	(t.tagName == "BODY")
  	{return null;}
  else
  {return findTH(t.parentNode);}
}

function eHandlerTDs(e) {
  // Browser compatibility code
if (!e) var e = window.event;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3) // defeat Safari bug
	targ=targ.parentNode;

TDElement=findTD(targ);

  if(TDElement!=null) {
    // change class.name
    if(navigator.appName == 'Microsoft Internet Explorer') {
      TDElement.setAttribute('className','hov');
    } else {
      TDElement.setAttribute('class','hov');
    }
    
    // change img.src
    IMG=TDElement.getElementsByTagName("IMG");
    IMG.item(0).setAttribute('src','images/'+imageOVER);
  }
}

function eHandlerTDh(e) {
  // Browser compatibility code
if (!e) var e = window.event;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3) // defeat Safari bug
	targ=targ.parentNode;

TDElement=findTD(targ);

  if(TDElement!=null) {
    // change class.name
    if(navigator.appName == 'Microsoft Internet Explorer') {
      TDElement.setAttribute('className','def');
    } else {
      TDElement.setAttribute('class','def');
    }
    
    // change img.src
    IMG=TDElement.getElementsByTagName("IMG");
    IMG.item(0).setAttribute('src','images/'+imageOUT);
  }
}

function eHandlerTHs(e) {
  // Browser compatibility code
if (!e) var e = window.event;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3) // defeat Safari bug
	targ=targ.parentNode;

THElement=findTH(targ);

  if(THElement!=null) {
    // change img.src
    IMG=THElement.getElementsByTagName("IMG");
    IMG.item(0).setAttribute('src','images/'+imageOVER);
  }
}

function eHandlerTHh(e) {
  // Browser compatibility code
if (!e) var e = window.event;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3) // defeat Safari bug
	targ=targ.parentNode;

THElement=findTH(targ);

  if(THElement!=null) {
    // change img.src
    IMG=THElement.getElementsByTagName("IMG");
    IMG.item(0).setAttribute('src','images/'+imageOUT);
  }
}

function goTo( strUrl ) {
  document.location=strUrl;
}
