//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).parents("table").get(0);
  var SecondRow  = Parent.rows[1];
  if (SecondRow) {
    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 rLength = ElementPart.rows.length;
  var oTopBar = ElementPart.rows[0];
  if (rLength > 1 ){ var Content = ElementPart.rows[1];}
  var cLength = oTopBar.cells.length;
  //var Cell1 = oTopBar.cells[oTopBar.cells.length-3];
  //var Cell2 = oTopBar.cells[oTopBar.cells.length-2];
  //var Cell3 = oTopBar.cells[oTopBar.cells.length-1];
  //alert(Cell3.className);

  if ( IsClosed ){
    if ( rLength > 1 ){ Content.style.display = "";}
    for (var c=0;c < cLength; c++){
      var rCell = oTopBar.cells[c];
      switch (rCell.className){
        case "clsPartLeftHidden":
          rCell.className = "clsPartLeft";
        break
        case "clsPartHeadHidden":
          rCell.className = "clsPartHead";
        break
        case "clsPartRightHidden":
          rCell.className = "clsPartRight";
        break
      
      }
    }
    //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 {
    if ( rLength > 1 ){ Content.style.display = "none";}
    for (var c=0;c < cLength; c++){
      var rCell = oTopBar.cells[c];
      switch (rCell.className){
        case "clsPartLeft":
          rCell.className = "clsPartLeftHidden";
        break
        case "clsPartHead":
          rCell.className = "clsPartHeadHidden";
        break
        case "clsPartRight":
          rCell.className = "clsPartRightHidden";
        break
      
      }
    }

    //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;
  //var test = "chartest=abcd{123}\"456\"hello; path=/;";
  var test = "fsr.r={\"d\":90,\"i\":\"1285784398115_360044\",\"e\":1286391267036}; path=/;"
  document.cookie = test;
 }
