function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);


function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function expandContractCat(catContainer,flipImg)
{
  // Find UL in the container
  var ul = catContainer.getElementsByTagName('ul')[0];
  ul.style.display = (ul.style.display == 'none' ? '' : 'none');
  flipImg.src = ul.style.display == 'none' ? '/layouts/main/images/b_plus.gif' : '/layouts/main/images/b_arrow.gif';
}

function expandAll()
{
  var uls = document.getElementsByTagName('ul');
  for(var i = 0; i < uls.length; i++)
  {
    if(uls[i].className == 'catlist')
    {
      uls[i].style.display = '';
    }
  }
}

function contractAll()
{
  var uls = document.getElementsByTagName('ul');
  for(var i = 0; i < uls.length; i++)
  {
    if(uls[i].className == 'catlist')
    {
      uls[i].style.display = 'none';
    }
  }
}
      function expandCat(catContainer,flipImg)
      {
        // Find UL in the container
        var ul = catContainer.getElementsByTagName('ul')[0];
        if(ul.style.display == 'none')
        {
          ul.style.display = (ul.style.display == 'none' ? '' : 'none');
          flipImg.src = ul.style.display == 'none' ? '/assets/b_plus.gif' : '/assets/b_arrow.gif';
        }
      }
      function expandToCurrent(containingElement)
      {     
        var current = document.location.href;
        
        var divs = containingElement.getElementsByTagName('div');
        for(var i = 0; i < divs.length; i++)
        {
          var topanch = divs[i].getElementsByTagName('a')[0];
          if(current.length >= topanch.href.length)
          {
            if(topanch.href == current.substring(current.length - topanch.href.length))
            {
              expandCat(divs[i], topanch.firstChild)
              break;
            }
          }
          
          try
          {
            var anchs = divs[i].getElementsByTagName('ul')[0].getElementsByTagName('a');          
            for(var j = 0; j < anchs.length; j++)
            {
              // if(current.length < anchs[j].href.length) continue;
              if(anchs[j].href == current || anchs[j].href == current.substring(current.length - anchs[j].href.length))
              {
                expandCat(divs[i], topanch.firstChild)
                break;
              }
            }
          }
          catch(e)
          {
            
          }
        }
        
        
      }
      
      
      
      
      
      
      
      
      
      
      
      
(function(){

    var DomReady = window.DomReady = {};

  // Everything that has to do with properly supporting our document ready event. Brought over from the most awesome jQuery. 

    var userAgent = navigator.userAgent.toLowerCase();

    // Figure out what browser is being used
    var browser = {
      version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1],
      safari: /webkit/.test(userAgent),
      opera: /opera/.test(userAgent),
      msie: (/msie/.test(userAgent)) && (!/opera/.test( userAgent )),
      mozilla: (/mozilla/.test(userAgent)) && (!/(compatible|webkit)/.test(userAgent))
    };    

  var readyBound = false; 
  var isReady = false;
  var readyList = [];

  // Handle when the DOM is ready
  function domReady() {
    // Make sure that the DOM is not already loaded
    if(!isReady) {
      // Remember that the DOM is ready
      isReady = true;
        
          if(readyList) {
              for(var fn = 0; fn < readyList.length; fn++) {
                  readyList[fn].call(window, []);
              }
            
              readyList = [];
          }
    }
  };

  // From Simon Willison. A safe way to fire onload w/o screwing up everyone else.
  function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
      window.onload = func;
    } else {
      window.onload = function() {
        if (oldonload) {
          oldonload();
        }
        func();
      }
    }
  };

  // does the heavy work of working through the browsers idiosyncracies (let's call them that) to hook onload.
  function bindReady() {
    if(readyBound) {
        return;
      }
  
    readyBound = true;

    // Mozilla, Opera (see further below for it) and webkit nightlies currently support this event
    if (document.addEventListener && !browser.opera) {
      // Use the handy event callback
      document.addEventListener("DOMContentLoaded", domReady, false);
    }

    // If IE is used and is not in a frame
    // Continually check to see if the document is ready
    if (browser.msie && window == top) (function(){
      if (isReady) return;
      try {
        // If IE is used, use the trick by Diego Perini
        // http://javascript.nwbox.com/IEContentLoaded/
        document.documentElement.doScroll("left");
      } catch(error) {
        setTimeout(arguments.callee, 0);
        return;
      }
      // and execute any waiting functions
        domReady();
    })();

    if(browser.opera) {
      document.addEventListener( "DOMContentLoaded", function () {
        if (isReady) return;
        for (var i = 0; i < document.styleSheets.length; i++)
          if (document.styleSheets[i].disabled) {
            setTimeout( arguments.callee, 0 );
            return;
          }
        // and execute any waiting functions
              domReady();
      }, false);
    }

    if(browser.safari) {
        var numStyles;
      (function(){
        if (isReady) return;
        if (document.readyState != "loaded" && document.readyState != "complete") {
          setTimeout( arguments.callee, 0 );
          return;
        }
        if (numStyles === undefined) {
                  var links = document.getElementsByTagName("link");
                  for (var i=0; i < links.length; i++) {
                    if(links[i].getAttribute('rel') == 'stylesheet') {
                        numStyles++;
                    }
                  }
                  var styles = document.getElementsByTagName("style");
                  numStyles += styles.length;
        }
        if (document.styleSheets.length != numStyles) {
          setTimeout( arguments.callee, 0 );
          return;
        }
      
        // and execute any waiting functions
        domReady();
      })();
    }

    // A fallback to window.onload, that will always work
      addLoadEvent(domReady);
  };

  // This is the public function that people can use to hook up ready.
  DomReady.ready = function(fn, args) {
    // Attach the listeners
    bindReady();
    
    // If the DOM is already ready
    if (isReady) {
      // Execute the function immediately
      fn.call(window, []);
      } else {
      // Add the function to the wait list
          readyList.push( function() { return fn.call(window, []); } );
      }
  };
    
  bindReady();
  
})();
      
