/**
 * jQuery easing plugin
 */
 jQuery.easing["jswing"]=jQuery.easing["swing"];jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(a,b,c,d,e){return jQuery.easing[jQuery.easing.def](a,b,c,d,e)},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c},easeInOutQuad:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b+c;return-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b+c;return d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c},easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b*b+c;return-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b*b*b+c;return d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return b==0?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){if(b==0)return c;if(b==e)return c+d;if((b/=e/2)<1)return d/2*Math.pow(2,10*(b-1))+c;return d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)*b)+c},easeInOutCirc:function(a,b,c,d,e){if((b/=e/2)<1)return-d/2*(Math.sqrt(1-b*b)-1)+c;return d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var f=1.70158;var g=0;var h=d;if(b==0)return c;if((b/=e)==1)return c+d;if(!g)g=e*.3;if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g))+c},easeOutElastic:function(a,b,c,d,e){var f=1.70158;var g=0;var h=d;if(b==0)return c;if((b/=e)==1)return c+d;if(!g)g=e*.3;if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*b)*Math.sin((b*e-f)*2*Math.PI/g)+d+c},easeInOutElastic:function(a,b,c,d,e){var f=1.70158;var g=0;var h=d;if(b==0)return c;if((b/=e/2)==2)return c+d;if(!g)g=e*.3*1.5;if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);if(b<1)return-.5*h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)+c;return h*Math.pow(2,-10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)*.5+d+c},easeInBack:function(a,b,c,d,e,f){if(f==undefined)f=1.70158;return d*(b/=e)*b*((f+1)*b-f)+c},easeOutBack:function(a,b,c,d,e,f){if(f==undefined)f=1.70158;return d*((b=b/e-1)*b*((f+1)*b+f)+1)+c},easeInOutBack:function(a,b,c,d,e,f){if(f==undefined)f=1.70158;if((b/=e/2)<1)return d/2*b*b*(((f*=1.525)+1)*b-f)+c;return d/2*((b-=2)*b*(((f*=1.525)+1)*b+f)+2)+c},easeInBounce:function(a,b,c,d,e){return d-jQuery.easing.easeOutBounce(a,e-b,0,d,e)+c},easeOutBounce:function(a,b,c,d,e){if((b/=e)<1/2.75){return d*7.5625*b*b+c}else if(b<2/2.75){return d*(7.5625*(b-=1.5/2.75)*b+.75)+c}else if(b<2.5/2.75){return d*(7.5625*(b-=2.25/2.75)*b+.9375)+c}else{return d*(7.5625*(b-=2.625/2.75)*b+.984375)+c}},easeInOutBounce:function(a,b,c,d,e){if(b<e/2)return jQuery.easing.easeInBounce(a,b*2,0,d,e)*.5+c;return jQuery.easing.easeOutBounce(a,b*2-e,0,d,e)*.5+d*.5+c}})
 
 
var lightbox;
jQuery(document).ready(function() {
	
	lightbox = new Lightbox({
		overlayColor	: '#000',
		alpha			: .7,
		speed			: 500,
		boxColor		: '#fff',
		form			: jQuery('#form') // add the form to the lightbox
	});
	
});

/**
 * Open the lightbox form
 */
function openForm(){
	if (lightbox)
		lightbox.show();
}
 
/**
 * Lightbox class
 */
function Lightbox( options ){
	this.overlayColor 	= (typeof(options.overlayColor) != 'undefined') ? options.overlayColor 	: '#000';
	this.boxColor		= (typeof(options.boxColor) != 'undefined') 	? options.boxColor 		: '#fff';
	this.alpha			= (typeof(options.alpha) != 'undefined') 		? options.alpha 		: .7;
	this.speed			= (typeof(options.speed) != 'undefined') 		? options.speed 		: 500;
	this.form			= (typeof(options.form) != 'undefined')			? options.form			: '';
	this.loaderImage	= (typeof(options.loaderImage) != 'undefined')	? options.loaderImage	: '';
}

/**
 * Lightbox show
 */
Lightbox.prototype.show = function(){
	var self = this;
	if ( !this.background ) this.createBackground();
	if ( !this.container ) this.createContent();
	
	// fade in
	this.background.fadeTo( this.speed, this.alpha, 'easeOutQuint' );
	this.container.delay(500).fadeTo( this.speed, 1, 'easeOutQuint' );
	
	// add close button event
	this.container.find("a#closeBtn, input#closeInputBtn").click(function(event){		event.preventDefault();
		lightbox.hide();
	});
	
	// add voorwaaden event
	var voorwaarden_link = this.container.find('a#voorwaarden-link');
	var voorwaarden = this.container.find('div#voorwaarden');
	voorwaarden_link.click(function(event){
		event.preventDefault();
		voorwaarden.slideDown();
		$("html, body").animate({ scrollTop: $(document).height() }, 1000, 'easeOutQuint');
	});
	
	// add submit form event
	var form = this.container.find('form');
	form.submit(function(event){
		event.preventDefault();
		
		// validate elements
		var voornaam 			= form.find("input:text[name='voornaam']");
		var achternaam 			= form.find("input:text[name='achternaam']");
		var postcode 			= form.find("input:text[name='postcode']");
		var geboortedatum 		= form.find("input:text[name='geboortedatum']");
		var email 				= form.find("input:text[name='email']");
		//var ontvangen_acties	= form.find("input:checkbox[name='ontvangen-acties']");
		var akkoord				= form.find("input:checkbox[name='akkoord']");
		
		var aErrors = [];
		if ( jQuery.trim(voornaam.val()) == '' ){
			aErrors.push("Voornaam");
			voornaam.addClass('error');
		}else{
			voornaam.removeClass('error');
		}
		if ( jQuery.trim(achternaam.val()) == '' ){
			aErrors.push("Achternaam");
			achternaam.addClass('error');
		}else{
			achternaam.removeClass('error');
		}
		if ( !new RegExp(/^\d{4}\s*\w{2}$/).test( jQuery.trim(postcode.val()) ) ){
			aErrors.push("Postcode");
			postcode.addClass('error');
		}else{
			postcode.removeClass('error');
		}		/*
		if ( jQuery.trim(geboortedatum.val()) == '' ){
			aErrors.push("Geboortedatum");
			geboortedatum.addClass('error');
		}else{
			geboortedatum.removeClass('error');
		}		*/
		if ( !new RegExp(/[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/).test( jQuery.trim(email.val()) ) ){
			aErrors.push("E-mail");
			email.addClass('error');
		}else{
			email.removeClass('error');
		}
		//if ( !ontvangen_acties.is(":checked") ){
		//	aErrors.push("Ik wil als eerste de nieuwste acties ontvangen.");
		//	form.find('#ontvangen-acties-txt').css('color', '#E2251A');
		//}else{
		//	form.find('#ontvangen-acties-txt').css('color', '');
		//}
		if ( !akkoord.is(":checked") ){
			aErrors.push("Ik ga akkoord met de voorwaarden.");
			form.find('#akkoord-txt').css('color', '#E2251A');
		}else{
			form.find('#akkoord-txt').css('color', '');
		}
		
		// show error if has errors
		if ( aErrors.length > 0 ){
			var sError = 'De volgende velden zijn verplicht:\n';
			jQuery.each(aErrors, function(i, error){
				sError += '* ' + error + '\n';
			});
			alert(sError);					
		}else{
			
			// hide form and show loader
			self.container.find("#busy-loading").show();
			form.hide();
			
			// hide voorwaarden
			self.container.find("#voorwaarden").hide();
				
			// register client
			jQuery.post('controllers/registerClient.php', {
				voornaam 		: jQuery.trim(voornaam.val()),
				achternaam		: jQuery.trim(achternaam.val()),
				postcode		: jQuery.trim(postcode.val()),
				geboortedatum	: jQuery.trim(geboortedatum.val()),
				email			: jQuery.trim(email.val())
			}, function(data){
				self.container.find(".column-1, .column-2").filter(function(index){return jQuery(this).attr("id") != "conversion-page";}).hide();
				self.container.find("#conversion-page").show();
			});
		}
	});
}

/**
 * Lightbox hide
 */
Lightbox.prototype.hide = function(){
	var self = this;
	
	// fade out
	self.container.fadeOut( this.speed, 0, 'easeOutQuint' );
	self.background.delay(500).fadeTo( this.speed, 0, 'easeOutQuint', function(){
		self.clean();
	});
}

/**
 * Create background
 */
Lightbox.prototype.createBackground = function(){
	var self = this;
	
	with ( this.background = jQuery("<div />") ){
		attr("id", "lightbox-background");
		css({
			'background-color' 	: self.overlayColor,
			'position'			: 'fixed',
			'width'				: '100%',
			'height'			: '100%',
			'z-index'			: '1',
			'top'				: '0',
			'left'				: '0',
			'display'			: 'none'
		});
	}
	jQuery('body').prepend(this.background);
}

/**
 * Create content
 */
Lightbox.prototype.createContent = function(){
	var self = this;
	
	// get boundings ---------------------
	with ( tmp_div = jQuery("<div />") ){
		attr('id', 'tmp-div');
		addClass( self.form.attr('class') );
		css({
			'visibility' 	: 'hidden',
			'padding'		: 20,
			'position'		: 'absolute',
			'top'			: 0,
			'left'			: 0
		});
		html( self.form.html() );
	}
	jQuery('body').prepend( tmp_div );
	var boundings = {
		width 	: tmp_div.width() + 40,
		height	: tmp_div.height() + 40
	};
	tmp_div.remove();
	
	// create container ---------------------
	with ( self.container = jQuery("<div />") ){
		attr('id', 'lightbox-container');
		addClass( self.form.attr('class') );
		css({
			'background'			: self.boxColor,
			'position'				: 'absolute',
			'padding'				: '20px',
			'z-index'				: '2',
			'display'				: 'none',
			'top'					: jQuery(window).height()/2 -boundings.height/2, 
			'left'					: jQuery(window).width()/2 - boundings.width/2,
			'-moz-border-radius'	: '5px',
			'-webkit-border-radius'	: '5px',
			'-khtml-border-radius'	: '5px',
			'-moz-box-shadow'		: '1px 1px 10px #272626',
			'-webkit-box-shadow'	: '1px 1px 10px #272626', 
			'box-shadow'			: '1px 1px 10px #272626'
		});
		html( self.form.html() );
	}
	jQuery('body').prepend( self.container );
}

/**
 * Cleanup the lightbox
 */
Lightbox.prototype.clean = function(){
	if ( this.container ) {
		this.container.remove();
		this.container = null;
	}
	if ( this.background ){
		this.background.remove();
		this.background = null;
	}
}
