﻿/*	 *	jQuery ajaxContactForm *	www.frebsite.nl *	Copyright (c) 2009 Fred Heusschen *	Licensed under the MIT license. *	http://www.opensource.org/licenses/mit-license.php */(function($) {	$.fn.ajaxContactForm = function(act, opts) {		return this.each(function() {			var t = this;			var f = $(this);				f.prepend('<input type="text" name="bottrap" value="" style="display: none;" />');				var options 	= $.extend({}, $.fn.ajaxContactForm.defaults, opts);			var submit_btn	= ($(':submit', f).length) ? $(':submit', f) : $(options.submitButton, f);			var reset_btn	= ($(':reset',  f).length) ? $(':reset',  f) : $(options.resetButton, f);					var action		= (act == undefined) ? '' : act;			$('input, textarea', f).each(function() {				if ($.fn.ajaxContactForm.is_invoerveld($(this))) {					$(this).focus(function() {						$(this).addClass('focussed');					});					$(this).blur(function() {						$(this).removeClass('focussed');						if (!$.fn.ajaxContactForm.test_veld($(this))) {							options.falseFieldFunc($(this));						}					});				}			});			submit_btn.click(function() {								f.css('opacity', '0.5');								var miss_arr = new Array();				var data_arr = new Array();												$('input, textarea, select', f).each(function(i) {					if ($.fn.ajaxContactForm.is_invoerveld($(this))) {								var name = $(this).attr('name');						var valu = $(this).val();						var veld = $(this);						if ($.fn.ajaxContactForm.test_veld(veld)) {							if (veld.attr('type') == 'radio' 	&& !veld.is(':checked'))	valu = '';							if (veld.attr('type') == 'checkbox'	&& !veld.is(':checked')) 	valu = '';							if (valu.length > 0) {								data_arr.push(name+'='+escape(valu));							}						} else	miss_arr.push($(this));					}				});			//	niet goedkeuren				if (miss_arr.length > 0 || data_arr.length == 0) {					options.falseMessageFunc();					f.css('opacity', '1');					for (var z = 0; z < miss_arr.length; z++) {						options.falseFieldFunc(miss_arr[z]);					}					return false;						//	goedkeuren en versturen				} else {									//	via ajax versturen						if (action != '') {						var vals = data_arr.join('&');						for (var i in options.extraValues) {							vals += '&'+i+'='+options.extraValues[i];						}						$.ajax({							type: options.method,							url: action,							data: 'ajaxcontactform=ajaxcontactform&'+vals,							success: function(msg) {								var msg = msg.split('___');									if (msg[0].toUpperCase() != 'Y')	{									options.errorMessageFunc(msg[1]);								} else {									options.succesMessageFunc(msg[1], f);								}								f.css('opacity', '1');							},							error: function() {								options.errorMessageFunc('Error, file not found');								f.css('opacity', '1');							}						});						return false;									//	via form versturen					} else {						f.css('opacity', '1');						return true;					}				}			});			reset_btn.click(function() {				$.fn.ajaxContactForm.clearForm(f);				return false;			});		});	};	$.fn.ajaxContactForm.defaults = {		submitButton:		'.submit',		resetButton:		'.reset',		method:				'POST',		extraValues:		{},		falseFieldFunc:		function(veld) {			veld.effect("highlight", {color: '#dd0000'}, 1000);		},		falseMessageFunc:	function() { 			alert("Let op, niet alle velden zijn correct ingevuld.");		},		errorMessageFunc:	function(msg) { 			alert(msg); 		},		succesMessageFunc:	function(msg, form) { 			$.fn.ajaxContactForm.clearForm(form);			alert(msg);		}	};	$.fn.ajaxContactForm.clearForm = function(form) {		$('input, textarea, select', form).each(function() {			var type	= this.type; 			var tag		= this.tagName.toLowerCase();			if (type == 'text' || type == 'password' || tag == 'textarea')	this.value 			= '';			else if (type == 'checkbox' || type == 'radio')					this.checked 		= false;			else if (tag == 'select')										this.selectedIndex 	= 0;		});	};	$.fn.ajaxContactForm.test_v = function(name, valu) {		if (name.indexOf('_v') == -1) 	return true;		if (valu.length < 1) 			return false;										return true;	};	$.fn.ajaxContactForm.test_n = function(name, valu) {		if (name.indexOf('_n') == -1) 	return true;		var vervangen = new Array(' ', '-', '+', '(', ')');		for (var i = 0; i < vervangen.length; i++)	{			valu = valu.split(vervangen[i]).join('');		}		if (valu.length == 0)			return true;		else if (isNaN(valu))			return false;										return true;	};	$.fn.ajaxContactForm.test_e = function(name, valu) {		if (name.indexOf('_e') == -1)	return true;		if (valu.length < 1)			return true;		if (valu.indexOf("@") != -1 &&			valu.indexOf(".") != -1 &&			valu.length > 4		) {										return true;		} else							return false;	};	$.fn.ajaxContactForm.test_veld = function(veld) {		var name = veld.attr('name');		var valu = veld.attr('value');		if ($.fn.ajaxContactForm.test_v(name, valu) &&			$.fn.ajaxContactForm.test_n(name, valu) &&			$.fn.ajaxContactForm.test_e(name, valu)		) {																		return true;		} else 							return false	};	$.fn.ajaxContactForm.is_invoerveld = function(veld) {		if (veld.attr('type') == 'button') 	return false;		if (veld.attr('type') == 'submit') 	return false;		if (veld.attr('type') == 'reset') 	return false;		if (veld.attr('name') == 'bottrap')	return false;											return true;	}})(jQuery);
