// frontend.js 		Extends jQuery / ui for Partyverhuur Site
// Author: 			Erik Leutscher
// Link: 			elweb.nl
(function($) {
  var cache = [];
  // Arguments are image paths relative to the current page.
  $.preLoadImages = function() {
    var args_len = arguments.length;
    for (var i = args_len; i--;) {
      var cacheImage = document.createElement('img');
      cacheImage.src = arguments[i];
      cache.push(cacheImage);
    }
  }
})(jQuery);
jQuery.preLoadImages("home_hover.png", basepage+"images/home_hover.png");
jQuery.preLoadImages("assortiment_hover.png", basepage+"images/assortiment_hover.png");
jQuery.preLoadImages("mogelijkheden_hover.png", basepage+"images/mogelijkheden_hover.png");
jQuery.preLoadImages("contact_hover.png", basepage+"images/contact_hover.png");
jQuery.preLoadImages("voorbeelden_hover.png", basepage+"images/voorbeelden_hover.png");

jQuery(function($){
	$.datepicker.regional['nl'] = {
		closeText: 'Sluiten',
		prevText: '?',
		nextText: '?',
		currentText: 'Vandaag',
		monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni',
		'juli', 'augustus', 'september', 'oktober', 'november', 'december'],
		monthNamesShort: ['jan', 'feb', 'maa', 'apr', 'mei', 'jun',
		'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
		dayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],
		dayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],
		dayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
		weekHeader: 'Wk',
		dateFormat: 'dd-mm-yy',
		firstDay: 1,
		isRTL: false,
		showMonthAfterYear: false,
		yearSuffix: ''};
	$.datepicker.setDefaults($.datepicker.regional['nl']);
});

$(document).ready(function(){
$.datepicker.setDefaults($.datepicker.regional['nl']);	
// General Functions

	// zoom a image when clicked
	$(".zoom").fancybox({
			'hideOnContentClick': true,
			'overlayShow': true,
			'zoomSpeedIn': 600,
			'zoomSpeedOut': 500,
			'easingIn': 'easeOutBack',
			'easingOut': 'easeInBack',
			'titlePosition': 'over'
	});
	
	// pic fader
	$('#pcycle').cycle({ 
	    fx: 'scrollDown' 
	});
	
	// Slideshow homepage
	$('#slideshowy').serialScroll({
			items:'li',
			prev:'#screeny a.prev',
			next:'#screeny a.next',
			step: 1,
			axis: 'y',
			easing:'linear',
			duration:900,
			force:true,
			stop:true,
			lock:false,
			cycle:true // pull back once you reach the end
	});
	
	// Slideshow voorbeelden page
	$('#slideshow').serialScroll({
			items:'li',
			prev:'#screen a.prev',
			next:'#screen a.next',
			step: 2,
			duration:900,
			force:true,
			stop:true,
			lock:false,
			cycle:true // pull back once you reach the end
	});
			
// Assortiment Search Input Functions
	
	// On focus show the result div
	$("#a_search").focus(function(event){
		$("#search_result").show('blind');
	});
	// On blur check if data should be shown
	$("#a_search").blur(function(event){
		if($("#a_search").val()=='') 
		{
			$("#search_result").hide('blind');			
		}
	});
	// While typing post the inserted value to the controller
	$("#a_search").keyup(function(event){
		if(this.value=='') 
		{
			$("#search_result").html('');
		}
		else
		{
			$.post(basepage+"/assortiment/ajax_search", { 'value': this.value },
			  function(data){
				// Putting the returned result(s) in a div and show it.
				$("#search_result").html(data);
			}, "text");
		}
	});
	
/*--- Contact page functions ---*/

	// Normal contact page function
	$("#contact").submit(function(event){
		
		$(":input").removeAttr('style');
		
		// Getting every value
		var vnaam		= $("#vnaam").val();
		var anaam		= $("#anaam").val();
		var bedrijf		= $("#bedrijf").val();
		var straatnr	= $("#straat").val()+' '+$("#nr").val();
		var pcwp		= $("#postcode").val()+' '+$("#plaats").val();
		var email		= $("#email").val();
		var tel			= $("#tel").val();
		var vraag		= $("#vraag").val();
		
		// Post it to php
		$.post(basepage+"/contact/ajax_contact_submit", { 'vnaam': vnaam, 'anaam': anaam, 'bedrijf': bedrijf, 'straatnr': straatnr, 'pcwp': pcwp, 'email': email, 'tel': tel, 'vraag': vraag },
		  function(data){
			
			if(!data.error) {
				$(":input").val();
				$("#msgcontainer").append('<div id="succesmsg">Uw gegevens zijn succesvol verstuurd. Dank u wel.</div>');
				$("#msgcontainer").show('blind', 'slow');
				setTimeout('$("#msgcontainer").hide("blind", "slow")', 3500);
				setTimeout('$("#succesmsg").remove()', 4000);												
			}
			else {
				$("#errormsg").remove();
				for(var i in data.error) {
					$('#'+data.error[i]).attr("style", 'border:#C00009 solid 1px;');
				}
				$("#msgcontainer").append('<div id="errormsg">Een aantal velden zijn niet correct ingevuld. Deze zijn gemarkeerd met rood.</div>');
				$("#msgcontainer").show('blind', 'slow');
				setTimeout('$("#msgcontainer").hide("blind", "slow")', 3500);
				setTimeout('$("#errormsg").remove()', 4000);				
			}
			
		}, "json");

		event.preventDefault();
	});
	
/*--- Feedback Form ---*/

	//Send Feedback
	$("#fbsend").submit(function(event){
		
		$(":input").removeAttr('style');

		// Getting every value
		var name		= $('#name').val();
		var email		= $('#email').val();
		var text		= $('#text').val();
		var rating		= $('#rating').val();
		
		$.post(basepage+"voorbeelden/ajax_sendfb", { 'name': name, 'email': email, 'text': text, 'rating': rating },
		  function(data){
			
			if(!data.error) {
				$(":input").val();
				$("#msgcontainer").append('<div id="succesmsg">Uw feedback is succesvol opgeslagen. Dank u wel. Het kan even duren voordat uw feedback zichtbaar wordt.</div>');
				$("#msgcontainer").show('blind', 'slow');
				$("#feedback").prepend(data.gelukt);
				$("#newitem").show('blind', 'slow');				
				setTimeout('$("#msgcontainer").hide("blind", "slow")', 5500);
				setTimeout('$("#succesmsg").remove()', 6000);												
			}
			else {
				$("#errormsg").remove();
				for(var i in data.error) {
					$('#'+data.error[i]).attr("style", 'border:#C00009 solid 1px;');
				}
				$("#msgcontainer").append('<div id="errormsg">Een aantal velden zijn niet correct ingevuld. Deze zijn gemarkeerd met rood.</div>');
				$("#msgcontainer").show('blind', 'slow');
				setTimeout('$("#msgcontainer").hide("blind", "slow")', 4000);
				setTimeout('$("#errormsg").remove()', 4300);			
			}
			
		}, "json");
		
		event.preventDefault();
	});
	
/*--- Verlanglijstje functions ---*/

	// Add to list
	$(".addlist").click(function(){		
		var aantal = $('.add_aantal').val();
		$.post(basepage+"verlanglijst/ajax_add_prod", { 'value': this.id, 'aantal': aantal },
		  function(data){
			// Prompt the user with a succes dialog
			$("#addlist_dialog").dialog({
						modal: true,
						buttons: {
							Ok: function() {
								$(this).dialog('close');
							}
						}
					});
			
			// And refresh the screen
			refresh_vhead();
		}, "text");		
	});
	
	// refresh header data
	function refresh_vhead() {
		$("#verlang").load(basepage+"verlanglijst/ajax_update_header");
	}
	
	// Changes how many of one product is in verlanglijst
	$(".art_aantal").blur(function(){
		var aantal = this.value;
		var art_id = this.id;
		$.post(basepage+"verlanglijst/ajax_update_aantal", { 'id': art_id, 'aantal': aantal },
		  function(data){
			window.location.reload();
		}, "text");		
	});
	
	// Deletes an article from the list
	$(".art_del").click(function(){
		var id = this.id;
		$.post(basepage+"verlanglijst/ajax_del_art", { 'id': id },
		  function(data){
			window.location.reload();
		}, "text");
	});
	
	//Send to us
	var type = $("input[name='order_type']:checked"),
		name = $("#name"),
		email = $("#email"),
		tel = $("#tel"),
		street = $("#strnr"),
		pw = $("#pw"),
		date = $("#date"),
		bdate = $('#bdate'),
		verzend = $("#verzendwijze"),
		allFields = $([]).add(type).add(name).add(email).add(tel).add(street).add(pw).add(date),
		tips = $("#validateTips");
		
	function updateTips(t) {
		tips.text(t).effect("highlight",{},1500);
	}
	
	function checkLength(o,n,min,max) {
		if ( o.val().length > max || o.val().length < min ) {
			o.addClass('ui-state-error');
			updateTips("Lengte van " + n + " moet minimaal "+min+" letters zijn.");
			return false;
		} 
		else {
			return true;
		}
	}

	function checkRegexp(o,regexp,n) {
		if ( !( regexp.test( o.val() ) ) ) {
			o.addClass('ui-state-error');
			updateTips(n);
			return false;
		} 
		else {
			return true;
		}
	}

	// Dialog viewed when vlist is good
	$("#sendtous_dialog").dialog({
		bgiframe: true,
		autoOpen: false,
		width: 550,
		height: 350,
		modal: true,
		buttons: {
			'Verzend verlanglijst': function() {
				var bValid = true;
				allFields.removeClass('ui-state-error');

				bValid = bValid && checkLength(name,"naam",3,100);
				bValid = bValid && checkLength(email,"email",5,80);
				bValid = bValid && checkRegexp(email,/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i,"Uw email klopt niet. (bijv. henk@site.nl)");
				bValid = bValid && checkLength(tel,"telefoonnummer",10,15);
				bValid = bValid && checkLength(street,"straat en nummer",5,100);
				bValid = bValid && checkLength(pw,"postcode en woonplaats",10,100);
				bValid = bValid && checkLength(date,"datum",5,100);
				
				if($('#verzendwijze').val() == 'Het moet worden gebracht') {
					bValid = bValid && checkLength(bdate,"bdatum",5,100);
				}
				if(!$("input[name='order_type']").is(':checked')) {
					bValid = bValid && false;
					updateTips('Vink aub aan of u meteen wilt bestellen of eerst een offerte wilt ontvangen.');
				}

				if (bValid) {
					$.post(basepage+"verlanglijst/ajax_send_list", { 'type': $("input[name='order_type']").val(), 'name': name.val(), 'email': email.val(), 'tel': tel.val(), 'street': street.val(), 'pw': pw.val(), 'date': date.val(), 'verzend': verzend.val(), 'bdate': bdate.val()},
					  function(data){
						$('#sendtous_dialog_success').dialog('open');
					}, "text");
					$(this).dialog('close');
				}
			},
			Cancel: function() {
				$(this).dialog('close');
			}
		},
		close: function() {
			allFields.val('').removeClass('ui-state-error');
		}
	});
	
	$("#bdate").datepicker();
	$("#date").datepicker();
	
	$("#verzendwijze").change(function(){
		var val = $("#verzendwijze").val();
		if(val == 'Ik kom het ophalen') {
			if($('.showhide').is(':visible')) {
				$('.showhide').hide('blind');
			}
		}
		else if(val == 'Het moet worden gebracht') {
			if($('.showhide').is(':hidden')) {
				$('.showhide').show('blind');
			}
		}
	});
	
	
	// Dialog viewed when vlist is empty
	$("#sendtous_dialog_false").dialog({
		bgiframe: true,
		autoOpen: false,
		modal: true,
		buttons: {
			Ok: function() {
				$(this).dialog('close');
			}
		}
	});
	$("#print_dialog_false").dialog({
		bgiframe: true,
		autoOpen: false,
		modal: true,
		buttons: {
			Ok: function() {
				$(this).dialog('close');
			}
		}
	});
	
	// Dialog viewed when everything is ok
	$("#sendtous_dialog_success").dialog({
		bgiframe: true,
		autoOpen: false,
		modal: true,
		buttons: {
			Ok: function() {
				$(this).dialog('close');
			}
		}
	});

	// When clicked on the send button we first want to check if there's anything to send.
	$('#sendtous').click(function() {
		$.post(basepage+"verlanglijst/ajax_isempty_vlist", { 'value': 1},
		  function(data){
			if(data==1) {
				$('#sendtous_dialog').dialog('open');
			}else {
				$('#sendtous_dialog_false').dialog('open');
			}
		}, "text");
	});
	
	// Print function
	$("#print").click(function() {
		$.post(basepage+"verlanglijst/ajax_isempty_vlist", { 'value': 1},
		  function(data){
			if(data==1) {
				window.open(basepage+"verlanglijst/printer","Print verlanglijstje",
				"menubar=no,width=570,height=400,toolbar=no");
			}else {
				$('#print_dialog_false').dialog('open');
			}
		}, "text");
	});
	

});
