var jsActive = true;

// drop menu script for IE
startList = function() {
 if (document.all&&document.getElementById) {
  navRoot = document.getElementById("menus");
  for (i=0; i<navRoot.childNodes.length; i++) {
   node = navRoot.childNodes[i];
   if (node.nodeName=="LI") {
    node.onmouseover=function() {
     if (jsActive == true) {
         this.className+=" over";
         hideSelect(true);
         }
    }
    node.onmouseout=function() {
     if (jsActive == true) {
         this.className=this.className.replace(" over", "");
         hideSelect(false);
         }
    }
    if (node.lastChild.nodeName=="UL") {
     parentID = node.id;
     node.lastChild.onmouseover=function() {
     if (jsActive == true) {
          parentID.className+=" over";
          hideSelect(true);
          }
     }
     node.lastChild.onmouseout=function() {
      if (jsActive == true) {
          parentID.className=node.className.replace(" over", "");
          hideSelect(false);
         }
     }
    }
   }
  }
 }
}
// hide items (<select> form elements primarily) from drop menus 
// so they will not show through the menus
function hideSelect(isOn) {
  if(navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4) {
    if (document.all.hideselect != null) {
      divs = document.all.hideselect;
      if (divs.length != null) {
        for (i = 0; i < divs.length; i++) {
          divs[i].style.visibility = isOn ? "hidden" : "visible";
        }
      }
      else {
        divs.style.visibility = isOn ? "hidden" : "visible";
      }
    }
    if (document.getElementsByTagName("select") != null) {
      divs = document.getElementsByTagName("select");
      if (divs.length != null) {
        for (i = 0; i < divs.length; i++) {
          divs[i].style.visibility = isOn ? "hidden" : "visible";
        }
      }
      else {
        divs.style.visibility = isOn ? "hidden" : "visible";
      }
    }
  }
}
dukeCookie = {
    create:function(name,value,days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days*24*60*60*1000));
            var expires = '; expires=' + date.toGMTString();
        }
        else var expires = '';
        document.cookie = name + '=' + value + expires + '; path=/';
    },
    read:function(name) {
        var nameEQ = name + '=';
        //alert(document.cookie);
        var ca = document.cookie.split(';');
        for(var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
    },
    erase:function(name) {
        dukeCookie.create(name,'',-1);    
    },
    validate:function(name, value) {
        for(var i = 0; i < customer[name].length; i++) {
            if(value == customer[name][i]) return true;
        }
        return false;
    }
}

links = {
    tag: function() {
        for (var i = 0; i < links.sections.length; i++) {
            var section = $(links.sections[i]);
            if (!section) continue;
            var as = section.getElementsByTagName('a');
            for (var j = 0; j < as.length; j++) {
                var href = as[j].href;
                if (href.indexOf('javascript') > -1) continue;
                if (href.indexOf('mailto') > -1) continue;
                if (href.indexOf('#') > -1) continue;
                href = (href.indexOf('?') > -1) ? href + '&sec=' + links.sections[i] : href + '?sec=' + links.sections[i];
                as[j].href = href;
            }
        }
    },
    sections: ['mainnav','logo','contact','crumbtrail','subnav','content','sidebar','footer', 'customer', 'corporate', 'left_col', 'right_col']
}
addLoadEvent(links.tag);

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}
function $() {
    if (arguments.length == 1) return get$(arguments[0]);
    function get$(el){
        if (typeof el == 'string') el = document.getElementById(el);
        return el;
    }
};
Element = {
  visible: function(element) {
    return $(element).style.display != 'none';
  },
  toggle: function() {
    for (var i = 0; i < arguments.length; i++) {
      var element = $(arguments[i]);
      Element[Element.visible(element) ? 'hide' : 'show'](element);
    }
  },
  hide: function() {
    for (var i = 0; i < arguments.length; i++) {
      var element = $(arguments[i]);
      element.style.display = 'none';
    }
  },
  show: function() {
    for (var i = 0; i < arguments.length; i++) {
      var element = $(arguments[i]);
      element.style.display = '';
    }
  },
  remove: function(element) {
    element = $(element);
    element.parentNode.removeChild(element);
  },
  update: function(element, html) {
    $(element).innerHTML = html.stripScripts();
    setTimeout(function() {html.evalScripts()}, 10);
  },
  replace: function(element, html) {
    element = $(element);
    if (element.outerHTML) {
      element.outerHTML = html.stripScripts();
    } else {
      var range = element.ownerDocument.createRange();
      range.selectNodeContents(element);
      element.parentNode.replaceChild(
        range.createContextualFragment(html.stripScripts()), element);
    }
    setTimeout(function() {html.evalScripts()}, 10);
  },
  getHeight: function(element) {
    element = $(element);
    return element.offsetHeight;
  },
  classNames: function(element) {
    return new Element.ClassNames(element);
  },
  hasClassName: function(element, className) {
    if (!(element = $(element))) return;
    return Element.classNames(element).include(className);
  },
  addClassName: function(element, className) {
    if (!(element = $(element))) return;
    return Element.classNames(element).add(className);
  },
  removeClassName: function(element, className) {
    if (!(element = $(element))) return;
    return Element.classNames(element).remove(className);
  },
  // removes whitespace-only text node children
  cleanWhitespace: function(element) {
    element = $(element);
    for (var i = 0; i < element.childNodes.length; i++) {
      var node = element.childNodes[i];
      if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
        Element.remove(node);
    }
  },
  empty: function(element) {
    return $(element).innerHTML.match(/^\s*$/);
  },
  childOf: function(element, ancestor) {
    element = $(element), ancestor = $(ancestor);
    while (element = element.parentNode)
      if (element == ancestor) return true;
    return false;
  },
  scrollTo: function(element) {
    element = $(element);
    var x = element.x ? element.x : element.offsetLeft,
        y = element.y ? element.y : element.offsetTop;
    window.scrollTo(x, y);
  },
  getStyle: function(element, style) {
    element = $(element);
    var value = element.style[style.camelize()];
    if (!value) {
      if (document.defaultView && document.defaultView.getComputedStyle) {
        var css = document.defaultView.getComputedStyle(element, null);
        value = css ? css.getPropertyValue(style) : null;
      } else if (element.currentStyle) {
        value = element.currentStyle[style.camelize()];
      }
    }
    if (window.opera && ['left', 'top', 'right', 'bottom'].include(style))
      if (Element.getStyle(element, 'position') == 'static') value = 'auto';
    return value == 'auto' ? null : value;
  },
  setStyle: function(element, style) {
    element = $(element);
    for (var name in style)
      element.style[name.camelize()] = style[name];
  },
  getDimensions: function(element) {
    element = $(element);
    if (Element.getStyle(element, 'display') != 'none')
      return {width: element.offsetWidth, height: element.offsetHeight};
    // All *Width and *Height properties give 0 on elements with display none,
    // so enable the element temporarily
    var els = element.style;
    var originalVisibility = els.visibility;
    var originalPosition = els.position;
    els.visibility = 'hidden';
    els.position = 'absolute';
    els.display = '';
    var originalWidth = element.clientWidth;
    var originalHeight = element.clientHeight;
    els.display = 'none';
    els.position = originalPosition;
    els.visibility = originalVisibility;
    return {width: originalWidth, height: originalHeight};
  },
  makePositioned: function(element) {
    element = $(element);
    var pos = Element.getStyle(element, 'position');
    if (pos == 'static' || !pos) {
      element._madePositioned = true;
      element.style.position = 'relative';
      // Opera returns the offset relative to the positioning context, when an
      // element is position relative but top and left have not been defined
      if (window.opera) {
        element.style.top = 0;
        element.style.left = 0;
      }
    }
  },
  undoPositioned: function(element) {
    element = $(element);
    if (element._madePositioned) {
      element._madePositioned = undefined;
      element.style.position =
        element.style.top =
        element.style.left =
        element.style.bottom =
        element.style.right = '';
    }
  },
  makeClipping: function(element) {
    element = $(element);
    if (element._overflow) return;
    element._overflow = element.style.overflow;
    if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden')
      element.style.overflow = 'hidden';
  },
  undoClipping: function(element) {
    element = $(element);
    if (element._overflow) return;
    element.style.overflow = element._overflow;
    element._overflow = undefined;
  }
}
    collapsibles = {
        init: function() {
            collapsibles.prep('collapsible');
            if($('showHideAll')) $('showHideAll').onclick =  collapsibles.toggleAll;
        },
        prep: function(className) {
            //alert('event.init');
            var divs = getElementsByClass(className, $('content'), 'div');
            for (var i = 0; i < divs.length; i++) {
                var h4s = divs[i].getElementsByTagName('h4');
                for (j = 0; j < h4s.length; j++) {
                    if (document.createElement) {
                        var text = h4s[j].firstChild.cloneNode(true);
                        h4s[j].removeChild(h4s[j].firstChild);
                        var a = document.createElement('a');
                        a.href = '#';
                        a.appendChild(text);
                        h4s[j].appendChild(a);
                    }
                    h4s[j].onclick = function() {collapsibles.toggle(this);return false;};
                    collapsibles.hideAll(className);
                }
            }
        },
        toggle: function(h4) {
            if(h4.className == 'closed') {h4.className = 'open';}
            else if(h4.className == 'open') {h4.className = 'closed';}
            while(getNextSibling(h4)) {
                var next = getNextSibling(h4);
                Element.toggle(next);
                h4 = next;
            }
        },
        show: function(h4) {
            while(getNextSibling(h4)) {
                var next = getNextSibling(h4);
                Element.show(next);
                h4 = next;
            }
        },        
        hide: function(h4) {
            while(getNextSibling(h4)) {
                var next = getNextSibling(h4);
                Element.hide(next);
                h4 = next;
            }
        },        
        hideAll: function(className) {
            var divs = getElementsByClass(className, $('content'), 'div');
            for (var i = 0; i < divs.length; i++) {
                var h4s = divs[i].getElementsByTagName('h4');
                for (j = 0; j < h4s.length; j++) {
                    collapsibles.hide(h4s[j]);
                }
            }
        },            
        toggleAll: function() {
            //alert(className);
            var divs = getElementsByClass('collapsible', $('content'), 'div');
            for (var i = 0; i < divs.length; i++) {
                var h4s = divs[i].getElementsByTagName('h4');
                for (j = 0; j < h4s.length; j++) {
                    collapsibles.toggle(h4s[j]);
                }
            }
        },
        open: false
    }
function getNextSibling(el) {
    var nextSib = el.nextSibling;
    if(!nextSib) return false;
    while (nextSib.nodeType != 1) {
        if (!nextSib.nextSibling) return false;
        nextSib = nextSib.nextSibling;
    }
    return nextSib;
}
function getElementsByClass(searchClass,node,tag) {
    var classElements = new Array();
    if ( node == null )
        node = document;
    if ( tag == null )
        tag = '*';
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
    for (i = 0, j = 0; i < elsLen; i++) {
        if ( pattern.test(els[i].className) ) {
            classElements[j] = els[i];
            j++;
        }
    }
    return classElements;
}
addLoadEvent(collapsibles.init);
addLoadEvent(startList);
