﻿/*	 *	jQuery ajaxContactForm version 1.3.2 *	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,				f = $(this);				f.prepend('<input type="text" name="bottrap" value="" style="display: none;" />');				var options 	= $.extend({}, $.fn.ajaxContactForm.defaults, opts),				submit_btn	= ($(':submit', f).length) ? $(':submit', f) : $(options.submitButton, f),				reset_btn	= ($(':reset',  f).length) ? $(':reset',  f) : $(options.resetButton, f),				action		= (typeof(act) == 'undefined') ? '' : act;					$('input, textarea, select', f).each(function() {				if ($.fn.ajaxContactForm.is_invoerveld($(this))) {					$(this)						.data("defaultvalue", $(this).val())						.focus(function() {							$(this).addClass('focussed');						})						.blur(function() {							$(this).removeClass('focussed');							if (!$.fn.ajaxContactForm.test_veld($(this), $(this).val())) {								options.falseFieldFunc(f, $(this), options.language);							}						});					if ($.fn.ajaxContactForm.is_default_value_veld($(this))) {						$.fn.ajaxContactForm.inactivate($(this));						if (this.tagName.toLowerCase() == 'select') {							$.fn.ajaxContactForm.inactivate($(this).find("option:selected"));							$(this)								.change(function() {									if ($(this).val() == $(this).data("defaultvalue")) {											$.fn.ajaxContactForm.inactivate($(this));									} else	$.fn.ajaxContactForm.activate($(this));								});						} else {							$(this)								.focus(function() {									if ($(this).val() == $(this).data("defaultvalue")) {										$(this).val("");										$.fn.ajaxContactForm.activate($(this));									}								})								.blur(function() {									if ($(this).val() == '') {										$(this).val($(this).data("defaultvalue"));										$.fn.ajaxContactForm.inactivate($(this));									}								});						}											}				}			}).filter(':checkbox, :radio').change(function() {				$(this).trigger("blur");			});			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 veld = $(this),							name = veld.attr('name'),							valu = veld.val();							if ($.fn.ajaxContactForm.is_default_value_veld($(this))) {							if (valu == $(this).data("defaultvalue")) 						valu = '';						}												if ($.fn.ajaxContactForm.test_veld(veld, valu)) {							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, options.language);					f.css('opacity', '1');					for (var z = 0; z < miss_arr.length; z++) {						options.falseFieldFunc(f, miss_arr[z], options.language);					}					return false;						//	goedkeuren en versturen				} else {									//	via ajax versturen						if (action != '') {							data_arr.push('language='+options.language);						for (var i in options.extraValues) {							data_arr.push(i+'='+options.extraValues[i]);						}						$.ajax({							type: options.method,							url: action,							data: 'ajaxcontactform=ajaxcontactform&'+data_arr.join('&'),							success: function(msg) {								var msg = msg.split('___');									if (msg[0].toUpperCase() != 'Y')	{									options.errorMessageFunc(f, msg[1], options.language);								} else {									options.succesMessageFunc(f, msg[1], options.language);								}								f.css('opacity', '1');							},							error: function() {								options.errorMessageFunc(f, 'Error, file not found', options.language);								f.css('opacity', '1');							}						});						return false;									//	via form versturen					} else {						f.css('opacity', '1');						if (t.tagName.toLowerCase() == 'form') {							t.submit();							return false;						}						return true;					}				}			});			reset_btn.click(function() {				$.fn.ajaxContactForm.resetForm(f);								return false;			});		});	};	$.fn.ajaxContactForm.defaults = {		submitButton:		'.submit',		resetButton:		'.reset',		method:				'POST',		language:			'nl',		extraValues:		{},		falseFieldFunc:		function(form, veld, lang) {			veld.effect("highlight", {color: '#dd0000'}, 1000);		},		falseMessageFunc:	function(form, lang) { 			switch (lang) {				case 'en':					msg = "Attention, not all the fields have been filled out correctly.";					break;								case 'de':					msg = "Achtung, nicht alle Felder sind korrekt ausgefuellt.";					break;				default:					msg = "Let op, niet alle velden zijn correct ingevuld.";					break;			}			alert(msg);		},		errorMessageFunc:	function(form, msg, lang) { 			alert(msg); 		},		succesMessageFunc:	function(form, msg, lang) { 			$.fn.ajaxContactForm.resetForm(form);			alert(msg);		}	};	$.fn.ajaxContactForm.resetForm = function(form) {		$('input, textarea, select', form).each(function() {						var type = this.type.toLowerCase();			if (type == 'checkbox' || type == 'radio') 	  this.checked = false;			else 										$(this).val($(this).data("defaultvalue"));			if ($.fn.ajaxContactForm.is_default_value_veld($(this))) {				$.fn.ajaxContactForm.inactivate($(this));			}		});	};	$.fn.ajaxContactForm.test_v = function(name, valu, veld) {		if (name.indexOf('__v') == -1) 	return true;		if (valu.length < 1) 			return false;				if ((veld.attr('type') == 'radio' || veld.attr('type') == 'checkbox')	 	 && !veld.is(':checked'))		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_d = function(valu, veld) {		if (!$.fn.ajaxContactForm.is_default_value_veld(veld))	return true;		if (veld[0].tagName.toLowerCase() == 'select') 			return true;		if (valu == veld.data("defaultvalue"))					return false;																return true;	};	$.fn.ajaxContactForm.test_veld = function(veld, valu) {		var name = veld.attr('name');		if ($.fn.ajaxContactForm.test_v(name, valu, veld) 	&&			$.fn.ajaxContactForm.test_n(name, valu) 		&&			$.fn.ajaxContactForm.test_e(name, valu)			&&			$.fn.ajaxContactForm.test_d(valu, veld)		) {												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;	};	$.fn.ajaxContactForm.is_default_value_veld = function(veld) {				return (veld.attr('name').indexOf('__d') == -1) ? false : true;	};	$.fn.ajaxContactForm.inactivate = function(veld) {		veld.addClass("inactive");	};	$.fn.ajaxContactForm.activate = function(veld) {		veld.removeClass("inactive");	};})(jQuery);
