/* legend slides on front page */
	var previousLegend;
	var currentLegend;
	var anim1;
	var anim2;
	var timeout;
function showLegend(id,loop){
		if(loop != 1) window.clearInterval(animLoop); 
		if(id)currentLegend = id;
		if(anim1 || anim2 || timeout){
			if (!timeout) timeout = setTimeout(function(){timeout = false;showLegend();},400);
		}
		else if(previousLegend != currentLegend){
			anim1 = new Effect.BlindDown(currentLegend, { fps: 50 ,duration: 0.4, afterFinish:function() {anim1 = false;} });
			if(previousLegend) anim2 = new Effect.BlindUp(previousLegend, { fps: 50 ,duration: 0.4, afterFinish:function() {anim2 = false;}  });
			previousLegend = currentLegend;
		}
}
var animLoop;
var animLoopIds = ['legend1','legend2','legend3','legend1.1','legend1.2','legend2.1','legend2.2','legend3.1','legend3.2','legend1'];
var animLoopi = -1;
function startLoop(){
	animLoop = window.setInterval(runLoop,900);
}

function runLoop(){
	if(animLoopi < animLoopIds.length){
		animLoopi =  (animLoopi+1);
		showLegend(animLoopIds[animLoopi],1);
	}
	else window.clearInterval(animLoop);
}
/* color selector */
function showTooltip (id){
	tip = $(id).childElements()[1];
	tip.style.display = 'block';
}
function hideTooltip (id){
	tip = $(id).childElements()[1];
	tip.style.display = 'none';
}
function selectColor(colorId, itemId,text,el){
		var itemColor = $(itemId+'Color');
		var itemColorDisplay = $(itemId+'ColorDisplay');
		var itemInput = $(itemId+'Input');
		var itemInfo  = $(itemId+'Info2');
		itemColorDisplay.innerHTML = el.innerHTML;
		itemInput.value = colorId;
		itemInfo.innerHTML = text;
		hideTooltip(itemColor);
	}
function showColorInfo(text,itemId){
		var itemInfo = $(itemId+'Info');
		itemInfo.innerHTML = text;
	}
function hideColorInfo(itemId){
		showColorInfo(txt_colorInfo,itemId);
	}

function showFaq(el){
		new Effect.toggle($(el).next('p'),'blind',{duration: 0.4});
}	
/* AJAX function to change page */	
function ajaxAppear(file, params, method){
	/*if(params != null) alert('POST Parameters:\n\n'+$H(params).toJSON());		*/		/* debug */
	var params = (params == null) ? $H() : $H(params);
	var method = (method == null) ? "get" : method;
	
	/* use time as random parameter to prevent Intershit explorer from cashing dynamic pages */
	var time = new Date().getTime();
	params.set('time', time);
	
	$('pageLoading').style.display = 'block';
	new Ajax.Request(file,
	{
		method: method
		,parameters: params
	    ,onSuccess: function(transport){
	    	$('pageLoading').style.display = 'none'; 
	    	var data = transport.responseText;   	
    		new Effect.toggle($('Middle'), 'appear',{
                afterFinish: function() {
                	$('Middle').update(data);
                	new Effect.toggle($('Middle'), 'appear',{from: 0.001, to: 1,fps: 50});
                	this.currentResult = data;
                }
            	,from: 1
            	,to: 0.001
            	,fps: 50
            });
	        
	    }
	    ,onFailure: function(){
	    	/* error correct code */
	    }
	});
}
function fadePageIn(){
	new Effect.Appear('Middle', { duration: 0.8 });
}
function fadePageOut(target){
	new Effect.Fade('Middle', { duration: 0.6,afterFinish: function(){document.location = target;} });
}
/* Slideshow Functions */
var preload;
function viewImage(src){
	$('slideshowLoading').style.display = 'block';
	preload = new Image();
	preload.onLoad = loadImage(src);
	preload.src = src;
	/*
	preload_image = new Image();
	preload_image.addEventListener('load', startTimer, false);
	preload_image.src=image; */
	
}
function loadImage (src){
	new Effect.Fade('slideshow', { // the id of the <DIV> containing the photos
	      duration: 0.5,
	      fps: 50,
	      afterFinish: function() {
	      		$('slideshow').src = src;
	            new Effect.Appear('slideshow', {
	              duration: 0.5,
	              fps: 50,
	              afterFinish: function(){
	              		$('slideshowLoading').style.display = 'none';
              		}
    			});
	    	}
	    });
}
/* preload loading image */
pic1= new Image(150,15); 
pic1.src="images/loading.gif"; 

/* Form validation */
function numbersonly(e, decimal) {
	var key;
	var keychar;
	
	if (window.event) {
	   key = window.event.keyCode;
	}
	else if (e) {
	   key = e.which;
	}
	else {
	   return true;
	}
	keychar = String.fromCharCode(key);
	
	if ((key==null) || (key==0) || (key==8) ||  (key==9) || (key==13) || (key==27) ) {
	   return true;
	}
	else if ((("0123456789").indexOf(keychar) > -1)) {
	   return true;
	}
	else if (decimal && (keychar == ".")) { 
	  return true;
	}
	else
	   return false;
}

function clearForm(id) {
	if(id.value == 0) id.value = "";
	id.onblur = function (){if (this.value == "") this.value = 0; } ;
}
/* Cart interaction */
function addItemToCart(item){
	
	var amount = $F($(item+'Amount'));
	var color = $F($(item+'Input'));
	var id = item;
	
	if (color == 0){ notifyUser(txt_error2);new Effect.Highlight($(item+'Input').up(0),{startcolor: "#ff9999"});return;}
	if (amount == 0){ notifyUser(txt_error1);$(item+'Amount').focus();return;}
	
	var params = new Hash();
	params.set('models_ID', id);						/* create hash to store params */
	params.set('color', color);
	params.set('amount', amount);
	params.set('function', 'add');
	
	/*alert('POST Parameters send to functions/cart.cfm:\n\n'+params.toJSON());*/					/* alert values (DEBUG) */ 
	
	new Ajax.Request('functions/cart.cfm',
	{
		 method: 'post'									/* method post, can also use get */
		,parameters: params								/* parameters to send to cfm */
	    ,onSuccess: function(transport){
	    	var data = parseInt(transport.responseText,10); 			/* responce content  */
	    	
	    	
	    	if(data != NaN){
	    		$('cartContents').innerHTML = data;
		    	notifyUser(txt_cart,'ok.gif');
		    	new Effect.BlindDown($('cartInfo'),{duration: 0.4});
		    	$('cartInfo').innerHTML = txt_cart2;
		    	new Effect.Highlight($('cartInfo'),{startcolor: "#96c497", queue: 'end'});
		    }else {
		    	notifyUser(txt_error3);
		    }
	    }
	    ,onFailure: function(){
	    	/* error correct code */
	    	notifyUser(txt_error3);
	    }
	});
	
}
function deleteCartItem(cartItemId){
	var params = new Hash();
	params.set('cartItemID', cartItemId);
	params.set('function', 'del');
	
	/*alert('POST Parameters send to functions/cart.cfm:\n\n'+params.toJSON());	*/
	
	new Ajax.Request('functions/cart.cfm',
	{
		 method: 'post'									
		,parameters: params								
	    ,onSuccess: function(transport){
	    	var data = transport.responseText;
	    	$('cartContents').innerHTML = parseInt(data,10);
	    	/* do stuff */
	    }
	    ,onFailure: function(){
	    	/* error correct code */
	    	notifyUser(txt_error3);
	    }
	});
	
	new Effect.Fade(cartItemId,{afterFinish: function(cartItemId){
		calculateTotal();
	}});
	return false;
}
function modifyCartItem(cartItemId,amount) {
	if(amount == 0 || amount == ""){ /* check if user wants to delete the item if he sets 0 as the amount */
		var answer = confirm (txt_delete);
		if (answer){
			deleteCartItem(cartItemId); 		/* delete it */
			return;
		}
		else{
			modifyCartItem(cartItemId,1); 		/* set amount to 1 */
			$(cartItemId+'Amount').value = 1;
			return;
		}
	}
	
	var params = new Hash();
	params.set('cartItemID', cartItemId);
	params.set('amount', amount);
	params.set('function', 'mod');
	
	/*alert('POST Parameters send to functions/cart.cfm:\n\n'+params.toJSON());	*/
	
	new Ajax.Request('functions/cart.cfm',
	{
		 method: 'post'									
		,parameters: params								
	    ,onSuccess: function(transport){
	    	var data = transport.responseText;
	    	$('cartContents').innerHTML = parseInt(data,10);
	    	calculateTotal();
	    	checkStock(cartItemId);
	    	/* do stuff */
	    }
	    ,onFailure: function(){
	    	/* error correct code */
	    	notifyUser(txt_error3);
	    }
	});
}
function calculateTotal() {
	// calculate total
	var rows = $$('#cartTable tr.cartEntry');
	var total = 0;
	for (i=0; i < rows.length ; i++){
		if($(rows[i]).style.display != 'none'){
			var unitprice = $F($(rows[i]).select('td.col4')[0].firstDescendant());
			var amount = $F($(rows[i]).select('td.col5')[0].firstDescendant());
			var unittotal = Math.round((unitprice * amount)*100)/100;
			var unittotalstring =  unittotal + ' &euro;';
			$(rows[i]).select('td.col6')[0].innerHTML = unittotalstring.replace('.',',');
			total += unittotal;
		}
	}
	
	// PROMO
	var min = parseFloat($('myMinimumPrice').value);
	var val = parseFloat($('myPromoAmount').value);
	var per = $('myPromoPercent').value == "true";
	var discount = 0;
	if(val){
		if(total < min){
			// minimum not reached
			$('myPromoText-minimal').show();
		   $('myPromoText-minimal').siblings().each(function(s){s.hide();});
		}
		else {
			$('myPromoText-ok').show();
		   $('myPromoText-ok').siblings().each(function(s){s.hide();});
			if(per){
				// percentage discount
				discount = total/100 * val;
			}else {
				// absolute value discount
				discount = val;
			}
		}
	}
	// write subtotal
	var subtotalstring =  String(Math.round(total*100)/100) + ' &euro;';
	$('cartsubTotal').innerHTML = subtotalstring.replace('.', ",");
	
	// write discount
	var discountstring =  '-' + String(Math.round(discount*100)/100) + ' &euro;';
	$('promoTotal').innerHTML = discountstring.replace('.', ",");
	
	// write total
	var totalstring =  String(Math.round((total - discount)*100)/100) + ' &euro;';
	$('cartTotal').innerHTML = totalstring.replace('.', ",");
}
function checkPromo(promoCode){
	var params = new Hash();
	params.set('promoCode', promoCode);
	params.set('function', 'promo');
	
	/*alert('POST Parameters send to functions/cart.cfm:\n\n'+params.toJSON());	*/
	
	new Ajax.Request('functions/cart.cfm',
	{
		 method: 'post'									
		,parameters: params								
	    ,onSuccess: function(transport){
	    	var data = String(transport.responseText);
	    	if(data != "invalid"){
	    		// retrieve data
	    		var myData = data.split(';');
	    		var percent = myData[0].charAt(myData[0].length-1) == '%';
	    		var value = parseFloat(myData[0].substr(0,myData[0].length-1));
	    		var minimum = parseFloat(myData[1]);
	    		// write data
	    		$('myMinimumPrice').value = minimum;
	    		$('myPromoAmount').value = value;
	    		$('myPromoPercent').value = percent;
	    		// update text
	    		$('myPromoText-minimal').down('.minimum').innerHTML = minimum;
	    		$('myPromoText-minimal').down('.code').innerHTML = promoCode;
	    		$('myPromoText-ok').down('.code').innerHTML = promoCode;
	    		$('myPromoText-ok').down('.value').innerHTML = myData[0].replace('e', "&euro;");
	    		calculateTotal();
	    	}
	    	else {
	    		$('myPromoText-invalid').show();
	    		$('myPromoText-invalid').siblings().each(function(s){s.hide();});
	    		
	    	}
	    	/* do stuff */
	    }
	    ,onFailure: function(){
	    	/* error correct code */
	    	notifyUser(txt_error3);
	    }
	});
}
function resetPromo(){
	var params = new Hash();
	params.set('function', 'resetPromo');
	
	/*alert('POST Parameters send to functions/cart.cfm:\n\n'+params.toJSON());	*/
	
	new Ajax.Request('functions/cart.cfm',
	{
		 method: 'post'									
		,parameters: params								
	    ,onSuccess: function(transport){
	    	var data = parseInt(transport.responseText,10);
	    	if(data){
	    		
	    		// write data
	    		$('myMinimumPrice').value = 0;
	    		$('myPromoAmount').value = 0;
	    		$('myPromoPercent').value = 0;
	    		
	    		// update text
	    		$('myPromoText-minimal').down('.minimum').innerHTML = 0;
	    		$('myPromoText-minimal').down('.code').innerHTML = 0;
	    		
	    		$('myPromoText-ok').down('.code').innerHTML = 0;
	    		$('myPromoText-ok').down('.value').innerHTML = 0;
	    		
	    		$('myPromoText-default').show();
	    		$('myPromoText-default').siblings().each(function(s){s.hide();});
	    		calculateTotal();
	    	}
	    	/* do stuff */
	    }
	    ,onFailure: function(){
	    	/* error correct code */
	    	notifyUser(txt_error3);
	    }
	});
}
function checkStock(cartItemId) {
	var params = new Hash();
	params.set('cartItemID', cartItemId);
	params.set('function', 'stock');
	
	/*alert('POST Parameters send to functions/cart.cfm:\n\n'+params.toJSON());	*/
	
	new Ajax.Request('functions/cart.cfm',
	{
		 method: 'post'									
		,parameters: params								
	    ,onSuccess: function(transport){
	    	var data = parseInt(transport.responseText,10);
	    	if(data){
	    		$(cartItemId+'Stock').src = "images/bullet_green.gif";
	    	}else {
	    		$(cartItemId+'Stock').src = "images/bullet_red.gif";
	    	}
	    	/* do stuff */
	    }
	    ,onFailure: function(){
	    	/* error correct code */
	    	notifyUser(txt_error3);
	    }
	});
}

function showShipping(){
	var form = $('checkoutForm1');
	var input = form['country'];
	var prices = $('shippingCosts').childElements();

	for(i=0 ; i<prices.length ; i++){
		$(prices[i]).style.display = 'none';

	}
	$('shipping'+$F(input)).style.display = 'inline';

}
function showShipping2(){
	var form = $('checkoutForm1');
	var input = form['country_Shipping'];
	var prices = $('shippingCosts2').childElements();
	for(i=0 ; i<prices.length ; i++){
		$(prices[i]).style.display = 'none';
	}

	$('shipping2'+$F(input)).style.display = 'inline';
}
var notifyTimeout;
function notifyUser(message,img) {
	if (img == null) img="alert.gif";
	var message = "<img src='images/"+img+"' /> <p>"+message+"</p>";
	$('messageBox').innerHTML = message;
	$('messageBox').style.borderColor = (img == "alert.gif") ? '#ff0000' : '#0a8a0d';
	$('messageBox').style.height = "80px";
	$('messageBox').style.top = document.documentElement.scrollTop;
	clearTimeout(notifyTimeout);
	new Effect.BlindDown($('messageBox'),{
		afterFinish: function () {
			notifyTimeout = setTimeout( function(){
				new Effect.BlindUp($('messageBox'),{duration: 0.4});} , 5000);
			}
		});
}
function sendEmail(params){
	var params = (params == null) ? $H() : $H(params);
	/*alert('POST Parameters send to functions/email.cfm:\n\n'+params.toJSON());*/
	new Ajax.Request('functions/email.cfm',
	{
		 method: 'post'									
		,parameters: params								
	    ,onSuccess: function(transport){
	    	var data = parseInt(transport.responseText,10);
	    	if(data){
	    		notifyUser(txt_email,'ok.gif');
	    	}else {
	    		notifyUser(txt_email2);
	    		$('Middle').innerHTML = transport.responseText;
	    	}
	    	/* do stuff */
	    	
	    }
	    ,onFailure: function(){
	    	/* error correct code */
	    	notifyUser(txt_email2);
	    }
	});
}
function joinNewsletter(){
	var mail = $F('newsletter');
	if(!mail.match(/^[^\s\.]\S*@[^\s\.]\S*[^\s\.]\.[^\s\.][^\s\.]+$/)){ notifyUser(txt_form4);$('newsletter').focus(); return(false);}
	else{
		var params = $H();
		params.set('subscribers_email', mail);
		
		/*alert('POST Parameters send to functions/newsletter.cfm:\n\n'+params.toJSON());*/
		new Ajax.Request('functions/newsletter.cfm',
		{
			 method: 'post'									
			,parameters: params								
		    ,onSuccess: function(transport){
		    	notifyUser(txt_newsletter,'ok.gif');
				$('newsletterForm').style.display = "none";
				$('newsletterSend').style.display = "block";
		    }
		    ,onFailure: function(){
		    	/* error correct code */
		    	notifyUser(txt_newsletter2);
		    }
		});
	}
}
function checkEmailForm(form){
	if (form.firstName.value.match(/^\s*$/))
	{
		notifyUser(txt_form1);
		form.firstName.focus();
		return(false);
	}
	if (form.lastName.value.match(/^\s*$/))
	{
		notifyUser(txt_form2);
		form.lastName.focus();
		return(false);
	}
	if (form.email.value.match(/^\s*$/))
	{
		notifyUser(txt_form3);
		form.email.focus();
		return(false);
	}
	if (!form.email.value.match(/^[^\s\.]\S*@[^\s\.]\S*[^\s\.]\.[^\s\.][^\s\.]+$/))
	{
		notifyUser(txt_form4);
		form.email.focus();
		return(false);
	}
	if (form.message.value.match(/^\s*$/))
	{
		notifyUser(txt_form13);
		form.message.focus();
		return(false);
	}
	return(true);
}
function checkCheckoutForm(form)
{
	if (form.firstName.value.match(/^\s*$/))
	{
		notifyUser(txt_form1);
		form.firstName.focus();
		return(false);
	}
	if (form.lastName.value.match(/^\s*$/))
	{
		notifyUser(txt_form2);
		form.lastName.focus();
		return(false);
	}
	if (form.email.value.match(/^\s*$/))
	{
		notifyUser(txt_form3);
		form.email.focus();
		return(false);
	}
	if (!form.email.value.match(/^[^\s\.]\S*@[^\s\.]\S*[^\s\.]\.[^\s\.][^\s\.]+$/))
	{
		notifyUser(txt_form4);
		form.email.focus();
		return(false);
	}
	if (form.phone.value.match(/^\s*$/) && form.mobile.value.match(/^\s*$/))
	{
		notifyUser(txt_form5);
		form.phone.focus();
		return(false);
	}
	/*
	if (form.job.value.match(/^\s*$/))
	{
		notifyUser(txt_form6);
		form.job.focus();
		return(false);
	}*/
	if (!form.company.value.match(/^\s*$/))
	{
		if (form.tva.value.match(/^\s*$/) && form.IsTVA.value.match(1)){
			notifyUser(txt_form14);
			form.tva.focus();
			return(false);
		}
	}
	if (form.address.value.match(/^\s*$/))
	{
		notifyUser(txt_form7);
		form.address.focus();
		return(false);
	}
	if (form.zip.value.match(/^\s*$/))
	{
		notifyUser(txt_form8);
		form.zip.focus();
		return(false);
	}
	if (form.locality.value.match(/^\s*$/))
	{
		notifyUser(txt_form15);
		form.locality.focus();
		return(false);
	}
	if (!form.IsShippingSame.checked)
	{
		if (form.firstName_Shipping.value.match(/^\s*$/))
		{
			notifyUser(txt_form9);
			form.firstName_Shipping.focus();
			return(false);
		}
		if (form.lastName_Shipping.value.match(/^\s*$/))
		{
			notifyUser(txt_form10);
			form.lastName_Shipping.focus();
			return(false);
		}
		if (form.address_Shipping.value.match(/^\s*$/))
		{
			notifyUser(txt_form12);
			form.address_Shipping.focus();
			return(false);
		}
		if (form.zip_Shipping.value.match(/^\s*$/))
		{
			notifyUser(txt_form11);
			form.zip_Shipping.focus();
			return(false);
		}
		if (form.locality_Shipping.value.match(/^\s*$/))
		{
			notifyUser(txt_form16);
			form.locality_Shipping.focus();
			return(false);
		}
	}

	return(true);
}
/* Suckerfish :focus IE hack */
sfFocus = function() {
	var sfEls = document.getElementsByTagName("INPUT");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onfocus=function() {
			this.className+=" sffocus";
		};
		sfEls[i].onblur=function() {
			this.className=this.className.replace(new RegExp(" sffocus\\b"), "");
		};
	}
var sfEls = document.getElementsByTagName("TEXTAREA");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onfocus=function() {
			this.className+=" sffocus";
		};
		sfEls[i].onblur=function() {
			this.className=this.className.replace(new RegExp(" sffocus\\b"), "");
		};
	}
};
if (window.attachEvent) window.attachEvent("onload", sfFocus);

/* IE6 position:fixed hack for footer */
function move_footer() {
	var offset = 0; // set offset (likely equal to your css top)
	var element = document.getElementById('footer');
	
	element.style.top = (document.documentElement.scrollTop + (document.documentElement.clientHeight - element.offsetHeight) + offset) + 'px';
}
function move_messagebox() {

	$('messageBox').style.top = document.documentElement.scrollTop + 'px';
}
/* catch enter for newsletter box */
function catchEnter(e){
	var characterCode;
	if(e && e.which){
		e = e;
		characterCode = e.which;
	} else {
		e = event;
		characterCode = e.keyCode;
	}
	if(characterCode == 13){
		joinNewsletter();
		return false;
	} else{
	return true;
	}
}

/* Homepage dropdown info boxes */
var animRunning;
var currentRollOverItem;
var runningRollOverItem;
function languageRollOver(el){
	if(runningRollOverItem != el){
		currentRollOverItem = el;
		
		switch(el){
			case 'textFR':
				var toShow = "textFR";
				var toHideOne = "textNL";
				var toHideTwo = "textEN";
				break;
			case 'textNL':
				var toShow = "textNL";
				var toHideOne = "textFR";
				var toHideTwo = "textEN";
				break;
			case 'textEN':
				var toShow = "textEN";
				var toHideOne = "textNL";
				var toHideTwo = "textFR";
				break;
			default:
				break;
		}
		if (!animRunning){
			runningRollOverItem = currentRollOverItem;
			
			animRunning = new Effect.Parallel([
				new Effect.BlindDown(toShow, {sync: true}),
				new Effect.BlindUp(toHideOne, {sync: true}),
				new Effect.BlindUp(toHideTwo, {sync: true})
				], {
					duration: 0.5,
					afterFinish: function(){
						animRunning=false;
						if(runningRollOverItem != currentRollOverItem){
							languageRollOver(currentRollOverItem);
						}
					}
				}
			);
			
		}
	}
}
