// Menu(Collapse Cascade) mccPart3 (28-04-2005)
// by Vic Phillips http://www.vicsJavaScripts.org.uk

var mccZIndex=1;                          // The menu may need to be above othe page elements
var mccMarker='<img src="Marker1.gif" >'; // Marks Topics with Sub Menus, for No Marker use =null;
var mccMarkerDwn='&darr;';                // Marks Topics(Collapsed) with Sub Menus, for No Marker use =null;
var mccMarkerUp='&uarr;';                 // Marks Topics(Reveled) with Sub Menus, for No Marker use =null;
var mccSpeed=5;                           // Cascade Speed
var mccInc=3                              // Cascade Increment


// The Menu Main Topic properties
var mccMainSeparation=1;           // the separation between Main Topics
var mccMainOverBGColor='#CC9900';  // the MouseOver background color
var mccMainOverTxtColor='#FFFFFF'; // the MouseOver text color
var mccMainTxtOffSetX=10;          // text horizontal offset from the parent topic
var mccMainTxtOffSetY=0;           // text horizontal offset from the parent topic

// The Menu Sub Topic properties
var mccSubSeparation=1;
var mccSubOverBGColor='#FFFFFF';
var mccSubOverTxtColor='#6600FF';
var mccSubTxtOffSetX=5;
var mccSubTxtOffSetY=2;

// The Menu Ext Topic properties
var mccExtSeparation=1;
var mccExtOverBGColor='#FFFFFF';
var mccExtOverTxtColor='#6600FF';
var mccExtTxtOffSetX=0;
var mccExtTxtOffSetY=2;



// Functional Code

// No Need to Change

var mccAry=new Array(); // general purpose array
var mccMenuObj;         // menu object
var mccObj;             // collects first level topic objects
var mccTNu;             // Main Topics count or the array for associated Sub Topics
var mccSNu;             // Sub Topics count for each Main Topic or the array for associated Ext Topics
var mccTxtN;            // Text Node
var mccMCnt;            // The Main and Sub Topic groups will be given an incrementing number mccMCnt
var mccDelay=50;        // setTimeout delay
var mccMObj;            // the active menu object for cascade
var mccR1,mccR2;        // Cascade Locks

function mccInitialise(mcc){
 mccMenuObj=document.getElementById(mcc);
 mccMenuObj.style.zIndex=mccZIndex;
 mccObj=mccMenuObj.getElementsByTagName('DIV');
 mccObj[0].anchor=mccMenuObj.cloneNode(false);
 mccMenuObj.parentNode.insertBefore(mccObj[0].anchor,mccMenuObj);
 mccObj[0].anchor.style.visibility='hidden';
// mccMenuObj.style.position='absolute';
 mccMenuObj.style.top=mccTop(mccObj[0].anchor)+'px';
 mccMenuObj.style.left=mccLeft(mccObj[0].anchor)+'px';
 mccMenuObj.L1Close=null;
 mccMenuObj.L1Open=null;
 mccMenuObj.CkL1=null;
 mccMenuObj.L2Close=null;
 mccMenuObj.L2Open=null;
 mccMenuObj.CkL2=null;
 mccMCnt=0;
 for (mcc0=0;mcc0<mccObj.length;mcc0++){
  mccObj[mcc0].menu=mccMenuObj;
  mccObj[mcc0].style.position='relative';
  mccObj[mcc0].style.overflow='hidden';
  if (mccObj[mcc0].className.match('mccSubExtPanel')){
   mccObj[mcc0-1].mount=mccObj[mcc0];
   mccObj[mcc0].par=mccObj[mcc0-1];
 }
  else {
   mccObj[mcc0].prime='yes';
   mccObj[mcc0].onclick=function(){ mccClick(this); }
   mccObj[mcc0].onmouseover=function(){ mccMouseOver(this); }
  }
  if (mccObj[mcc0].className.match('mccMainTopic')){
   mccMCnt++;
   mccObj[mcc0].sep=mccMainSeparation;
   mccObj[mcc0].bgover=mccMainOverBGColor;
   mccObj[mcc0].txtover=mccMainOverTxtColor;
   mccObj[mcc0].txtosx=mccMainTxtOffSetX;
   mccObj[mcc0].txtosy=mccMainTxtOffSetY;
   mccObj[mcc0].sub=new Array();
   mccTNu=mccObj[mcc0].sub;
   mccSCnt=0
  }
  if (mccObj[mcc0].className.match('mccSubTopic')){
   mccSCnt++;
   mccObj[mcc0].parentNode.level=1;
   mccTNu[0]=mccObj[mcc0].parentNode;
   mccTNu[mccTNu.length]=mccObj[mcc0];
   mccObj[mcc0].sep=mccSubSeparation;
   mccTNu[0].hite=(mccSCnt*(mccObj[mcc0].offsetHeight+mccObj[mcc0].sep));
   mccObj[mcc0].bgover=mccSubOverBGColor;
   mccObj[mcc0].txtover=mccSubOverTxtColor;
   mccObj[mcc0].txtosx=mccSubTxtOffSetX;
   mccObj[mcc0].txtosy=mccSubTxtOffSetY;
   mccObj[mcc0].sub=new Array();
   mccSNu=mccObj[mcc0].sub;
  }
  if (mccObj[mcc0].className.match('mccExtTopic')){
   mccObj[mcc0].parentNode.level=2;
   mccSNu[0]=mccObj[mcc0].parentNode;
   mccSNu[mccSNu.length]=mccObj[mcc0];
   mccObj[mcc0].sep=mccExtSeparation;
   mccSNu[0].hite=(mccObj[mcc0].offsetTop+mccObj[mcc0].offsetHeight+mccObj[mcc0].sep);
   mccObj[mcc0].bgover=mccExtOverBGColor;
   mccObj[mcc0].txtover=mccExtOverTxtColor;
   mccObj[mcc0].txtosx=mccExtTxtOffSetX;
   mccObj[mcc0].txtosy=mccExtTxtOffSetY;
   mccObj[mcc0].sub=new Array();
  }
 }
 mccClone=document.createElement('DIV');
 mccMenuObj.appendChild(mccClone);
 mccClone.style.position='relative';
 mccClone.style.overflow='hidden';
 mccClone.style.height='0px';
 mccTopicFormat(mccMenuObj);
 mccStartDisplay();
}

function mccStartDisplay(){
 mccobj=mccMenuObj.getElementsByTagName('DIV');
 for (mcc1=0;mcc1<mccobj.length;mcc1++){
  if (mccobj[mcc1].className.match('mccSubExtPanel')&&mccobj[mcc1].level==2){
   mccobj[mcc1].hite=mccobj[mcc1].offsetHeight;
   mccobj[mcc1].style.height='0px';
  }
 }
 for (mcc2=0;mcc2<mccobj.length;mcc2++){
  if (mccobj[mcc2].className.match('mccSubExtPanel')&&mccobj[mcc2].level==1){
   mccobj[mcc2].hite=mccobj[mcc2].offsetHeight;
   mccobj[mcc2].style.height='0px';
  }
 }
// mccobj[1].anchor.style.height=(mccobj[1].parentNode.offsetHeight)+'px';
}

function mccClick(mcc){
 if (mcc.url){
  mccLink(mcc);
 }
 if (mccR1||mccR2){ return; }
 mccMObj=mcc.menu
 if (mcc.mount){
  if(mcc.mount.level==1){
   if (mcc.mount!=mccMObj.L1Close){
    mccMObj.L1Open=mcc.mount;
   }
   if (mccMObj.CkL2){
    mccMObj.CkL1=1
    mccL2Cascade();
   }
   else {
    mccL1Cascade();
   }
  }
  if(mcc.mount.level==2){
   if (mcc.mount!=mccMObj.L2Close){
    mccMObj.CkL1=0
    mccMObj.L2Open=mcc.mount;
   }
   mccL2Cascade();
  }
 }
}

function mccL1Cascade(){
 mccR1=0;
 if (mccMObj.L1Open){
  if (parseInt(mccMObj.L1Open.style.height)<mccMObj.L1Open.hite-mccInc){
   mccR1=1;
   mccMObj.L1Open.style.height=(parseInt(mccMObj.L1Open.style.height)+mccInc)+'px';
   mccMObj.L1OpenP=mccMObj.L1Open.parentNode;
  }
 }
 if (mccMObj.L1Close){
  if (parseInt(mccMObj.L1Close.style.height)>mccInc*2){
   mccR1=1;
   mccMObj.L1Close.style.height=(parseInt(mccMObj.L1Close.style.height)-mccInc)+'px';
  }
 }
 if (mccR1){ mccTO=setTimeout('mccL1Cascade()',mccSpeed); }
 else {
  if (mccMObj.L1Close){
   if (mccMObj.L1Close.par.mark){
    mccMObj.L1Close.par.mark.innerHTML=mccMarkerDwn;
   }
   mccMObj.L1Close.style.height='0px';
  }
  if (mccMObj.L1Open){
   if (mccMObj.L1Open.par.mark){
    mccMObj.L1Open.par.mark.innerHTML=mccMarkerUp;
   }
   mccMObj.L1Open.style.height=(mccMObj.L1Open.hite)+'px';
  }
  mccMObj.L1Close=mccMObj.L1Open;
  mccMObj.L1Open=null;
 }
}

function mccL2Cascade(){
 mccR2=0;
 if (mccMObj.L2Open){
  if (parseInt(mccMObj.L2Open.style.height)<mccMObj.L2Open.hite-mccInc){
   mccR2=1;
   mccMObj.L2Open.parentNode.style.height=(parseInt(mccMObj.L2Open.parentNode.style.height)+mccInc)+'px';
   mccMObj.L2Open.style.height=(parseInt(mccMObj.L2Open.style.height)+mccInc)+'px';
   mccMObj.L2OpenP=mccMObj.L2Open.parentNode;
  }
 }
 if (mccMObj.L2Close){
  if (parseInt(mccMObj.L2Close.style.height)>mccInc){
   mccR2=1;
   mccMObj.L2Close.parentNode.style.height=(parseInt(mccMObj.L2Close.parentNode.style.height)-mccInc)+'px';
   mccMObj.L2Close.style.height=(parseInt(mccMObj.L2Close.style.height)-mccInc)+'px';
   mccMObj.L2CloseP=mccMObj.L2Close.parentNode;
  }
 }
 if (mccR2){ mccTO=setTimeout('mccL2Cascade()',mccSpeed); }
 else {
  if (mccMObj.L2Close){
   mccMObj.L2Close.style.height='0px';
   mccMObj.L2Close.parentNode.style.height=(mccMObj.L2Close.parentNode.hite)+'px';
   mccMObj.CkL2=0;
   if (mccMObj.L2Close.par.mark){
    mccMObj.L2Close.par.mark.innerHTML=mccMarkerDwn;
   }
  }
  if (mccMObj.L2Open){
   mccMObj.L2Open.style.height=(mccMObj.L2Open.hite)+'px';
   mccMObj.L2Open.parentNode.style.height=(mccMObj.L2Open.hite+mccMObj.L2Open.parentNode.hite)+'px';
   if (mccMObj.L2Open.par.mark){
    mccMObj.L2Open.par.mark.innerHTML=mccMarkerUp;
   }
   mccMObj.CkL2=1;
  }
  mccMObj.L2Close=mccMObj.L2Open;
  mccMObj.L2Open=null;
   if (mccMObj.CkL1){mccL1Cascade(); }
 }
}

function mccNormalise(mcc){
 mccAry=new Array();
 for (mcc0=0;mcc0<mcc.length;mcc0++){
  if (mcc[mcc0].prime=='yes'){
   mccAry[mccAry.length]=mcc[mcc0];
  }
 }
 return mccAry;
}


function mccTopicFormat(mcc){
 mccObj=mccNormalise(mcc.getElementsByTagName('DIV'));
 for (mcc0=0;mcc0<mccObj.length;mcc0++){
  mcc=new Array(mccObj[mcc0]);
  mccAry=new Array;
  for (mcc3=0;mcc3<mcc[0].childNodes.length;mcc3++){
   if (mcc3==0){
    if (mcc[0].childNodes[mcc3].nodeType==3){
     mccTxtN=document.createTextNode(mcc[0].childNodes[mcc3].data);
    }
    if (mcc[0].childNodes[mcc3].tagName=='A'){
     mcc[0].url=mcc[0].childNodes[mcc3].href;
     mcc[0].target=mcc[0].childNodes[mcc3].target
     mccTxtN=document.createTextNode(mcc[0].childNodes[mcc3].firstChild.data);
    }
    mcc[mcc3+1]=mccClone.cloneNode(false);
    mcc[mcc3+1].style.position='absolute';
    mcc[mcc3+1].style.zIndex=(4-mcc3);
    mcc[mcc3+1].style.width=mccObj[mcc0].offsetWidth+'px';
    mcc[mcc3+1].style.height=mccObj[mcc0].offsetHeight+'px';
    mcc[mcc3+1].style.textAlign=mccObj[mcc0].style.textAlign;
    mcc[mcc3+1].style.top=mcc[0].txtosy+'px';
    mcc[mcc3+1].style.left=mcc[0].txtosx+'px';
    mcc[mcc3+1].style.color=mcc[0].style.color;
    mcc[mcc3+1].appendChild(mccTxtN);
    mccAry[mccAry.length]=mcc[0].childNodes[mcc3];
   }
   if (mcc[0].childNodes[mcc3].tagName=='IMG'){
    mccAry[mccAry.length]=mcc[0].childNodes[mcc3];
    mcc[mcc3+1]=mcc[0].childNodes[mcc3];
    mcc[mcc3+1].style.position='absolute';
    mcc[mcc3+1].style.zIndex=(4-mcc3);
    mcc[mcc3+1].style.top='0px';
    mcc[mcc3+1].style.left='0px';
    mcc[mcc3+1].height=(mcc[0].offsetHeight);
    mcc[mcc3+1].width=(mcc[0].offsetWidth);
   }
  }
  for (mcc4=0;mcc4<mccAry.length;mcc4++){
   mcc[0].removeChild( mccAry[mcc4]);
  }
  for (mcc5=1;mcc5<mcc.length;mcc5++){
   if (mcc[mcc5]){
    mcc[mcc5].prime='no';
    mcc[0].appendChild(mcc[mcc5]);
   }
  }
  mcc[mcc.length]=mccClone.cloneNode(false);
  mcc[mcc.length-1].style.position='relative';
  mcc[mcc.length-1].style.width=mccObj[mcc0].offsetWidth+'px';
  mcc[mcc.length-1].style.height=(mccObj[mcc0].sep)+'px';
  mcc[mcc.length-1].style.color=mcc[0].style.color;
  mcc[0].mark=null;
//  mcc[0].parentNode.insertBefore(mcc[mcc.length-1],mcc[0]);
  if (mccObj[mcc0].sub.length>0&&mccMarkerDwn){
   mcc[6]=document.createElement('DIV');
   mcc[6].style.position='absolute';
   mcc[6].style.overflow='hidden';
   mcc[6].style.zIndex=4;
   mcc[6].style.left=(mcc[0].offsetWidth-mcc[0].offsetHeight)+'px';
   mcc[6].style.height=(mcc[0].offsetHeight)+'px';
   mcc[6].style.width=(mcc[0].offsetHeight)+'px';
   mcc[0].mark=mcc[6];
   mcc[0].appendChild(mcc[6]);
   mcc[6].innerHTML=mccMarkerDwn;
   if (mcc[6].childNodes[0].tagName=='IMG'){
    mcc[6].childNodes[0].height=(mcc[0].offsetHeight);
    mcc[6].childNodes[0].width=(mcc[0].offsetHeight);
   }
  }
 }
}

function mccMouseOver(mcc){
 mcc.txtcolor=mcc.childNodes[0].style.color;
 mcc.bgcolor=mcc.style.backgroundColor;
 mcc.childNodes[0].style.color=mcc.txtover;
 mcc.style.backgroundColor=mcc.bgover;
 if (mcc.childNodes[1]){
  if (mcc.childNodes[1].tagName=='IMG'){ mcc.childNodes[1].style.display='none'; }
 }
 mcc.onmouseout=function(){
                this.style.backgroundColor=this.bgcolor;
                this.childNodes[0].style.color=this.txtcolor;
                if (this.childNodes[1]){ this.childNodes[1].style.display='block'; }
               }
}

function mccLink(mcc){
 if (mcc.target.toLowerCase().match('_top')||mcc.target.toLowerCase().match('_blank')){
  window.top.location=mcc.url;
 }
 else if (mcc.target.toLowerCase().match('javascript')){
  eval(mcc.url);
 }
 else if (eval('parent.'+mcc.target)){
  eval('top.'+mcc.target+'.location.href=mcc.url');
 }
}

function mccLeft(mcc){
 mccObjLeft=mcc.offsetLeft;
 while(mcc.offsetParent!=null){
  mccObjParent=mcc.offsetParent;
  mccObjLeft+=mccObjParent.offsetLeft;
  mcc=mccObjParent;
 }
 return mccObjLeft;
}

function mccTop(mcc){
 mccObjTop=mcc.offsetTop;
 while(mcc.offsetParent!=null){
  mccObjParent=mcc.offsetParent;
  mccObjTop+=mccObjParent.offsetTop;
  mcc=mccObjParent;
 }
 return mccObjTop;
}

