// ============================================================
// tweakables
// ============================================================

// toon uitklapmenu's bij een onclick ('click'), of bij een mouseover ('hover')?
var navEventMode = 'hover'; // hover | click

// doe SEF url-rewriting op shopfilters?
// bijv. "/shop/index.php?option=com_includer&view=includer&Itemid=53&shopPage=list&shopFilters=special:1" wordt "/shop/products/list/53/special:1/"
var shopURLsMakeSEF = 1;	// 1 | 0

// ============================================================
// catch event
// document.onmousedown = function (mouseEvent) {
// document.onmousedown = handleEvent;
// ============================================================

function handleEvent(mEvent) {
	if (!mEvent) {
		var e = window.event.srcElement;	// Internet Explorer
	} else if (mEvent.srcElement) {
		var e = mEvent.srcElement;	// Internet Explorer
	} else if (mEvent.target) {
		var e = mEvent.target;		// Netscape and Firefox
	}

	return e;
	//alert(e.nodeName);
}


var curMenuOpen = 0;

// elke klik op een element wordt via deze functie verwerkt
function shopMouseDown(objSrc) {
	focusOnInput = 0;

	// staat er een uitklapmenu open?
	if (curMenuOpen) {

		// check of element waarop geklikt is niet het huidige openstaande uitklapmenu is...
		var objParent = objSrc;
		while (objParent.id != ('shopNavMenu'+curMenuOpen) && objParent.nodeName != 'HTML') {
			objParent = objParent.parentNode;
		}

		// element waarop geklikt is, is het huidig openstaande uitklapmenu! breek af.
		if (objParent.id == ('shopNavMenu'+curMenuOpen)) return;

		// verberg uitklapmenu
		el('shopDiv'+curMenuOpen).style.backgroundColor = 'transparent';
		el('shopNavMenu'+curMenuOpen).style.visibility = 'hidden';
		el('shopLink'+curMenuOpen).style.borderBottomWidth = '0px';
		//el('shopLink'+curMenuOpen).className = 'shopBut'; //'0px';
		curMenuOpen = 0;
	}
}

// elke mouseover op een element wordt via deze functie verwerkt
function shopMouseOver(objSrc) {
	focusOnInput = 0;

	//top.document.title = objSrc.nodeName + ', id=' + objSrc.id;

	if (curMenuOpen) {

		// check of element waarop geklikt is niet het huidige openstaande uitklapmenu is...
		var objParent = objSrc;
		while (!objParent.id.match(/^(shopNavMenu|shopDiv)/) && objParent.nodeName != 'HTML') {
			objParent = objParent.parentNode;
		}

		if (objParent.id.match(/^(shopNavMenu|shopDiv)/)) {
			//top.document.title = 'menu!';
			return;
		}

		//top.document.title = objSrc.nodeName + ', id=' + objSrc.id;

		// verberg uitklapmenu
		el('shopDiv'+curMenuOpen).style.backgroundColor = 'transparent';
		el('shopNavMenu'+curMenuOpen).style.visibility = 'hidden';
		el('shopLink'+curMenuOpen).style.borderBottomWidth = '0px';
		curMenuOpen = 0;
	}

}

// onclick, bijv. <a href='javascript://' onclick="navButClick(this, 303, 'right')">
function navButClick(objSrc, catId, hAlign) {
	var objDiv = objSrc.parentNode;

	//var divPos = new Array(obj_curleft(objDiv), obj_curtop(objDiv));
	var divPos = new Array(objDiv.offsetLeft, objDiv.offsetTop);

	objDiv.style.backgroundColor = '#2A2A2A';


	var menuLeftPos = (hAlign == 'left') ? divPos[0] : (divPos[0] + objDiv.offsetWidth - el('shopNavMenu'+catId).offsetWidth);
	var menuTopPos = divPos[1]+objDiv.offsetHeight;

	// IE7 fix:
	if (is_ie) {
		menuLeftPos = obj_curleft(objDiv) - obj_curleft(el('shopHeader'));
		if (hAlign == 'right') {
			menuLeftPos = menuLeftPos + objDiv.offsetWidth - el('shopNavMenu'+catId).offsetWidth;
		}

		menuTopPos = obj_curtop(objDiv) - obj_curtop(el('shopHeader')) + objDiv.offsetHeight;
	}

	el('shopNavMenu'+catId).style.left = menuLeftPos + 'px';
	el('shopNavMenu'+catId).style.top  = menuTopPos + 'px';
	el('shopNavMenu'+catId).style.visibility = 'visible';
	el('shopLink'+catId).style.borderBottomWidth = '2px';

	curMenuOpen = catId;
}

// onmouseover, bijv. <a href='javascript://' onmouseover="navButHover(this, 303, 'right')">
function navButHover(objSrc, catId, hAlign) {

	// verberg het oude menu
	if (curMenuOpen && curMenuOpen != catId) {

		// verberg uitklapmenu
		el('shopDiv'+curMenuOpen).style.backgroundColor = 'transparent';
		el('shopNavMenu'+curMenuOpen).style.visibility = 'hidden';
		el('shopLink'+curMenuOpen).style.borderBottomWidth = '0px';
		curMenuOpen = 0;
	}

	// toon het nieuwe menu
	navButClick(objSrc, catId, hAlign);
}


function el(el) {
	return document.getElementById(el);
}

// ---------------------------------------------

var focusOnInput = 0;

document.onmousedown = function(event) {
	if (navEventMode == 'click' || focusOnInput) {
		shopMouseDown(
			handleEvent(event)
		);
	}
}

document.onmouseover = function(event) {
	if (navEventMode == 'hover' && !focusOnInput) {
		shopMouseOver(
			handleEvent(event)
		);
	}
}

// ---------------------------------------------

function filterMenuItemClick(fieldName, fieldValue) {
	// declareer wat variabelen
	var formName 	= 'formFilters';
	var formSearch 	= 'formSearch';
	var groupNames 	= new Array();

	// kopieer value van de door-user-aangeklikte menu-item naar het corresponderende input-field
	document.forms[formName].elements[fieldName].value = fieldValue;

	// begin de URL-string die we straks aanroepen om de results te refreshen, met het search-veld
	//var strURL = 'search:' + document.forms[formSearch].elements['search'].value.replace(/[\:\;]/g, '') + ';';

	// JS 30-jun-10: stuur geen search-field door met filter-opdracht
	var strURL = '';

	// loop door input-fields en groepeer deze op basis van de veld-prefix
	for (var i=0; i < document.forms[formName].elements.length; i++) {
		var objElement = document.forms[formName].elements[i];

		// inputfield-name is bijv. "categories_color", filter de groupname "categories" hieruit
		var groupName = objElement.name.replace(/^([^_]+)_(.+)$/i, '$1');

		// indien deze group-variabele nog niet is gezet, doe dat dan nu
		if (eval('typeof('+groupName+')') == 'undefined') {
			eval("var "+groupName+" = ''");
			groupNames[groupNames.length] = groupName;
		}

		// voeg waarde van huidige inputfield toe aan group-string
		eval(groupName+" += '" + objElement.value + ",'");

	}

	// loop door de hierboven verzamelde group-strings
	for(var i=0; i<groupNames.length; i++) {
		var groupString = eval(groupNames[i]).replace(/^\,+|\,+$/g,'');	// vraag kommagescheiden string op en trim komma's van uiteinden af
		eval("strURL += '"+groupNames[i]+':'+groupString+";';");		// voeg kommagescheiden string toe aan URL-string
	}

	// haal URL van zoekpagina, gedefinieerd in formSearch.page
	strURL = document.forms[formSearch].elements['page'].value.replace('%shopFilters%', escape(strURL)) + '&ct='+ctime();

	// voer de URL uit
	//alert(strURL);
	location.href = URLMakeSEF(strURL);
}

// -------------------------------------------------

function filterGoSearch(mode) {
	var formSearch 	= 'formSearch';

	// begin de URL-string die we straks aanroepen om de results te refreshen, met het search-veld
	var strURL = 'search:' + document.forms[formSearch].elements['search'].value.replace(/[\:\;]/g, '') + ';';

	// haal URL van zoekpagina, gedefinieerd in formSearch.page
	strURL = document.forms[formSearch].elements['page'].value.replace('%shopFilters%', escape(strURL)) + '&ct='+ctime();

//alert(baseHref + URLMakeSEF(strURL));
//return;

	location.href = URLMakeSEF(strURL);
}


// ---------------------------------------------------

// was: /shop/index.php?option=com_includer&view=includer&Itemid=53&shopPage=list&shopFilters=special:1
// wordt: /shop/products/list/53/special:1/

function URLMakeSEF(url) {
	if (shopURLsMakeSEF && url.match(/^(index\.php\?)/)) {

		var getvars = url.replace(/^(index\.php\?)(.+)$/, '$2').split('&');

		var strShopPage = strItemid = strShopFilters = '';

		for (var i=0; i<getvars.length; i++) {
			getvars[i] = getvars[i].split('=', 2);

			if (getvars[i][0] == 'shopPage') strShopPage = getvars[i][1] + '/';
			if (getvars[i][0] == 'Itemid') strItemid = getvars[i][1] + '/';
			if (getvars[i][0] == 'shopFilters') strShopFilters = getvars[i][1] + '/';
		}

		// vb: products/list/53/special:1/
		url = baseHref + 'products/' + strShopPage + strItemid + strShopFilters;

		//alert(url);
	}
	return url;
}

// ---------------------------------------------------


function getScrollOffset(objId) {
	var pageOff = new Array();

//	if (document.pageYOffset){
//		pageOff[0] = document.pageXOffset;
//		pageOff[1] = document.pageYOffset;
//	} else if (document.documentElement && document.documentElement.scrollTop) {
//		pageOff[0] = document.documentElement.scrollLeft;
//		pageOff[1] = document.documentElement.scrollTop;
//	} else if (document.body) {
//		pageOff[0] = document.body.scrollLeft;
//		pageOff[1] = document.body.scrollTop;
//	}

	pageOff[0] = getElement(objId).scrollLeft;
	pageOff[1] = getElement(objId).scrollTop;

	return pageOff;
}

var tidTrackPage;
function trackPageOffset() {
	var bla = getScrollOffset('shopContent');
	//top.document.title = bla[0] + ', ' + bla[1];
	if (bla[0] > 10) {
		getElement('divMoreitems').style.visibility = 'hidden';
	} else {
		getElement('divMoreitems').style.visibility = 'visible';
	}
}
