$(document).ready( function() {

	/**
	 * Customize this function as you wish!
     * Add your validation below the email if.
     *
     * Change the behaviour of the plugin by editing this line:
     * 		$(this).blur( function() { validateField(this) } );
     * To:
     *      $(this).keyup( function() { validateField(this) } );
     *
     *  You can find it around the line number 64.
	 */
	$("form").each( function() {

		// handle changes on the fly
		$("select, textarea, input:not(#sd, #ed)", this).each( function() {
			if ($(this).attr("class")) {
				$(this).blur( function() { validateField(this) } );
    		}
		});

	});
	$(this).submit(function(e) {
	    return (validateNow(this))
	});
});
// ************* validation ******************
function validateField(field) {
	var error = false;
	
	// required fields
	if ($(field).attr("class").indexOf("required") != -1) {
		if (!$(field).val().length)
			error = true;
	}
	// numeric fields
	if ($(field).attr("class").indexOf("numeric") != -1) {
		if (!/^[0-9]*$/.test($(field).val()))
			error = true;
	}
	// characters (letters)
	if ($(field).attr("class").indexOf("character") != -1) {
		if (!/^[a-zA-ZöÖäÄåÅ]*$/.test($(field).val()))
			error = true;
	}
	// emails
	if ($(field).attr("class").indexOf("email") != -1) {
		if (!/^[a-zA-Z0-9]{1}([\._a-zA-Z0-9-]+)(\.[_a-zA-Z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+){1,3}$|^$/.test($(field).val()))
			error = true;
	}
	
	if (error) {
		$(field).addClass("error");
	} else {
		$(field).removeClass("error");
	}
	
	return !error;
}

function validateNow(field) {
	var validationError = false;
	// for each field test it
	$("input, textarea", field).each( function() {
		if ($(this).attr("class")) {
			if (!validateField(this))
				validationError = true;
		}
	});
	$("select", field).each(function() {
		if ($.find("option:selected").length == 0) {
			$(this).addClass("error");
			validationError = true;
		} else {
			$(this).removeClass("error");
		}
	});

	$("#sd").blur( function() { validateField(this) } );
 	$("#ed").blur( function() { validateField(this) } );

	return !validationError;
}