//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='';
	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){
	//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=vormelingenDag/'+fn+'&w=540&h=480';
	//alert(params);
	window.open(url+"?"+params,'filmpje','fullscreen');				
}
