﻿
//------------------------------------------------------------------------------------------------------------------
// Wp.NavigationMenu
//------------------------------------------------------------------------------------------------------------------

Wp.NavigationMenu = function() {
	var me = this;
	
	this.head_prov = undefined;
	this.head_reg = undefined;
	this.reg_provincie = undefined;
	this.opendiv = undefined;
	
	Wp.General.RegisterEvent(window, "load", function() {me.OnLoad();} );
}

//desc: in de onload wordt het submenu van de regio's al gevuld
Wp.NavigationMenu.prototype.OnLoad = function() {
	var me = this;

	// event voor zoekbutton
	Wp.General.RegisterEvent($("navigation_submit"), "mousedown", function() { $("navigation_submit").src = "/img/images/head_submit_over.png"; });
	Wp.General.RegisterEvent($("navigation_submit"), "mouseup", function() { $("navigation_submit").src = "/img/images/head_submit.png"; });

	// events voor zoekveld
	Wp.General.RegisterEvent($("navigation_search"), "focus", function(e) { me.OnSearchValidate(e); });
	Wp.General.RegisterEvent($("navigation_search"), "blur", function(e) { me.OnSearchValidate(e); });

	Wp.General.RegisterEvent($("navigation_search"), "keydown", function(e) {
		var keyCode; if (e) { keyCode = e.keyCode; } else { keyCode = window.event.keyCode; }
		if (keyCode == 13) {
			Wp.Instances.NavigationMenu.Search($("navigation_submit").parentNode);
		}
	});

	this.head_prov = $('head_prov');
	this.head_reg = $('head_reg');
	this.reg_provincie = $('reg_provincie')

	// toevoegen van provincies aan div.head_prov_sub_middle
	var provs = Wp.General.GetElementsByClass(this.reg_provincie, "prov");
	var sub_middle = this.GetSubMiddle(this.head_prov);

	for (var i = 0; i < provs.length; i++) {
		var p = provs[i].childNodes[0].nodeType == 1 ? provs[i].childNodes[0] : provs[i].childNodes[1];
		p = sub_middle.appendChild(p.cloneNode(true));
		if (p.innerHTML.indexOf(this.GetSpan(this.head_prov).innerHTML) > -1) {
			var reg_sub_middle = this.GetSubMiddle(this.head_reg);
			var reg_nr = p.className.split("_")[1];
			var reg_sub = this.GetSub(this.head_reg);
			var reg_span = this.GetSpan(this.head_reg);
			var regs = $('regs_' + reg_nr);
			var regios = regs.getElementsByTagName('a');
			Wp.General.Object.DeleteChildren(reg_sub_middle);
			for (var ii = 0; ii < regios.length; ii++) {
				var r = reg_sub_middle.appendChild(regios[ii].cloneNode(true));
				r.className = "reg"
				Wp.General.RegisterEvent(r, "click", function(e) { me.OnRegClick(e) });
			}
		}
		Wp.General.RegisterEvent(p, "click", function(e) { me.OnProvClick(e) });
	}

	// initialiseren onclick dropdown
	Wp.General.RegisterEvent(this.GetSpan(this.head_prov), "click", function(e) { me.OpenHeadMenu(e, 1) });
	Wp.General.RegisterEvent(this.GetDropDown(this.head_prov), "click", function(e) { me.OpenHeadMenu(e, 1) });

	Wp.General.RegisterEvent(this.GetSpan(this.head_reg), "click", function(e) { me.OpenHeadMenu(e, 2) });
	Wp.General.RegisterEvent(this.GetDropDown(this.head_reg), "click", function(e) { me.OpenHeadMenu(e, 2) });

}

Wp.NavigationMenu.prototype.GetSpan = function(head) {var p = head.childNodes;return p[0].nodeType==1?p[0]:p[1];}
Wp.NavigationMenu.prototype.GetDropDown = function(head) {var p = head.childNodes;return p[0].nodeType==1?p[1]:p[3];}
Wp.NavigationMenu.prototype.GetSub = function(head) {var p = head.childNodes;return p[0].nodeType==1?p[2]:p[5];}
Wp.NavigationMenu.prototype.GetSubMiddle = function(head) {var p = this.GetSub(head).childNodes;return p[0].nodeType==1?p[1]:p[3];}

//desc: openen head menu
//params:
//	typeNr=1 head_prov
//	typeNr=2 head_reg
Wp.NavigationMenu.prototype.OpenHeadMenu = function(e, typeNr) {
	var targ = Wp.General.EventSrv(e)

	var me = this;

	// bepalen head & menu
	var head = targ.parentNode;
	var menu = this.GetSub(head);
	if (typeNr == 2) {
		var rsm = this.GetSubMiddle(head);
		if (rsm && (rsm.innerHTML == "")) {
			rsm.innerHTML = "<p>Kies eerst een provincie</p>";
		}
	}

	// weergeven popup
	if (Wp.General.GetStyle(menu, 'display') == "none") {
		head.style.backgroundImage = "url(/img/images/nav" + typeNr + "_over.png)";
		menu.style.display = "block";
		if (head.id == "head_prov") { this.GetSub(this.head_reg).style.display = "none"; }
		if (head.id == "head_reg") { this.GetSub(this.head_prov).style.display = "none"; }
		this.opendiv = menu;
	} else {
		head.style.backgroundImage = "url(/img/images/nav" + typeNr + ".png)";
		menu.style.display = "none";
	}
	Wp.General.RegisterEvent(document, "mousedown", md = function(e) { me.OnMouseDown(e, md) });
}

Wp.NavigationMenu.prototype.OnProvHit = function(cn) { return (cn=="head_dropdown")||(cn=="prov_span")||(cn=="head_prov_sub_top")||(cn=="head_prov_sub_bottom")||(cn=="head_prov_sub_middle")||(cn.indexOf("prov_")==0); }
Wp.NavigationMenu.prototype.OnRegHit = function(cn) { return (cn=="head_dropdown")||(cn=="reg_span")||(cn=="head_reg_sub_top")||(cn=="head_reg_sub_bottom")||(cn=="head_reg_sub_middle")||(cn=="reg"); }

// desc: sluiten head menu
Wp.NavigationMenu.prototype.OnMouseDown = function(e, md) {
	var targ = Wp.General.EventSrv(e)
	
	if (this.opendiv) {
		if (!this.OnProvHit(targ.className) && !this.OnRegHit(targ.className)) {
			this.opendiv.style.display = "none";
			if (this.opendiv.parentNode.id == "head_prov") {
				this.opendiv.parentNode.style.backgroundImage="url(/img/images/nav1.png)";
			} else {
				this.opendiv.parentNode.style.backgroundImage="url(/img/images/nav2.png)";
				var reg_span = this.GetSpan(this.head_reg);
				if (reg_span.innerHTML=="") {
					reg_span.innerHTML = "Kies uw regio"
				}
			}
			this.opendiv = undefined;
			Wp.General.UnregisterEvent(document, "mousedown", md);
		}
	}
}

// desc: click op een provincie
Wp.NavigationMenu.prototype.OnProvClick = function(e) {
	var targ = Wp.General.EventSrv(e)
	var reg_nr = targ.className.split("_")[1];
	var me = this;

	if (reg_nr == -1) {
		Wp.NavigateAndWait(targ.href);
		return;
	}

	var reg_sub_middle = this.GetSubMiddle(this.head_reg);
	var reg_sub = this.GetSub(this.head_reg);
	var reg_span = this.GetSpan(this.head_reg);
	var regs = $('regs_' + reg_nr);

	var prov_span = this.GetSpan(this.head_prov);
	var prov_sub = this.GetSub(this.head_prov);

	// geselecteerde regio in lijst zetten
	Wp.General.Object.DeleteChildren(reg_sub_middle);
	var regios = regs.getElementsByTagName('a');
	for (var i = 0; i < regios.length; i++) {
		var r = reg_sub_middle.appendChild(regios[i].cloneNode(true));
		r.className = "reg"
		Wp.General.RegisterEvent(r, "click", function(e) { me.OnRegClick(e) });
	}

	// tekst in span weergeven
	prov_span.innerHTML = targ.innerHTML;
	reg_span.innerHTML = "";

	$('navigation_prov').value = targ.innerHTML;
	$('navigation_reg').value = "";

	// verbergen van prov dropdown, weergeven reg dropdown
	prov_sub.style.display = "none";
	reg_sub.style.display = "block";
	this.opendiv = reg_sub;

	// knoppen bijwerken
	this.head_prov.style.backgroundImage = "url(/img/images/nav1.png)";
	this.head_reg.style.backgroundImage = "url(/img/images/nav2_over.png)";

	var me = this;
	Wp.General.RegisterEvent(document, "mousedown", md = function(e) { me.OnMouseDown(e, md) });
	return false;
}

//desc: click op een regio
Wp.NavigationMenu.prototype.OnRegClick = function(e) {
	var targ = Wp.General.EventSrv(e)
	var reg_span = this.GetSpan(this.head_reg);
	var reg_sub = this.GetSub(this.head_reg);

	$('navigation_reg').value = targ.innerHTML;
	reg_span.innerHTML = targ.innerHTML;
	reg_sub.style.display = "none";
	this.head_reg.style.backgroundImage = "url(/img/images/nav2.png)";
	this.Search(targ);
}

Wp.NavigationMenu.prototype.OnSearchValidate = function(e) {
	var targ = Wp.General.EventSrv(e);
	if(targ.value=="Wat zoekt u?"){ targ.value=""; }
	else if(targ.value==""){targ.value="Wat zoekt u?"; }
}

Wp.NavigationMenu.prototype.Search = function(obj) {
	var v = $("navigation_search").value.replace("Wat zoekt u?", "");
	var href = obj.href;
	if (href.indexOf("?") > -1) {
		href = href.substring(0, href.indexOf("?"));
	}
	if (v != "") {
		href += "?ctxZoekterm=" + escape(v);
	}

	Wp.NavigateAndWait(href);
	return false;
}



Wp.Instances.NavigationMenu = new Wp.NavigationMenu();
