/**********************************************************************/
/* moduleMenu()                                                       */
/* description                                              */
/**********************************************************************/

// constantsssss
var ROLLOUT_MENU_ITEM         = 'Default';
var ROLLOVER_MENU_ITEM        = 'Hover';
var CLICK_MENU_ITEM           = 'Active';
// globals
var activeMenu = new Array();
var qsParm = new Array();
var autoClick = false;

function fireEvent(obj,evt){
  var fireOnThis = obj;
  if( document.createEvent ) {
    var evObj = document.createEvent('MouseEvents');
    evObj.initEvent( evt, true, false );
    fireOnThis.dispatchEvent(evObj);
  } else if( document.createEventObject ) {
    fireOnThis.fireEvent('on'+evt);
  }
}

function swapSubTitle(subTitle, title) {
  if (subTitle!='') {
    document.getElementById('subTitle').innerHTML=subTitle;
  } else {
    document.getElementById('subTitle').innerHTML=title;
  }
}

function swapBreadCrumb(modId, level) {
  var crumb = "breadCrumb"+level;

  var submenu=document.getElementsByTagName("ul")[0];
  var submenu2=submenu.getElementsByTagName("li");
  for (var i=0; i<submenu2.length; i++) {
    var getId = submenu.getElementsByTagName("li")[i];
    var getIdA = document.getElementById(getId.getElementsByTagName("a")[0].id);
    getIdA.setAttribute("class","menuStyleNormal");
    getIdA.parentNode.style.backgroundColor="transparent";
    if (browser.ns6) {
      getIdA.parentNode.setAttribute("onmouseout","this.style.backgroundColor=\"transparent\"");
    } else {
      getIdA.parentNode.onmouseout = function() {this.style.backgroundColor="transparent"}
    }
  }
  var getModId = document.getElementById(modId);
  getModId.setAttribute("class","menuStyle");
  getModId.parentNode.style.backgroundColor="white";
  if (browser.ns6) {
    getModId.parentNode.setAttribute("onmouseout","this.style.backgroundColor=\"white\"");
  } else {
    getModId.parentNode.onmouseout = function() {this.style.backgroundColor="white"};
  }

  //create crumbs

  var teken = "";
  var position=modId.length;
  for (i=0;i<=2;i++) {
    crumb = "breadCrumb"+i;
    document.getElementById(crumb).innerHTML='';
  }
  if (level!=0) {
    for (i=0;i<=level;i++) {
      if (i>0) {
        teken = " > ";
        position = modId.indexOf("-", position+1);
        if (position==-1) {
          position=modId.length;
        }
      }  else if (level>0){
        position = modId.indexOf("-");
      }

      var generateCrumbs = modId.substring(0,position);
      crumb = "breadCrumb"+i;
      document.getElementById(crumb).innerHTML=teken+'<a class="headerNavStyle" href="javascript:fireEvent(document.getElementById(\''+generateCrumbs+'\'),\'click\');">'+ document.getElementById(generateCrumbs).name +'</a>';
    }
  }
}

var orgIframe = "";

function sizeIFrame() {
  var foo = location.search.indexOf("Portal=1");
  try 
  {
    var CdContentIframe = jQuery("#CdContentIframe");
    var innerDoc = (CdContentIframe.get(0).contentDocument) ? CdContentIframe.get(0).contentDocument : CdContentIframe.get(0).contentWindow.document;
  }
  catch(e) 
  {
    foo = 0;
  }
  if (true) 
  {
    if (innerDoc.body!= null) 
    {
      var menuHeight = document.getElementById('menuLeft').offsetHeight;
      var innersquareHeight = document.getElementById('innersquare').offsetHeight-235;

      if (browser.ns6) 
      {
        var contentHeight    = document.getElementById('CdContentIframe').contentDocument.height;
        var checkRightColumn = document.getElementById('CdContentIframe').contentDocument.getElementById("RightColumn");

        if (checkRightColumn && innerDoc.body.scrollHeight > contentHeight) 
        {
          contentHeight = innerDoc.body.scrollHeight;
        }
        
        var headerHeight  = 265;
        var extraSpace    = 55;
        
        var browserHeight       = window.innerHeight;
        var browserHeightMenu   = browserHeight - headerHeight;
        
        if (contentHeight <= browserHeightMenu &&  menuHeight < browserHeightMenu) 
        {
          CdContentIframe.height(browserHeightMenu);
          document.getElementById('innersquare').style.height = browserHeight;
        } 
        else if (contentHeight < browserHeightMenu && menuHeight >= browserHeightMenu) 
        {
          CdContentIframe.height(menuHeight);
          document.getElementById('innersquare').style.height = menuHeight + headerHeight;
        } 
        else if (contentHeight >= browserHeightMenu && menuHeight >= browserHeightMenu  )
        {
          if (contentHeight >= menuHeight && orgIframe+extraSpace != contentHeight) 
          {
            orgIframe = contentHeight;
            CdContentIframe.height(contentHeight + extraSpace);
            document.getElementById('innersquare').style.height = contentHeight+headerHeight;
          } 
          else 
          {
            CdContentIframe.height(menuHeight);
            document.getElementById('innersquare').style.height = menuHeight+headerHeight;
          }
        } 
        else if (contentHeight > browserHeightMenu && menuHeight < browserHeightMenu && orgIframe+extraSpace != contentHeight) 
        {
          orgIframe = contentHeight;
          CdContentIframe.height(contentHeight + extraSpace);
          // add 1 to make sure FF resizes correctly, don't ask me why... (CFA-445)
          document.getElementById('innersquare').style.height = contentHeight + 1 + headerHeight;
        }
      } 
      else 
      {
        var headerHeight  = 235;
        var headerHeight2 = 240;
        var extraSpace    = 55;
        
        var browserHeight       = document.body.clientHeight;
        var browserHeightIframe = browserHeight - headerHeight2;
        var browserHeightMenu   = browserHeight - headerHeight;
        
        if (innerDoc.body.scrollHeight < browserHeightIframe && (menuHeight < browserHeightMenu)) 
        {
          CdContentIframe.height(browserHeightIframe);
          document.getElementById('innersquare').style.height = browserHeight;
        } 
        else if (innerDoc.body.scrollHeight < browserHeightIframe && menuHeight >= browserHeightMenu)
        {
          CdContentIframe.height(menuHeight-5);
          document.getElementById('innersquare').style.height = menuHeight + headerHeight;
        } 
        else if (innerDoc.body.scrollHeight >= browserHeightIframe && menuHeight >= browserHeightMenu)
        {
          if (innerDoc.body.scrollHeight >= menuHeight) 
          {
            CdContentIframe.height(innerDoc.body.scrollHeight + extraSpace);
            document.getElementById('innersquare').style.height = innerDoc.body.scrollHeight + headerHeight;
          } 
          else 
          {
            CdContentIframe.height(menuHeight-5);
            document.getElementById('innersquare').style.height = menuHeight + headerHeight;
          }
        } 
        else if (innerDoc.body.scrollHeight > browserHeightIframe && (menuHeight < browserHeightMenu) && innerDoc.body.scrollHeight != innerDoc.body.offsetHeight) 
        {
          CdContentIframe.height(innerDoc.body.scrollHeight + extraSpace);
          document.getElementById('innersquare').style.height = innerDoc.body.scrollHeight + headerHeight;
        }
      }
    }
  }
}

function testLoaded() {
  var t=setTimeout("sizeIFrame()",1000)
}

function setEvent() {
  if (browser.ns6) {
    try {
      document.getElementById("CdContentIframe").contentWindow.document.addEventListener("overflow", testLoaded, false);
    }
    catch(e) { }
  } 
  else {
    try {
      document.getElementById("CdContentIframe").contentWindow.document.attachEvent("onclick", testLoaded);
    }
    catch(e) { }
  }
}

function swapMenu(m, ev, level, name){

  // set the default level to the first menu-level.
  if (!level)
    level = 0;

  if (ev == 'clear' && activeMenu[level]){
    for (var n=0;n<activeMenu[level].length;n++)
      activeMenu[level][n].className = name + ROLLOUT_MENU_ITEM;
    return;
  }
  var menuItem = document.getElementById(m);


  // test for the menuItem
  if (!menuItem){
    return false; // couldn't find the menuItem
  }
  if (ev == 'click'){
    var orgClassName = menuItem.className;
    var orgId = menuItem.id;

    // active menuitem is deselected
    if (activeMenu[level]) {
      activeMenu[level][0].className = name + ROLLOUT_MENU_ITEM;
    }

    // selected menuitem is set as the new active menuitem
    activeMenu[level] = new Array(menuItem, name);

    if(name == 'unit')
    {
      if(activeMenu[level][0].id == orgId)
      {
        if(orgClassName == name + ROLLOUT_MENU_ITEM)
        {
          activeMenu[level][0].className = name + CLICK_MENU_ITEM;
        }
        else
        {
          activeMenu[level][0].className = name + ROLLOUT_MENU_ITEM;
        }
      }
      else
      {
        activeMenu[level][0].className = name + CLICK_MENU_ITEM;
      }
    }
    else
    {
      if(autoClick == true)
      {
        if(name == 'compoundItem')
        {
          var topMenu = activeMenu[2][0];
          var allDivs = topMenu.getElementsByTagName("DIV");
          var unitFound = false
          var i=0;
          while(!unitFound && i<allDivs.length)
          {
            if(allDivs[i].contains(activeMenu[level][0]) && allDivs[i].id.substring(0, 4) == 'unit')
            {
              unitFound = true;
            }
            else
            {
              i++;
            }
          }
          if(unitFound)
          {
            // Unit
            allDivs[i].className = 'unit' + CLICK_MENU_ITEM;
          }
          autoClick = false;
        }
      }
      activeMenu[level][0].className = name + CLICK_MENU_ITEM;
    }
  }

  if (activeMenu[level] && menuItem == activeMenu[level][0])
    return;
  if (ev == 'rollover')
    menuItem.className = name + ROLLOVER_MENU_ITEM;
  if (ev == 'rollout')
    menuItem.className = name + ROLLOUT_MENU_ITEM;
}

// this function will loop through all active menu-items on the screen and neutralize their styles
function start(){
  for (var n=0;n<activeMenu.length;n++){
    if (activeMenu[n]){
      activeMenu[n][0].className = activeMenu[n][1] + ROLLOUT_MENU_ITEM;
      activeMenu[n] = null;
    }
  }
}

function swapText(t, el){
  if (!el) return false;
  var elObj = document.getElementById(el);
  // if element doesn't exists return
  if (!elObj) return false;
  elObj.innerHTML = t;
}

function swapLink(id, ev){
  if (!id) return false;
  var elObj = document.getElementById(id);
  if (ev == 'click')
    elObj.click();
}

/**
    Omdat een Iframe niet goed werkt bij safari, wordt in deze functie de breedte en de hoogte gezet voor het Iframe.
*/
function resizeIframe() {
  //browsers.??? is een object van detections.js
  if (browser.saf == 1 || browser.opera == 1) {
    var elementFrame = document.getElementById("CdContentIframe");
    if (elementFrame) {
      elementFrame.style.top = 144;
      elementFrame.style.left = 200;
      elementFrame.style.height = window.innerHeight - 162;
      elementFrame.style.width = window.innerWidth - 200;
    }
  }
}

window.onresize = resizeIframe;

String.prototype.count = function(match) {
var res = this.match(new RegExp(match,"g"));
if (res==null) { return 0; }
return res.length;
}


function checkQueryString() {
  var gevonden = false;
  qs();
  if (qsParm['url']!=null)
  {
    var eFrame = document.getElementById("CdContentIframe");
    eFrame.src = qsParm['url'];
    //breadcrumb
    var pageURL = qsParm['url'].toString().replace(".htm", "").replace(".aspx", "");
    var id = "mod_menu_"+pageURL.substring(pageURL.indexOf("webpage")+7);
    var countLevel = id.count("-");
    if (countLevel==1){
      var x = document.getElementById(id).parentNode.parentNode.parentNode;
      fireEvent(x.parentNode.getElementsByTagName("a")[0],'click');
    } else if (countLevel==2){
      fireEvent(document.getElementById(id).parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.getElementsByTagName("a")[0], 'click');
      fireEvent(document.getElementById(id).parentNode.parentNode.parentNode.parentNode.getElementsByTagName("a")[0],'click');
    }
    fireEvent(document.getElementById(id),'click');
  }
  else
  {
    var foo = location.search.replace("?Portal=1","");
    if (foo != "")
    {
      var requestLink = location.search.replace("?", "");
      var rest = "";
      requestLink = requestLink.replace(".htm", "").replace(".aspx", "");
      var requestLinkId="mod_menu_" + (requestLink.substring(requestLink.indexOf("webpage")+7)).toString();
      if(requestLink.indexOf("&")>=0)
      {
        rest = requestLink.substring(requestLink.indexOf("&"));
        requestLink = requestLink.substring(0,requestLink.indexOf("&"));
        requestLinkId = "mod_menu_" + (requestLink.substring(requestLink.indexOf("webpage")+7)).toString();
      }
      var elementFrame = document.getElementById("CdContentIframe");
      if (document.getElementById(requestLinkId)) 
      {
        var countLevel = requestLinkId.count("-");
        if (countLevel==1)
        {
          var x = document.getElementById(requestLinkId).parentNode.parentNode.parentNode;
          fireEvent(x.parentNode.getElementsByTagName("a")[0],'click');
        } 
        else if (countLevel==2)
        {
          fireEvent(document.getElementById(requestLinkId).parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.getElementsByTagName("a")[0], 'click');
          fireEvent(document.getElementById(requestLinkId).parentNode.parentNode.parentNode.parentNode.getElementsByTagName("a")[0],'click');
        }
        fireEvent(document.getElementById(requestLinkId),'click');
        //elementFrame.src = requestLink;
        gevonden = true;
      }
      //Als er geen pagina gevonden is, dan naar de default pagina
      if (!gevonden) 
      {
        document.getElementById('mod_menu_0').onclick();
        document.getElementById('mod_menu_0').onclick();
        alert("Deze pagina (" + requestLink + ") is niet bekend binnen deze additional. ");
      }
    } 
    else 
    {
      document.getElementById('mod_menu_0').onclick();
    }
  }
}

function qs() {
  var query = window.location.search.substring(1);
  var parms = query.split('&');
  qsParm['url']= null;
  for (var i=0; i<parms.length; i++) {
    var pos = parms[i].indexOf('=');
    if (pos > 0) {
      var key = parms[i].substring(0,pos);
      var val = parms[i].substring(pos+1);
      qsParm[key] = val;
    }
  }
}