//website
var winkelMenuIsInit = false;

function Hash(url) {
   this.mainId = '';
   this.subId = '';
   this.trg = '';
   url = removeStartHash(url);
   var args = url.split('&');
   //args[0]= main=xxxx, arg[1]=sub=yyyy
   for(var i = 0; i < args.length; i++) {
      var arg = args[i];
      //alert('arg='+arg);
      var rgl = arg.split('=');
      var leftRgl = rgl[0];
      var rightRgl = '';
      if(rgl.length > 1) {
         rightRgl = rgl[1];
      }
      //alert('left: '+leftRgl+' right: '+rightRgl);

      switch (leftRgl) {
         case 'main':
            this.mainId = rightRgl;
            break;
         case 'sub':
            this.subId = rightRgl;
            break;
         case 'trg':
            this.trg = rightRgl;
            break;
         default:
            this[leftRgl] = rightRgl;
            break;
      }
   }
}

Hash.prototype.toString = function() {
   return 'main=' + this.mainId + '&sub=' + this.subId + '&trg=' + this.trg;
}

Hash.prototype.isValidItem = function(item) {
   if(this[item]) {
      if(trim(this[item]) !== '') {
         return true;
      }
   }
   return false;
}

Hash.prototype.isEmpty = function() {
   return !(this.isValidItem('mainId') || this.isValidItem('subId') || this.isValidItem('trg'));
}
function goUp(area) {
   //er wordt op de pijl gedurkt
   var newHash = new Hash(document.location.hash);
   if(newHash.trg == '') {
      var ctPnl = document.getElementById('pnlContent');
      ctPnl.scrollTop = 0;
   } else {
      newHash.trg = '';
      window.location.hash = newHash.toString();
   }
   //	ctPnl.scrollTop=0;
   //	alert('goUp');
   return (false);
}

function getUrl() {
   document.write('index2.htm&main=1&sub=2');
}

function getFullTarget() {
   return ('main=' + mainId + '&sub=' + subId + '&trg=' + trg);
}

function contentPanelScroll() {
   var pijl = document.getElementById('pijlNaarBoven');
   var ctPnl = getContentPanel();
   if(ctPnl.scrollTop == 0) {
      pijl.style.display = 'none'
   } else {
      pijl.style.display = 'inline';
   }
   return (true);
}

function saveWerkmaterialenAsPdf(btn) {
   //alert('ok');
   var url = './PHP/werkmaterialenToPdf.php';
   window.open(url);
   return (false);
}

function getDefaultMainMenuItem() {
   var mmi = getMainMenuItem('stap');
   //alert(mmi['caption']);
   return (mmi);
}

function getDefaultSubMenuItem(sMain) {//sMain is een string,niet de array
   var mmi = getMainMenuItem(sMain);
   var defaultChild = mmi['defaultChild'];
   var childs = mmi['childs'];
   for(var i = 0; i < childs.length; i++) {
      var ch = childs[i];
      if(ch['id'] == defaultChild) {
         return (ch);
      }
   }
}

function setDefaultUrl() {
   var mmi = getDefaultMainMenuItem();
   mainId = mmi['id'];
   var smi = getDefaultSubMenuItem(mainId);
   subId = smi['id'];
   //showUrlParams();
}

function mainMenuItemHasChilds(mmi) {
   var childs = mmi['childs'];
   return (childs.length > 0);
}

function parseUrlParams() {
   //deze function zorgt altijd voor een geldige mainId en subId
   mainId = '';
   //globale variabelen
   subId = '';
   trg = '';
   var mmi;
   //mainMenuItem
   var smi;
   //subMenuItem

   var hash = new Hash(window.location.hash);
   if(hash.isEmpty()) {
      setDefaultUrl();
      //geen parameters
      return;
   }
   mmi = getMainMenuItem(hash.mainId);
   mainId = mmi['id'];
   subId = hash.subId;
   smi = getSubMenuItem(mainId, subId);
   if(mainMenuItemHasChilds(mmi) && (!defined(smi))) {
      //alleen bij ongeldige mainMenuItem
      if(checkUrl) {
         alert('Onbekend subMenuItem: ' + subId);
      }
      setDefaultUrl();
   }
   if((subId == '') && (mainMenuItemHasChilds(mmi))) {//geen sub in params => neem huidige mainID met default subID;
      subId = getDefaultSubMenuItem(mainId)['id'];
   }
   trg = hash.trg;
   //nodig voor het diep linken van een pagina.
}

function loadContent() {
   //gaat ervan uit dat de mainId en de subId valid zijn
   //alert('loadContent '+getUrlInfo());
   var ctPnl = document.getElementById('pnlContent');
   var url = '';
   var mmi = currMainMenuItem();
   var params = '';
   
   //de location is hier nog niet aangepast. daarom:
   addToLog(getFullTarget());
   if(mmi['id'] == 'fotos') {
      //fotos laden
      loadFotosInContent(ctPnl, currSubMenuItem());
   } else {
      if(mmi['childs'].length == 0) {
         url = mmi['url'];
      } else {
         if(mmi == getMainMenuItem('winkel')) {
            //alert(subId); //subID is hier het artikelId;
            params = 'artikelGroepId=' + subId;
            url = './PHP/artikelGroepPage.php';
            url = url + '?' + params;
         } else {
            var smi = currSubMenuItem();
            url = smi['url'];
         }
      }
      try {
         params += '&time=' + timeStamp();
         document.body.style.cursor = "wait";
         var result = loadPage(url, params);
         //alert(result);
         //result='Dit is een test';
         ctPnl.innerHTML = result;

         //aanroepen initFunctie
         if(smi && smi.initFunc) {
            smi.initFunc();
         }
         goToTrg();
         document.body.style.cursor = "default";
      } catch (err) {
         ctPnl.innerHTML = 'Kan ' + url + ' niet vinden. ' + err;
      }
   }
   scrollContentPanelToTrg();
   doResize('loadContent');
   setTimeout('doResize("timeout")', 500);
}

function offsetTopToBody(elt) {
   var curTop = 0;
   while(elt) {
      curTop += elt.offsetTop;
      elt = elt.offsetParent;
   }
   return curTop;
}

function scrollWindow(container, elt) {
   if(false) {
      container.scrollTo(elt) //werkt niet in IE?
   } else {
      var yScrollWindow = offsetTopToBody(container);
      var yElt = offsetTopToBody(elt);
      container.scrollTop = yElt - yScrollWindow;
   }
}

function goToTrg() {
   if(trg != '') {
      var found = false;
      var contentPanel = getContentPanel();
      for(var i = 0; i < document.anchors.length; i++) {
         //alert(document.anchors[i].name);
         if(trg == document.anchors[i].name) {
            var anchor = document.anchors[i];
            if(startsWith(trg, 'art_')) {
               //het is een artikel in de winkel
               var th = findParentByTagName(anchor, 'TR');
               if(th) {
                  th.style.backgroundColor = '#FFFFFF';
               }

            }
            found = true;
            break;
         }
      }
      if(found) {
         scrollWindow(contentPanel, anchor);
      }
   }
}

function getBaseArtikelenURL() {
   return ('./artikelen/');
}

function drawMainMenuCaption() {
   var div = document.getElementById('pnlHeader');
   //alert(currMainMenuItem());
   var capt = document.getElementById('captDiv');
   var txt = currMainMenuItem()['caption'];
   txt = txt.toUpperCase();
   var txtNode = capt.firstChild;
   txtNode.nodeValue = txt;
   capt.style.marginLeft = Math.round((div.offsetWidth - capt.offsetWidth) / 2) - 10 + 'px';
   //alert(div.offsetWidth);
   var co = currMainMenuItem()['color'];
   capt.style.backgroundColor = co;
   div.style.backgroundColor = co;
   //document.getElementById('pijlDiv').style.backgroundColor=co;
}

function setContentColor() {
   ct = document.getElementById('pnlContent');
   ct.style.backgroundColor = currMainMenuItem()['color'];
}

function getColorBtn(btnDiv) {
   var ids = btnDiv.id.split(',');
   var mId = ids[0];
   var sId = ids[1];
   //alert('zoekSubId: '+sId+' ,currentSubId: '+subId);
   var mi = getSubMenuItem(mId, sId);
   if(sId == subId) {
      var color = getMainMenuItem(mId)['color'];
      return getMainMenuItem(mId)['color'];
      //geselecteerd => kleur mainMenuItem
   } else {
      return ('#FF8888');
      //standaardkleur buttons
   }
}

function findBtns() {
   var hdr = document.getElementById('pnlMainMenu');
   var chlds = getAllChilds(hdr);
   var btns = Array();
   for(var i = 0; i < chlds.length; i++) {
      //alert(i+' '+chlds[i].tagName);
      if((chlds[i].nodeType == 1) && (chlds[i].tagName == 'DIV')) {
         btns.push(chlds[i]);
      }
   }
   return btns;
}

function setSelectedInfo(spanBtn) {
   var ids = spanBtn.id.split(',');
   mainId = ids[0];
   subId = ids[1];
   trg = '';
}

function showSelectedBtn(divBtn) {
   var btns = findBtns();
   for(var i = 0; i < btns.length; i++) {
      btns[i].style.backgroundColor = getColorBtn(btns[i]);
   }
}

function menuBtnClick(btn) {
   sluitFotoZoomPanel();
   setSelectedInfo(btn);
   //zet mainIdx,subIdx
   showSelectedBtn(btn);
   setContentColor();
   loadContent();
   var tmp = getFullTarget();
   dhtmlHistory.add(tmp, tmp);
}

function clearHeader() {
   var hdr = document.getElementById('pnlMainMenu');
   while(hdr.hasChildNodes()) {
      hdr.removeChild(hdr.firstChild);
   }
}

function drawBtns() {
   var hdr = document.getElementById('pnlMainMenu');
   clearHeader();
   var subMenuItems = currMainMenuItem()['childs'];

   if(subMenuItems.length == 0) {
      //hdr.style.display="none"; //dit geeft problemen met agenda
   } else {
      for(var btnIdx = 0; btnIdx < subMenuItems.length; btnIdx++) {
         var mi = subMenuItems[btnIdx];
         //alert(mi['id']);
         if(mi.visible) {
            var miUI = createMenuItem(hdr, mi);
         }
      }
   }
}

function getMainMenuItem(mId) {
   for(var i = 0; i < menu.length; i++) {
      if(menu[i]['id'].toLowerCase() == mId.toLowerCase()) {
         return (menu[i]);
      }
   }
   //er is iets mis
   if(checkUrl) {
      alert('Onbekend mainMenuItem: ' + mainId);
   }
   return (getDefaultMainMenuItem());
}

function getSubMenuItem(mId, sId) {
   var mmi = getMainMenuItem(mId);
   var smi;
   if( typeof (mmi) == 'undefined') {
      mmi = getDefaultMainMenuItem();
      if(checkUrl) {
         alert('Kan MainMenuItem bij het zoeken naar het subMenuItem niet vinden. MainMenuItem: ' + mId);
      }
      return (null);
   }
   var subMenuItems = mmi['childs'];
   if(sId == '') {
      return (getDefaultSubMenuItem(mId));
   }

   for(var i = 0; i < subMenuItems.length; i++) {
      var subId = subMenuItems[i]['id'];
      var equal = false;
      if( typeof (subId) == 'number') {//artikelgroep bij winkel heeft een integer als id
         equal = (subId == sId)
      } else {
         equal = subMenuItems[i]['id'].toLowerCase() == sId.toLowerCase();
      }

      if(equal) {
         return (subMenuItems[i]);
      }
   }
   //je kunt de subMenuItem niet vinden bij een geldige mainId
   if(checkUrl) {
      alert('Kan submenuItem: ' + sId + ' niet vinden');
   }
   smi = getDefaultSubMenuItem(mId);
   return (smi);
}

function currSubMenuItem() {
   return (getSubMenuItem(mainId, subId));
}

function currMainMenuItem() {
   return (getMainMenuItem(mainId));
}

function selectSubMenuItem(newMainId, newSubId) {//newMainIDx<0 => dezelfde mainIdx
   var mainIdxChanged = false;
   if(newMainId != '') {
      mainIdxChanged = (newMainId != mainId);
      mainId = newMainId;
   }
   subId = newSubId;
   return currMainMenuItem();
}

function showUrlParams() {//voor debuggen
   alertNav('mainId: ' + mainId + ', subId: ' + subId + ', trg: ' + trg);
}

function getContentPanel() {
   return (document.getElementById('pnlContent'));
}

function scrollContentPanelToTrg() {
   var ctPnl = getContentPanel();
   if(trg == '' || typeof (trg) == 'undefined') {
      ctPnl.scrollTop = 0;
   } else {
      //alert('trg='+trg);
      //alertNav('scrollTo Trg:'+trg);
      for(var i = 0; i < document.anchors.length; i++) {
         if(document.anchors[i].name == trg) {
            //alert('scrollTo: '+trg);
            //ctPnl.scrollTo(document.anchors[i]); //prototype methode
            //document.anchors[i].offsetParent.scrollTo(document.anchors[i]); //werkt helemaal niet
            //ctPnl.scrollTop=document.anchors[i].offsetTop; //scrollt te ver door??

            //document.anchors[i].scrollIntoView(true); //ziet automatisch het goede scroll window
            scrollWindow(ctPnl, document.anchors[i]);
            break;
         }
      }
   }
};

function handleBestelling(urlSubId, urlTrg) {
   switch (urlSubId) {
      case 'overzichtBesteld':
         showOverzichtBesteld(urlTrg);
         break;
   }
}

function navigateToNewUrl(url) {
   //wordt alleen aangeroepen bij een verandering van main
   //alert('navigateToNewUrl: main='+urlMainId+' sub:'+urlSubId+' trg:'+urlTrg);

   if(url.mainId == 'bestellen') {
      handleBestelling(url.subId, url.trg);
      return;
   }
   if(menu.length == 0) {
      initMenu();
   }
   if(url.mainId != mainId) {
      //nieuwe mainId
      sluitFotoZoomPanel();
      if(url.mainId == '') {//startup, geen params
         alertNav('geen params')
         setDefaultUrl();
         //showUrlParams();
         //initMenu();
      } else {
         alertNav('nieuw mainId');
         mainId = getMainMenuItem(url.mainId)['id'];
         //is meestal gelijk aan urlMainId
         var smi = getSubMenuItem(mainId, url.subId);
         if(defined(smi)) {
            subId = smi['id'];
         } else {
            /* 2 situaties:
             1. er zijn geen kinderen (bv. agenda)
             2. er zijn kinderen, maar hij kan het kind niet vinden.
             */
            if(checkUrl) {
               var mmi = getMainMenuItem(mainId);
               var childs = mmi['childs'];
               if(childs.length != 0) {
                  alert('kan submenuitem niet vinden met maindId=' + mainId + ' en subId=' + urlSubId);
               }
            }
            subId = '';
         }
         trg = url.trg;
      }
      drawMainMenuCaption();
      drawBtns();
      setContentColor();
      loadContent();
      return;
   }
   if(urlSubId != subId) {
      alertNav('gelijke mainID, verschillende subId');
      subId = getSubMenuItem(mainId,url.subId)['id'];
      trg = url.trg;
      drawBtns();
      setContentColor();
      loadContent();
      return;
   }
   //alleen de trg is veranderd
   //alert('alleen de trg is veranderd');
   trg = url.trg;
   scrollContentPanelToTrg();
   showUrlParams();
}

function openFilm(fn) {
   var url = './PHP/showFilm.php';
   var params = 'fn=./film/' + fn + '&w=540&h=480';
   //alert(params);
   window.open(url + "?" + params, 'filmpje', 'fullscreen');
}
