var FE = {};
FE.UI = {};
FE.Event = {};
FE.DOM = {};

 
/*
Event handling
*/
FE.Event.attachEventHandler = function(obj, eventType, eventHandler){  
  if(obj.attachEvent){       
    obj.attachEvent(eventType, eventHandler);
  }
  else if(obj.addEventListener){  
    obj.addEventListener(eventType.substr(2), eventHandler, false);      
  }
};


FE.DOM.getElementsByTagAndClassName = function (tagName, className, parent) {    
    if (typeof(tagName) == 'undefined' || tagName === null) {
      tagName = '*';
    }
    if (typeof(parent) == 'undefined' || parent === null) {
      parent = document;
    }        
    var children = (parent.getElementsByTagName(tagName) || self._document.all);        
    var elements = [];
    for (var i = 0; i < children.length; i++) {
      var child = children[i];
      var cls = child.className;
      if (!cls) {
        continue;
      }
      var classNames = cls.split(' ');
      for (var j = 0; j < classNames.length; j++) {
        if (classNames[j] == className) {
            elements.push(child);
            break;
        }
      }
    }
    return elements;
  };
FE.DOM.addElementClass = function (obj, className) {
        var cls = obj.className;
        // trivial case, no className yet
        if (cls === undefined || cls.length === 0) {
            obj.className = className;
            return true;
        }
        // the other trivial case, already set as the only class
        if (cls == className) {
            return false;
        }
        var classes = cls.split(" ");
        for (var i = 0; i < classes.length; i++) {
            // already present
            if (classes[i] == className) {
                return false;
            }
        }
        // append class
        obj.className = cls + " " + className;
        return true;
    };

    
FE.DOM.removeElementClass = function (obj, className) {
        var cls = obj.className;
        // trivial case, no className yet
        if (cls === undefined || cls.length === 0) {
            return false;
        }        
        var classes = cls.split(" ");
        for (var i = 0; i < classes.length; i++) {
            // already present
            if (classes[i] == className) {
                // only check sane case where the class is used once
                classes.splice(i, 1);
                obj.className =  classes.join(" ");
                return true;
            }
        }
        // not found
        return false;
    };

FE.UI.EnhanceListItems = {};
FE.UI.EnhanceListItems.init = function(){
  var lists = FE.DOM.getElementsByTagAndClassName('ul', 'enhanced');
  for(var i=0,ilength=lists.length; i<ilength;i++){
    var list = lists[i];
    var listitems = list.getElementsByTagName('li');   
    for(var j=0,jlength=listitems.length; j<jlength; j++){
      var listitem = listitems[j];
      var links = FE.DOM.getElementsByTagAndClassName('a', 'hideme', listitem);
      if(links.length>0){        
        var link = links[0];
          FE.DOM.addElementClass(link, 'hidden');                
      }
      
      FE.Event.attachEventHandler(listitem, 'onclick', FE.UI.EnhanceListItems.onclickHandler);
      FE.Event.attachEventHandler(listitem, 'onmouseover', FE.UI.EnhanceListItems.onMouseoverHandler);
      FE.Event.attachEventHandler(listitem, 'onmouseout', FE.UI.EnhanceListItems.onMouseoutHandler);
    }
  }  
};
FE.UI.EnhanceListItems.onclickHandler = function(e){
  var listElement = e.target || e.srcElement;
  while(listElement.tagName != 'LI'){
    listElement = listElement.parentNode;
  }
  var links = listElement.getElementsByTagName('a');
  if(links){
    var link = links[0];
    location.href = link;    
  }
};
FE.UI.EnhanceListItems.onMouseoverHandler = function(e){
  var listElement = e.target || e.srcElement;
  while(listElement.tagName != 'LI'){
    listElement = listElement.parentNode;
  }
  FE.DOM.addElementClass(listElement, 'hover');
  
};
FE.UI.EnhanceListItems.onMouseoutHandler = function(e){
  var listElement = e.target || e.srcElement;
  while(listElement.tagName != 'LI'){
    listElement = listElement.parentNode;
  }
  FE.DOM.removeElementClass(listElement, 'hover');
};


(function(i) {var u =navigator.userAgent;var e=/*@cc_on!@*/false; var st =
setTimeout;if(/webkit/i.test(u)){st(function(){var dr=document.readyState;
if(dr=="loaded"||dr=="complete"){i()}else{st(arguments.callee,10);}},10);}
else if((/mozilla/i.test(u)&&!/(compati)/.test(u)) || (/opera/i.test(u))){
document.addEventListener("DOMContentLoaded",i,false); } else if(e){     (
function(){var t=document.createElement('doc:rdy');try{t.doScroll('left');
i();t=null;}catch(e){st(arguments.callee,0);}})();}else{window.onload=i;}})(
  function(){
     FE.UI.EnhanceListItems.init();
  }
)


// funksjon for å sette like høye kolonner for prosessvisningen
function equalHeight(group) {
  tallest = 0;
  group.each(function() {
      thisHeight = $(this).height();
      if(thisHeight > tallest) {
	tallest = thisHeight;
      }
    });
  group.height(tallest);
}


$(document).ready(function(){  

    //setter kolonner for prosess til å være like høye
    equalHeight($(".equalheight"));
    equalHeight($(".fase>a"));
    equalHeight($(".prosessFase"));   

    var enableShowHideChildrenControls = true;

    var artikkelNavigasjon = $("div#ArtikkelNavigasjon");
    
    // if the "show all" link has been selected, all subheadings are displayed.
    var isShowingAll = artikkelNavigasjon.children("p:first").children("a:first").hasClass("selected");
    
    function onShowHideChildrenLinkClicked(event,show){
        var subHeadingLink = $(event.target);
        var subHeading = subHeadingLink.parent();
        var showChildrenLink = subHeading.children("a.showchildren");
        var hideChildrenLink = subHeading.children("a.hidechildren");
        
        subHeading.children("ul").toggle(show);
        showChildrenLink.toggle(!show);
        hideChildrenLink.toggle(show);

        event.preventDefault();
        return false;
    }
   
    function onHideChildrenLinkClicked(event){
        return onShowHideChildrenLinkClicked(event,false);
    }
    function onShowChildrenLinkClicked(event){
        return onShowHideChildrenLinkClicked(event,true);
    }
   
    var headingList = $("ul:first",artikkelNavigasjon);
    $("li",headingList).each(function(index,subHeading){
        subHeading = $(subHeading);
        var hasChildren = $("ul",subHeading).length>0;
        if(hasChildren && enableShowHideChildrenControls ){
            var showChildrenLink = subHeading.children("a.showchildren");
            var hideChildrenLink = subHeading.children("a.hidechildren");
             
            // hide the children, unless any of the children have been selected.             
            var selectedChildren = $(".selected",subHeading);
            
            if( isShowingAll || (selectedChildren.length > 0) ) {
                hideChildrenLink.show();
            } else {
                subHeading.children("ul").hide();
                showChildrenLink.show();
            }
             
            showChildrenLink.click(onShowChildrenLinkClicked);
            hideChildrenLink.click(onHideChildrenLinkClicked);
        } else {
            // There are no children or the show/hide functionality has been disabled, so show the "nochildren" dummy link.
            var noChildrenLink   = subHeading.children("span.nochildren");
            noChildrenLink.show();
        }
    });
    //expand the selected nodes
    $("li.selected .showchildren:visible").trigger('click');
});
  

  
//registerEventListener(window, "load", FE.UI.EnhanceListItems.init);
//registerEventListener(window, "load", FE.UI.InputValueTogglers.init);
//registerEventListener(window, "load", FE.UI.SectionToggler.init);
