// ============================================================
// 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

// deze wordt op 1 gezet bij een body.onload
var docLoaded = 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) {

	if (!boxOpened) return;

	// check of element waarop geklikt is niet het huidige openstaande uitklapmenu is...
	var objParent = objSrc;
	while (objParent.nodeName != 'HTML') {
		if (objParent.id.match(/^(linkAddress|divAddress)/)) {
			return;
		}
		objParent = objParent.parentNode;
	}

	el('linkAddress'+boxOpened).className = 'catNormal';
	el('divAddress'+boxOpened).style.visibility = 'hidden';

	//switchAddressBox(0, allIds);
	//alert(objParent.nodeName);
	return;

	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;
	}
}


function el(el) {
	return document.getElementById(el);
}

// ---------------------------------------------

var focusOnInput = 0;

document.onmousedown = function(event) {
	shopMouseDown(handleEvent(event));

	//if (navEventMode == 'click' || focusOnInput) {
	//	shopMouseDown(
	//		handleEvent(event)
	//	);
	//}
}

document.onmouseover = function(event) {

	if (typeof(mod_initalised) != 'undefined' && mod_initalised >= 2) {
		mod_checkmouseover(handleEvent(event));
	}

	//if (typeof() == )
// modSlideshow

	//if (navEventMode == 'hover' && !focusOnInput) {
	//	shopMouseOver(
	//		handleEvent(event)
	//	);
	//}
}

// ---------------------------------------------------

// was:   /shop/index.php?option=com_includer&view=includer&Itemid=53&shopPage=list&shopOffset=0&shopRPP=10&shopFilters=special:1
// wordt: /shop/products/list/53/0/10/special:1/

function URLMakeSEF(url) {
	if (shopURLsMakeSEF && url.match(/^(index\.php\?)/)) {

		var getvars = url.replace(/^(index\.php\?)(.+)$/, '$2').split('&');

		var strShopPage = strItemid = strShopFilters = strShopOffset = strShopRPP = '';

		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] == 'shopOffset') strShopOffset = getvars[i][1] + '/';
			if (getvars[i][0] == 'shopRPP') strShopRPP = getvars[i][1] + '/';
			if (getvars[i][0] == 'shopFilters') strShopFilters = getvars[i][1] + '/';
		}

		// vb: products/list/53/0/10/special:1/
		url = baseHref + 'products/' + strShopPage + strItemid + strShopOffset + strShopRPP + 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';
	}
}

// -----------------------------------------------------------------------

var tidUpdateBack, lockUpdateBack = 0;
var backIsClear 	= 0;
var docSW 			= 0;
var docSH 			= 0;
var backImage 		= '';
var articleId 		= 0;
var categoryId 		= 0;
var sectionId 		= 0;
var isFrontpage 	= 0;

function updateBack(mode, opts) {

	if (mode == 'onresize') {

		// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		// onresize: doe over 0.5 seconde de feitelijke resize
		// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

		// maak background-image tijdelijk blanco
		if (!backIsClear) {
			el('theBody').style.backgroundImage = 'none';
			backIsClear = 1;
		}

		// bij een onresize: trigger over een halve seconde het laden van een nieuwe background-image
		// indien binnen die halve seconde een nieuwe resize wordt gedaan, wordt het laden van die background-image opnieuw met een halve seconde uitgesteld
		clearTimeout(tidUpdateBack);
		tidUpdateBack = setTimeout("updateBack('resize', '"+opts+"')", 500);
		//top.document.title = 'onresize triggered...';
		return;

	} else if (mode == 'resize') {

		// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		// trigger de feitelijke resize
		// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

		// indien momenteel al een nieuwe background-image wordt ingeladen, stel deze dan uit
		if (lockUpdateBack) {
			clearTimeout(tidUpdateBack);
			tidUpdateBack = setTimeout("updateBack('resize', '"+opts+"')", 500);
			return;
		}

		// laadt een nieuwe background-image in
		lockUpdateBack = 1;
		setDocsize(0);
		//reposBlocks(0);
		//alert('current location = ' + location.href);
		//getBase();
		if (backImage.length > 0) {
			hide.location.href = getBase() + '../shop_back.php'
				+ '?w='    + DBW
				+ '&h='    + DBH
				+ '&i='    + escape(backImage)
				+ '&id='   + articleId
				+ '&catid='+ categoryId
				+ '&sectionid='+ sectionId
				+ '&front='+ isFrontpage
				+ '&opts=' + opts
				+ '&ct='   + ctime();
		}
	}

	return;

}

// -----------------------------------------------------------------------

function getBase() {
	var baseTag = document.getElementsByTagName("base");
	if (baseTag.length>0) {
		return baseTag[0].href;
	} else {
		return '';
	}

	//for(var i=0; i<baseTag.length; i++) {
	//	var baseId = baseTag[i].id;
	//	var baseHref = baseTag[i].href;
	//	return baseHref;
	//	alert("ID = "+ baseId +"\nhref = "+ baseHref);
	//}
}

// -----------------------------------------------------------------------

addEvent2(window, 'load', function() {

	docLoaded = 1;
	if (doLoadBack) {
		updateBack('resize', '');
	}

});

addEvent2(window, 'resize', function() {
	updateBack('onresize', 'flushlist');
});

function hoverEvent(eventIdRegexp, mode, col) {
	var objs = getElementsByRegExpId(eventIdRegexp, document, 'DIV');
	//alert(objs.length);
	if (objs.length) {
		for(var i=0; i<objs.length; i++) {
			if (mode == 'over') {
				//objs[i].style.color = objs[i].style.backgroundColor;
				objs[i].style.backgroundColor = col; //colmix(objs[i].style.color, '#000000', 0.25);
			} else if (mode == 'out') {
				objs[i].style.backgroundColor = col; //objs[i].style.color;
				//objs[i].style.color = '#fff';
			}
		}
	}
}

// --------------------------------------------------------------

var boxOpened = 0;
function switchAddressBox(activeId, allIds) {

	allIds = allIds.split(',');

	for (var i=0; i<allIds.length; i++) {
		if (allIds[i] == activeId) {
			el('linkAddress'+allIds[i]).className = 'catNormal catActive';
			el('divAddress'+allIds[i]).style.visibility = 'visible';
			boxOpened = activeId;
		} else {
			el('linkAddress'+allIds[i]).className = 'catNormal';
			el('divAddress'+allIds[i]).style.visibility = 'hidden';
		}
	}

	try {
		// toon contactformulier en verberg 'thank you' tekst
		document.contact.style.display='block';
		getElement('contactThanks').style.display='none';
	} catch(err) {
		// error
	}

}

// --------------------------------------------------------------

function switchLanguage(lang) {
	//alert(lang);
	//return;

	//var cookieExpires = unixstamp() + 1000 * (60*60*24*365);
	//var cookieExpires = 60*60*24*365;
	var cookieExpires = new Date(new Date().getTime() + 1000 * (60*60*24*365));

	// stel de nieuwe language in
	setCookie(
		'language',
		lang,
		cookieExpires,
		'/',
		false,
		false
	);

	// ga naar de pagina met de andere language
	//location.href = link;

	return false;

}

// --------------------------------------------------------------

function validateForm(lang) {

	if (lang == 'nl') {
		var strMissingField = 'Vul het volgende veld in: ';
		var strInvalidEmail = 'Geef een geldig e-mail adres op';
	} else if (lang == 'de') {
		var strMissingField = 'Bitte füllen Sie das Feld aus: ';
		var strInvalidEmail = 'Bitte geben Sie eine gültige E-Mail-Adresse ein';
	} else {
		var strMissingField = 'Please complete the following field: ';
		var strInvalidEmail = 'Please enter a correct e-mail address';
	}

	var objForm = document.contact;
	var arrFields = new Array("name", "email", "phone", "message");
	var arrRules = new Array("required", "email", "optional", "required");

	for (var i=0; i<arrFields.length; i++) {

		var objField = eval("objForm."+arrFields[i]);
		var objValue = trim(objField.value);

		if (arrRules[i] == 'required' && objValue.length == 0) {
			alert(strMissingField + objField.name);
			objField.focus();
			return false;

		} else if (arrRules[i] == 'email' && !isEmail(objValue)) {
			alert(strInvalidEmail);
			objField.focus();
			return false;
		}

	}

	// toon 'thank you' tekst en verberg contactformulier
	objForm.style.display='none';
	getElement('contactThanks').style.display='block';

	// verstuur formulier (retourneer true)
	objForm.target = 'hide';
	objForm.method = 'post';
	objForm.action = '../shop_postform.php?lang='+lang+'&ct'+ctime();
	return true;
}

