//on page load (as soon as its ready) call pageStart
$(document).ready(pageStart);

//check to make sure a style exists in case we need to do something with it
function getCSSRule(ruleName) {                           // Return requested style obejct
   ruleName=ruleName.toLowerCase();                       // Convert test string to lower case.
   if (document.styleSheets) {                            // If browser can play with stylesheets
      for (var i=0; i<document.styleSheets.length; i++) { // For each stylesheet
         var styleSheet=document.styleSheets[i];          // Get the current Stylesheet
         var ii=0;                                        // Initialize subCounter.
         var cssRule=false;                               // Initialize cssRule. 
         do {                                             // For each rule in stylesheet
            if (styleSheet.cssRules) {                    // Browser uses cssRules?
               cssRule = styleSheet.cssRules[ii];         // Yes --Mozilla Style
            } else {                                      // Browser usses rules?
               cssRule = styleSheet.rules[ii];            // Yes IE style. 
            }                                             // End IE check.
            if (cssRule)  {                               // If we found a rule...
               if (cssRule.selectorText.toLowerCase()==ruleName) { //  match ruleName?
                 return cssRule;                      // return the style object.
               }                                          // End found rule name
            }                                             // end found cssRule
            ii++;                                         // Increment sub-counter
         } while (cssRule)                                // end While loop
      }                                                   // end For loop
   }                                                      // end styleSheet ability check
   return false;                                          // we found NOTHING!
}

function pageStart(){
  $(".clsPartLeft").click(mDown);
  $(".clsPartLeftHidden").click(mDown);
  $(".clsPartHeadHidden").click(mDown);
  $(".clsPartHead").click(mDown);
  $(".clsPartRight").click(mDown);
  $(".clsPartRightHidden").click(mDown);
  var MenuItems = new Array();
  var Cook = "";
  var nv;
  var MenuState = "";
  Cook = document.cookie;
  var Cookies = Cook.split("; ");
  var i=0;
  while (i < Cookies.length) {
    nv = Cookies[i];
    if (nv.indexOf("MenuState=") != -1){
      MenuState = nv;
      i = Cookies.length;
    }
    i++;
  }

  var el = document.getElementById("LeftColumnMenu");
  var parts = GetElementParts(el);
 
  for( var i = 0; i < parts.length; i++ ){
    if (MenuState.indexOf(parts[i].id) == -1){
      MenuStateChange( parts[i] ,false );
    } else {
      MenuStateChange( parts[i] ,true );
    }
  }
  
}

function eventTrigger (e){
if (! e) e = event;
return e.target || e.srcElement;
}

function mDown(e){
  var SourceElement = eventTrigger(e);
  var IsClosed
  var Parent  = SourceElement.parentNode.parentNode.parentNode;
  var SecondRow  = SourceElement.parentNode.parentNode.parentNode.rows[1];
  var IsClosed = ( (SecondRow.style.display == "none") ? true : false);
  MenuStateChange(Parent,IsClosed);          
}

function GetElementParts(el){
  var ElementParts = el.getElementsByTagName( "TABLE" );
  var ReturnValue = new Array();
  for( var i = 0; i < ElementParts.length; i++ ){
    if( ElementParts[i].className == "clsPart" ){
      ReturnValue[ReturnValue.length] = ElementParts[i];
    }
  }
  return ReturnValue;
}

function MenuStateChange(clsPartContainerElement,IsClosed){
  var Cook = "";
  var nv;
  var MenuState = "MenuState=[*]";
  Cook = document.cookie;
  var Cookies = Cook.split("; ");
  var i=0;
  while (i < Cookies.length) {
    nv = Cookies[i];
    if (nv.indexOf("MenuState=") != -1){
      MenuState = nv;
      i = Cookies.length;
    }
    i++;
  }

  var ElementPart = clsPartContainerElement;
  var oTopBar = ElementPart.rows[0];
  var Content = ElementPart.rows[1];
  var Cell1 = oTopBar.cells[oTopBar.cells.length-3];
  var Cell2 = oTopBar.cells[oTopBar.cells.length-2];
  var Cell3 = oTopBar.cells[oTopBar.cells.length-1];

  if ( IsClosed ){
    Content.style.display = "";
    Cell1.className = "clsPartLeft";
    Cell2.className = "clsPartHead";
    Cell3.className = "clsPartRight";
    //write state info to cookie
    //element.parts = GetElementParts();
    //var id = element.parts[0].id;
    var id = clsPartContainerElement.id;
    if (MenuState.indexOf("["+id+"]") == -1) {
      MenuState = MenuState + "[" +id+"]";
    }    
  } else {
    Content.style.display = "none";
    if (getCSSRule(".clsPartLeftHidden")){ 
      Cell1.className = "clsPartLeftHidden";
      Cell2.className = "clsPartHeadHidden";
    }
    Cell3.className = "clsPartRightHidden";
                        
    // write state info to cookie
    //element.parts = GetElementParts();
    //var id = "["+element.parts[0].id +"]";
    var id = "["+clsPartContainerElement.id +"]";
    var before;
    var after;
    if (MenuState.indexOf(id) != -1){
      before = MenuState.substring(0,MenuState.indexOf(id));
      after = MenuState.substring(MenuState.indexOf(id)+id.length, MenuState.length);
      MenuState = before + after;
    }
  }
  MenuState = MenuState + "; path=/;";
  document.cookie = MenuState;
 }