$(document).ready(function(){

	/*** General behaviours ***/
	/*************************/

		/* Browser detection */
		var ie6 = $.browser.msie && $.browser.version < 7;

		/* Add target attribute on external links */
		$("a[href^=http://]").attr("target","_blank");


	
	/*** Visual enhancements ***/
	/**************************/


	/*** Form behaviours ***/
	/***********************/

		/* Toggle initial values on input fields */
		/*$("input.jqValue").focus( function(){
			if($(this).val() == $(this).attr("title")){
				$(this).val("");
			}
		}).blur( function(){
			if($(this).val().length < 1) $(this).val($(this).attr("title"));
		});
		$("textarea.jqValue").focus( function(){
			if($(this).val() == $(this).attr("title")){
				$(this).val("");
			}
		}).blur( function(){
			if($(this).val().length < 1) $(this).val($(this).attr("title"));
		});*/
		
		
		/* Trigger - FORM VALIDATION */
		$(".jqValidate").each(function(){
			var paramsObj = $(this);
			$(this).parents("form").submit(function(){
				var params = paramsObj.attr("value").split(/\s*;\s*/);
				return validateForm($(this),params[0],params[1],params[2]);
			});
		});

		/* Trigger - Add to validation on demand */
		$(".jqValid").blur( function(){
			var obj = $(this);
			var validationObj = $(this).parents("form").find(".jqValidate");
			checkValidationNeed(obj,validationObj)
		});

}); 

/* ADD TO VALIDATION ON DEMAND */
function checkValidationNeed(obj,validationObj) {
	var targetObj = obj.parent().next().find("input[id*='herhaal']"); 
	var excists = (validationObj.val().indexOf(targetObj.attr("id")) != -1) ? true : false;
	var empty = (obj.val().length < 1) ? true : false;
	if(!empty && !excists) addToValidation(targetObj,validationObj);
	else if(empty && excists) removeFromValidation(targetObj,validationObj);
};

function addToValidation(obj,validationObj) {
	var validationString = validationObj.val();
	validationString = validationString.replace(";",","+obj.attr("id")+";");
	validationObj.val(validationString);
};

function removeFromValidation(obj,validationObj) {
	var validationString = validationObj.val();
	validationString = validationString.replace(","+obj.attr("id"),"");
	validationObj.val(validationString);
	obj.val("").parent().removeClass("notValid");
};

function getCurrentDate(){
	var currentTime = new Date()
	var month = currentTime.getMonth() + 1
	var day = currentTime.getDate()
	var year = currentTime.getFullYear()
	returnString = addZero(day) + "-" + addZero(month) + "-" + year;
	return returnString;
}
function addZero(val){
	retVal = val.toString();
	if(retVal.length == 1) retVal = "0" + retVal;
	return retVal;
}


/* FORM VALIDATION */
function validateForm(frmObj,required,msg,echo){
	var emailfilter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var telefoonfilter = /^([0-9-]{10})/;
	var postcodefilter = /^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/;
	var datefilter = /^([0-9]{2})-([0-9]{2})-([0-9]{4})$/;
	var errorFields = '';

	var requiredFields = required.split (/\s*,\s*/);
	
	for(var i=0;i<requiredFields.length;i++){
		var fldObj = frmObj.find("#"+requiredFields[i])[0];
		
		function hasErrors(obj){
			if(obj.type != 'checkbox' && obj.value == '') return true;
			else if(obj.type != 'checkbox' && obj.value == obj.title) return true;
			else if(obj.type == 'checkbox' && obj.checked == false) return true;
			else if(obj.name == "E-mail" && !emailfilter.test(obj.value)) return true;
			else if(obj.name == "Geboortedatum" && !datefilter.test(obj.value)) return true;
			else if((obj.name == "Telefoonnummer"|| obj.name == "Mobiel") && !telefoonfilter.test(obj.value)) return true;
			else if(obj.name == "Postcode" && !postcodefilter.test(obj.value)) return true;
			else if(obj.name.indexOf("Herhaal") != -1 && notSame(obj)) return true;
			else if(obj.value.indexOf("<") != -1) return true;
			else if(obj.value.indexOf("--") != -1) return true;
			else return false;
		}

		function notSame(obj){
			if(obj.value != $(obj).parent().prev().find("input").val())	return true;
		}
		
		if(hasErrors(fldObj)){
			errorFields += fldObj.name + ", ";
			$(fldObj).parent().addClass("notValid");
			
			// Add key up functionality on input and textarea
			$(fldObj).not("select").not(":checkbox").keyup( function(){
				// re-validate
				if(!hasErrors(this)) $(this).parent().removeClass("notValid");
				else $(this).parent().addClass("notValid");
			});
			
			// Add click functionality on select
			$(fldObj).not("input:not(:checked)").not("textarea").click( function(){
				// re-validate
				if(!hasErrors(this)) $(this).parent().removeClass("notValid");
				else $(this).parent().addClass("notValid");
			});
			
			// Add click functionality on custom checkbox
			$(fldObj).filter("input:checkbox").next("img").bind("click", function(){
				// re-validate
				if($(this).hasClass("checked")) $(this).parent().removeClass("notValid");
				else $(this).parent().addClass("notValid");
			});	
		}
	};

	// Handle error message
	if(errorFields != ''){
		errorFields = errorFields.substring(-1,errorFields.length-2) + ".";
		frmObj.prev("div.notValidMsg").remove();
		var errors = (echo && echo == "noEcho")? "" : "<br/>"+errorFields; 
		frmObj.before("<div class='notValidMsg'><strong>"+ msg +"</strong> "+ errors +"</div>")
		.prev("div.notValidMsg").hide().slideDown();
		return false;
	};

}
// End form validation //
