document.observe('dom:loaded', function(){
	
	if($('catSelector')){
		$('catSelector').observe('change', Componenten.viewCategoy);
	}
	
	if($('foundationSelector')){
		$('foundationSelector').observe('change', Foundation.select);
	}
	
});

var Foundation = {
	
	select : function (e){
	
		waarde = $('foundationSelector').value;
		path = document.location.pathname;
		
		var patroon =new RegExp("select");
		
		if(patroon.test(path)){
			setFoundation(waarde);
		}
		else{
			document.location.href = '/foundations/id/ref/' + waarde;
		}
	},
	
	view : function(e){
		
	},
	
	setPayment : function(e) {
		
	}
}

var Componenten = {
   
	viewCategoy : function(e){
	
		var category = $('catSelector').value;
		
		if(category){
			document.location.href = '/catalogus/category/view/' + category;
		}
	}
}

function getMovie(id){

	new Ajax.Request('/index/get-Movie', {
	    method:'post',
	    parameters: {id: id},
	    onSuccess: function(xhr){
	    	
	    	$('movie').innerHTML = xhr.responseText;
	    },
	    onFailure: function(){ return false; }
	});
}

// stel de reminder in voor de gebruiker
function setReminder(){
	
	$('frmReminder').request({
	  method: 'post',
	  onSuccess: function(xhr) {
	  
		if(xhr.responseText == "true"){
			alert("Uw reminder is opgeslagen.");
			
			$('frmButton').hide();
		}
		else{
			alert("De server heeft onjuist gereageerd op uw verzoek.");
		}
	  	
	  },
	  onFailure: function(){
	  	alert("De server heeft onjuist gereageerd op uw verzoek.");
	  	return false;
	  }
	});
}

// get info over goed doel wanneer er op google maps is geklikt
function getInfo(id){
	
	new Ajax.Request('/foundations/get-Info', {
	    method:'post',
	    parameters: {id: id},
	    onSuccess: function(xhr){
	    	
	    	if(!xhr.responseText.isJSON()){ 
		  		return false;
		  	}
	    	
	    	var json = xhr.responseText.evalJSON();
	    	
	    	if(json.foundation.image){
	    		
	    		var content = '<div style="width: 150px; text-align: center !important;"><h5>'+json.foundation.name+'</h5>'; 
	    		
	    		content += '<a href="/foundations/view/item/'+json.foundation.lookupUri+'"><img src="'+json.foundation.image+'" alt="'+json.foundation.name+'" border="0"/></a>';
	    		
	    		if(json.news.length >= 1){
	    			content += '<div id="box_nieuwsarchief" style="text-align: left; margin-top: 6px; margin-bottom: 8px;"><h5>Laatste nieuws</h5></div><ul id="latestNews">';
	    		
	    		
		    		json.news.each(function(n){
		    			content += '<li><a class="newsItem" style="padding-top: 4px;" href="/articles/nieuws/item/'+n.lookupUri+'">'+n.title+'</a></li>';
		    		});
		    		
		    		content += '</ul></div>';
	    		}
	    		
	    		$('fountdationFirstHour').innerHTML = content;
	    	}
	    	
	    },
	    onFailure: function(){ return false; }
	});
}

// stel het account in voor business gebriuik of prive. (disable bedrijfsnaam al gelang de keuze)
function setBusiness(){
	
	var prive = $('business-0');
	var zakelijk = $('business-1');
	var bedrijfsnaam = $('frmCompany');
	
	if(zakelijk && zakelijk.checked){
		bedrijfsnaam.disabled = '';
		bedrijfsnaam.setOpacity(1);
	}
	else{
		bedrijfsnaam.disabled = 'disabled';
		bedrijfsnaam.setOpacity(0.3);
	}
}

// booktray items wissel
function booktray(productId){
	
	if(isNaN(productId)){
		return false;
	}
	
	if ($('currentBook').value == productId){
		return false;
	}
	
	new Ajax.Request('/catalogus/set-Booktray', {
	    method:'post',
	    parameters: {productId: productId},
	    onSuccess: function(xhr){
	    	
	    	if(!xhr.responseText.isJSON()){ 
		  		return false;
		  	}
	    	
	    	var json = xhr.responseText.evalJSON();
	    	
	    	if($('btnBooktray')){
	    		
	    		$('btnBooktray').observe( 'click', function( event ){
	    			document.location.href = json.url;
	    		});
	    	}
	    	
	    	if($('booktrayTitle')){ 
	    		$('booktrayTitle').innerHTML = json.title; 
	    		$('booktrayDescription').innerHTML = json.description;
	    		$('currentBook').src = json.image;
	    	}
	    	
	    },
	    onFailure: function(){ return false; }
	});
}

// set price filter
function setPriceFilter(value){
	
	if(isNaN(value)){
		return false;
	}
	
	var items = $$('#priceFilter ul li');
	
	items.each(function(n){
		n.removeClassName('selectedItem');
	});
	
	items[value].addClassName('selectedItem');
	
	new Ajax.Request('/catalogus/set-price-filter', {
	    method:'post',
	    parameters: {range: value},
	    onSuccess: function(transport){
	      
	    var response = transport.responseText || "no response text";
	    
	      if(response == 'true'){ 
	    	 
	      	var loc = document.location; 
	      	var pathName = document.location.pathname;
	      	var pos = pathName.indexOf('/page') 
	      	
	      	if(pos == -1){
	      		var path = pathName;
	      	}
	      	else{
	      		var path = pathName.substring(0, pos);
	      	}
	      	
	    	document.location.href = loc.protocol + '//' + loc.host + path;
	      }
	      
	    },
	    onFailure: function(){ return false; }
	});
}

//set jaar van uitgifte filter
function setYearFilter(value){
	
	if(isNaN(value)){
		return false;
	}
	
	var items = $$('#yearFilter ul li');
	
	items.each(function(n){
		n.removeClassName('selectedItem');
	});
	
	items[value].addClassName('selectedItem');
	
	new Ajax.Request('/catalogus/set-year-filter', {
	    method:'post',
	    parameters: {year: value},
	    onSuccess: function(transport){
	      
	    var response = transport.responseText || "no response text";
	    
	      if(response == 'true'){ 
	    	 
	      	var loc = document.location; 
	      	var pathName = document.location.pathname;
	      	var pos = pathName.indexOf('/page') 
	      	
	      	if(pos == -1){
	      		var path = pathName;
	      	}
	      	else{
	      		var path = pathName.substring(0, pos);
	      	}
	      	
	    	document.location.href = loc.protocol + '//' + loc.host + path;
	      }
	      
	    },
	    onFailure: function(){ return false; }
	});
}

//set jaar van uitgifte filter
function setLanguageFilter(value){

	if(isNaN(value)){
		return false;
	}
	
	var items = $$('#languageFilter ul li');
	
	items.each(function(n){
		n.removeClassName('selectedItem');
	});
	
	items[value].addClassName('selectedItem');
	
	new Ajax.Request('/catalogus/set-language-filter', {
	    method:'post',
	    parameters: {language: value},
	    onSuccess: function(transport){
	      
	    var response = transport.responseText || "no response text";
	    
	      if(response == 'true'){ 
	    	 
	      	var loc = document.location; 
	      	var pathName = document.location.pathname;
	      	var pos = pathName.indexOf('/page') 
	      	
	      	if(pos == -1){
	      		var path = pathName;
	      	}
	      	else{
	      		var path = pathName.substring(0, pos);
	      	}
	      	
	    	document.location.href = loc.protocol + '//' + loc.host + path;
	      }
	      
	    },
	    onFailure: function(){ return false; }
	});
}

// show call out bij recensie
function showCallout(e, star){
	
	mouseX = Event.pointerX(e) + 5
	mouseY = Event.pointerY(e) - 136;
	
	var Tekst;
	
	switch(star){
		case 1 : Tekst = 'Nog net niet in slaap gevallen'; break;
		case 2 : Tekst = 'Mwa, ik heb betere boeken gelezen!'; break;
		case 3 : Tekst = 'Best wel okee'; break;
		case 4 : Tekst = 'Dit boek is absoluut zijn geld waard'; break;
		case 5 : Tekst = 'Wat een topper, direct bestellen!'; break;
		default: Tekst = 'U doet geloof ik maar wat';
	}

	if($('callout')){
		$('callout').setStyle({opacity: 0.9, left: mouseX +'px', top: mouseY + 'px'});
		$('callout').show(); 

	}
	
	if($('calloutText')){
		$('calloutText').update(Tekst)
	}
}

function validateMailWishlist(){
	
	var error = false;
	var fields = ["email", "subject"];
	
	resetTextlayouts(fields);
	
	fields.each(function(item){
	
		if($(item).value == ""){
			$(item).setStyle({
				borderStyle: 'dashed',
				borderColor: '#C1001F',
				borderWith: '1px'
			});
			
			error = true;
		}
	
	});
	
	if(error == true){
		alert("Corrigeer de met rood gearceerde velden.")
		return false;
	}
	
	$('frmMailWishlist').request({
		  method: 'post',
		  onSuccess: function(xhr) {
		  
		  	if(!xhr.responseText.isJSON()){
		  		alert("We kunnen uw verzoek momenteel niet verwerken.");
		  		return false;
		  	}
		  	
		  	var json = xhr.responseText.evalJSON();
		  	
		  	if(json.errors && json.errors.length > 0){
		  	
		  		json.errors.each(function(item){
		  			
		  			$(item).setStyle({
		  				borderStyle: 'dashed',
						borderColor: '#C1001F',
						borderWith: '1px'
		  			});
		  		});
		  		
		  		return false;
		  	}
		    else{
		    	alert(json.message);
		    	document.location.href = '/wishlist/index';
		    }
			
		  },
		  onFailure: function(){
		  	alert("De server heeft onjuist gereageerd op uw verzoek.");
		  	return false;
		  }
		});
}

function validateReview(){
	
	if($('frmCredits').value == 0){
		alert("Je hebt het boek nog geen waardering gegeven.\nKlik op een van de sterretjes.");
		return false;
	}
	
	var error = false;
	var fields = ["title", "userName", "comments"];
	
	resetTextlayouts(fields);
	
	fields.each(function(item){
	
		if($(item).value == ""){
			$(item).setStyle({
				borderStyle: 'dashed',
				borderColor: '#C1001F',
				borderWith: '1px'
			});
			
			error = true;
		}
	
	});
	
	if(error == true){
		alert("Corrigeer de met rood gearceerde velden.")
		return false;
	}
	
	$('frmRecensie').request({
	  method: 'post',
	  onSuccess: function(xhr) {
	  
	  	if(!xhr.responseText.isJSON()){
	  		alert("We kunnen uw verzoek momenteel niet verwerken.");
	  		return false;
	  	}
	  	
	  	var json = xhr.responseText.evalJSON();
	  	
	  	if(json.errors && json.errors.length > 0){
	  	
	  		json.errors.each(function(item){
	  			
	  			if(item == 'comments'){
	  				alert("het minimaal aantal woorden is 15!");
	  			}
	  			
	  			$(item).setStyle({
	  				borderStyle: 'dashed',
					borderColor: '#C1001F',
					borderWith: '1px'
	  			});
	  		});
	  		
	  		return false;
	  	}
	    else{
	    	
	    	if(json.url){
	    		document.location.href = json.url;
	    	}
	    	else{
	    		alert("Uw toevoeging is opgeslagen.")
	    	}
	    }
		
	  },
	  onFailure: function(){
	  	alert("De server heeft onjuist gereageerd op uw verzoek.");
	  	return false;
	  }
	});
}

//Stel de ration in op de recensie pagina
function setVotes(stars){
	
	points = stars * 20 ;
	
	if($('currentlyVotes')){
		$('currentlyVotes').setStyle({width: points +'px'});
	}
	
	if($('frmCredits')){
		$('frmCredits').value = stars;
	}
}

// verberg call out bij recensie
function hideCallout(){
	
	if($('callout')){
		$('callout').hide();
	}
}

// Breng stem uit vanaf product pagina
function vote(ean, credits){
	
	new Ajax.Request('/catalogus/set-Voting',
	  {
	    method:'post',
	    parameters: {ean: ean, credits: credits},
	    onSuccess: function(transport){
	      
	    var response = transport.responseText || "no response text";
	    
	      if($('currentlyVotes')){
	    	  $('currentlyVotes').setStyle({width: response});
	      }
	      
	    },
	    onFailure: function(){ return false; }
	  });

}

// valideer het aanmeld formulier voor de nieuwsbried
function validateNewsletter(){

	var error = false;
	var fields = ["firstname", "lastname", "email"];
	
	resetTextlayouts(fields);
	
	fields.each(function(item){
	
		if($(item).value == ""){
			$(item).setStyle({
				borderStyle: 'dashed',
				borderColor: '#C1001F',
				borderWith: '1px'
			});
			
			error = true;
		}
	
	});
	
	if(error == true){
		return false;
	}
	
	$('frmNewsletter').request({
	  method: 'post',
	  onSuccess: function(xhr) {
	  
	  	if(!xhr.responseText.isJSON()){
	  		alert("We kunnen uw aanmelding momenteel niet verwerken.");
	  		return false;
	  	}
	  	
	  	var json = xhr.responseText.evalJSON();
	  	
	  	if(json.erros && json.errors.length > 0){
	  	
	  		alert(json.message);
	  		
	  		json.errors.each(function(item){
	  			$(item).setStyle({
	  				borderStyle: 'dashed',
					borderColor: '#C1001F',
					borderWith: '1px'
	  			});
	  		});
	  		
	  		return false;
	  	}
	    else{
	    	$('frmNewsletter').replace('<div style="font-weight: bold; margin: 24px; color: #E2021A;">' + json.message + '</div>');
	    }
		
	  },
	  onFailure: function(){
	  	alert("De server heeft onjuist gereageerd op uw verzoek.");
	  	return false;
	  }
	});	
}

// de gebruiker heeft zijn keuze gemaakt stuur hem terug naar afrekenen
function setFoundation(id){

	var foundationId = parseInt(id);
	
	if(foundationId > 0){
		document.location.href = '/checkout/index/foundation/' + foundationId;
	}
	else{
		return false;
	}
}

// check of de gebruiker op de enter toets tikt. zo ja fire het zoek
function setKeyword(e){
	
	if(window.event) // IE
	{
	keynum = e.keyCode;
	}
	else if(e.which) // Netscape/Firefox/Opera
	{
	keynum = e.which;
	}
	
	if(keynum == 13){
		searchByKeyword();
	}
}

// zoek goed doel via trefwoord
function searchByKeyword(){
	
	if(document.location.href == "http://shop.local/foundations/search/select/yes" ||
		document.location.href == "http://shop.youbedo.net/foundations/search/select/yes" ||
		document.location.href == "http://www.youbedo.com/foundations/search/select/yes"){
		
		var param = "/select/yes";
		
	}
	else{
		var param = "";
	}
	
	var item = $('searchFoundationByKeyword').value;
	
	if(item.length == 0){
		alert("Je moet wel een trefwoord intikken!");
		return false;
	}
	else{
		document.location.href = "/foundations/search/keyword/" + item + param;
	}
}


// valideer de nieuwe gebruiker
function validateNewAccount(){
	
	var error = false;
	var fields = ["voornaam", "achternaam", "adres", "number", "postcode", "plaats", "email", "telefoon", "frmPassword", "frmPassword2"];
	
	resetTextlayouts(fields);
	
	fields.each(function(item){
	
		if($(item).value == ""){
			$(item).setStyle({
				borderStyle: 'dashed',
				borderColor: '#C1001F',
				borderWith: '1px'
			});
			
			error = true;
		}
	
	});
	
	if($('frmPassword').value != $('frmPassword2').value){
		error = true;
		
		$('frmPassword').setStyle({
			borderStyle: 'dashed',
			borderColor: '#C1001F',
			borderWith: '1px'
		});
		
		$('frmPassword2').setStyle({
			borderStyle: 'dashed',
			borderColor: '#C1001F',
			borderWith: '1px'
		});
		
		alert("De ingevoerde wachtwoorden zijn niet gelijk.");
	}
	
	if(error == true){
		return false;
	}
	
	$('nawGegevens').request({
	  method: 'post',
	  onSuccess: function(xhr) {
	  
	  	if(!xhr.responseText.isJSON()){
	  		alert("Het registreren van een nieuw account is niet geslaagd.");
	  		return false;
	  	}
	  	
	  	var json = xhr.responseText.evalJSON();
	  	
	  	if(json.errors.length > 0){
	  	
	  		alert(json.message);
	  		
	  		json.errors.each(function(item){
	  			$(item).setStyle({
	  				borderStyle: 'dashed',
					borderColor: '#C1001F',
					borderWith: '1px'
	  			});
	  		});
	  		
	  		return false;
	  	}
	    else{
	    	$('nawGegevens').replace(json.message);
	    }
		
	  },
	  onFailure: function(){
	  	alert("De server heeft onjuist gereageerd op uw verzoek.");
	  	return false;
	  }
	});	
}

// valideer de gebruiker wanneer deze tracht in te loggen
function validateLogin(){
	
	var error = false;
	var fields = ["frmLoginEmail", "frmLoginPassword"];
	
	resetTextlayouts(fields);
	
	fields.each(function(item){
	
		if($(item).value == ""){
			$(item).setStyle({
				borderStyle: 'dashed',
				borderColor: '#C1001F',
				borderWith: '1px'
			});
			
			error = true;
		}
	
	});
	
	if(error == true){
		return false;
	}
	
	$('frmLogin').request({
	  method: 'post',
	  onSuccess: function(xhr) {
	  
	  	if(!xhr.responseText.isJSON()){
	  		alert("Authorisatie procedure is afgebroken door de server.");
	  		return false;
	  	}
	  	
	  	var json = xhr.responseText.evalJSON();
	  	
	  	if(json.errors.length > 0){
	  	
	  		alert("Authorisatie kan niet worden geverifeerd.");
	  		
	  		json.errors.each(function(item){
	  			$(item).setStyle({
	  				borderStyle: 'dashed',
					borderColor: '#C1001F',
					borderWith: '1px'
	  			});
	  		});
	  		
	  		return false;
	  	}
	    else{
	    
	    	$('frmLogin').replace(json.message);
	    	
	    	$$('#box_login h5').each(function(item){
	    		item.update(json.title);
	    	});
	    	
	    	if($('frmNaw')){
	    		$('voornaam').value = json.firstname;
	    		$('prefix').value = json.prefix;
	    		$('achternaam').value = json.lastname;
	    		$('adres').value = json.address;
	    		$('number').value = json.number;
	    		$('addition').value = json.addition;
	    		$('postcode').value = json.zipcode;
	    		$('plaats').value = json.city;
	    		$('telefoon').value = json.telephone;
	    		$('email').value = json.email;
	    		$('user_birthday').value = json.birthday;
	    		
	    		if(json.gender == "v"){
	    			$('user_gender').options[1].setAttribute("selected", "selected");
	    		}
	    		
	    	}
	    }
		
	  },
	  onFailure: function(){
	  	alert("De server heeft onjuist gereageerd op uw verzoek.");
	  	return false;
	  }
	});	
}

//valideer forgot password formulier en probeer een nieuw wachtwoord op te sturen
function validateForgotPassword(){

	var error = false;
	var fields = ["frmEmail"];
	
	resetTextlayouts(fields);
	
	fields.each(function(item){
	
		if($(item).value == ""){
			$(item).setStyle({
				borderStyle: 'dashed',
				borderColor: '#C1001F',
				borderWith: '1px'
			});
			
			error = true;
		}
	
	});
	
	if(error == true){
		return false;
	}
	
	$('frmForgotPassword').request({
	  method: 'post',
	  onSuccess: function(xhr) {
	  
	  	if(!xhr.responseText.isJSON()){
	  		alert("Authorisatie procedure is afgebroken door de server.");
	  		return false;
	  	}
	  	
	  	var json = xhr.responseText.evalJSON();
	  	
	  	if(json.errors.length > 0){
	  	
	  		alert("Uw emailadres is niet aangetroffen in onze administratie.");
	  		
	  		json.errors.each(function(item){
	  			$(item).setStyle({
	  				borderStyle: 'dashed',
					borderColor: '#C1001F',
					borderWith: '1px'
	  			});
	  		});
	  		
	  		return false;
	  	}
	    else{
	    	$('frmForgotPassword').replace(json.message);
	    }
		
	  },
	  onFailure: function(){
	  	alert("De server heeft onjuist gereageerd op uw verzoek.");
	  	return false;
	  }
	});	
}

// Controleer of het zoekformuliertje niet leeg is of voorzien van de standaard tekst.
// Return True wanneer dit niet het geval is.
function chkFrmQuickSearch(){
	
	if($F('frmSearch') && $F('frmSearch') != "Zoeken op titel"){
		return true;
	}
	else{
		alert("U dient een zoekterm op te geven.");
		return false;
	}
}

// Maak het tekstveld met de gegeven id leeg.
function clearTextElement(elementId){
	
	if($F(elementId)){
		$(elementId).value = "";
	}

}

// redirect de goede doelen de waarde van de selector naar een pagina
// waarop de gekozen categorie wordt getoond.
function getFoundationByCategory(){
	
	var option = $('getFoundationByCategory').value;
	
	if(option < 1 || option == 'undefined'){
		return false;
	}
	else{
		document.location.href = "/foundations/search/category/" + option;
	}
}

// Valideer het tell a friend formulier.
function validateTellaFriend(){
	
	var error = false;
	var fields = ["frmName", "frmEmail", "frmFriendsName", "frmFriendsEmail"];
	
	resetTextlayouts(fields);
	
	fields.each(function(item){
	
		if($(item).value == ""){
			$(item).setStyle({
				borderStyle: 'dashed',
				borderColor: '#C1001F',
				borderWith: '1px'
			});
			
			error = true;
		}
	
	});
	
	if(error == true){
		return false;
	}

	$('frmTellaFriend').request({
	  method: 'post',
	  onSuccess: function(xhr) {
	  
	  	if(!xhr.responseText.isJSON()){
	  		alert("Het Tell-a-friend bericht kan niet verzonden worden.");
	  		return false;
	  	}
	  	
	  	var json = xhr.responseText.evalJSON();
	  	
	  	if(json.errors.length > 0){
	  		
	  		json.errors.each(function(item){
	  			$(item).setStyle({
	  				borderStyle: 'dashed',
					borderColor: '#C1001F',
					borderWith: '1px'
	  			});
	  		});
	  		
	  		return false;
	  	}
	    else{
	    	$('tellAFriend').update(json.message);
	    }
		
	  },
	  onFailure: function(){
	  	alert("De server heeft onjuist gereageerd op uw verzoek.");
	  	return false;
	  }
	});	
}

function resetTextlayouts(elements){
	
	for(var i = 0; i < elements.length; i++){
		$(elements[i]).setStyle({
			borderStyle: '',
			borderColor: '',
			borderWith: ''
		});
	}
}