
/**
 * Validate the input of a user if it is a valid email address
 * @param src; HTMLInputObject
 */
function validateEmail ( src ) {
	var emailreg = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,5}$/;
	return emailreg.test(src.value);
}


function validateZipcode ( src ) {
	var emailreg = /^[0-9]{4}\s*[a-zA-Z]{2}$/;
	return emailreg.test(src.value);
}


function validatePhone ( src ) {
	var emailreg = /^([0]{1}[6]{1}[-\s]*[1-9]{1}[\s]*([0-9]{1}[\s]*){7})|([0]{1}[1-9]{1}[0-9]{1}[0-9]{1}[-\s]*[1-9]{1}[\s]*([0-9]{1}[\s]*){5})|([0]{1}[1-9]{1}[0-9]{1}[-\s]*[1-9]{1}[\s]*([0-9]{1}[\s]*){6})$/;
	return emailreg.test(src.value);
}


function validatePhone2 ( src ) {
	var emailreg = /^([0]{1}[6]{1}[-\s]*[1-9]{1}[\s]*([0-9]{1}[\s]*){7})|([0]{1}[1-9]{1}[0-9]{1}[0-9]{1}[-\s]*[1-9]{1}[\s]*([0-9]{1}[\s]*){5})|([0]{1}[1-9]{1}[0-9]{1}[-\s]*[1-9]{1}[\s]*([0-9]{1}[\s]*){6})$/;
	return emailreg.test(src.value);
}




function validateRadio ( src ) {
	var radios = collectRadios ( src.form );
	for(var name in radios) {
		if ( name == src.name ) {
			for ( var i = 0 ; i < radios[name].length ; i++ ) {
		  		if(radios[name][i].checked) {
		  			return true;
		  		}
		  	}
  		}
	}
	return false;
}
function validateDate ( src ) {
	// dd-mm-yyyy
	var datereg = /^[0-3]{1}\d{1}-[0-1]\d{1}-\d{4}$/;
	return datereg.test(src.value);
}
function validateString ( src ) {
	return ( src.value.length > 0 );
}
function validateNumber ( src ) {
	if ( validateString ( src ) ) {
		return !isNaN(src.value);
	}else{
		return false;
	}
}
function validateCheckbox (src) {
	return ( src.checked );
}
function checkValidation(method,obj) {
	return method.apply(this,[obj])
}
function handleVisualError(obj , result , error ) {
	if ( result ) {
		e='';
		document.getElementById('e'+obj.name).style.display = 'none'
		obj.className = obj.className.split(' ')[0];
		obj.validated = '1';
	}else{
		e = error;
		document.getElementById('e'+obj.name).style.display = ''
		obj.className = obj.className+' error';
		obj.validated = '0';
	}
	document.getElementById('e'+obj.name).innerHTML = e;
}
var checks = new Array();
function setRequiredFields(required) {
	checks = required;
}
function hasValidation(obj) {
	for ( var i = 0 ; i < checks.length ; i++ ) {
		if( obj.name == checks[i] ) {
			return true;
		}
	}
	return false;
}

function collectRadios (fObj) {
	var radios = new Object();
	for ( var i = 0 ; i < fObj.elements.length ; i++ ) {
		var obj = fObj.elements[i];
		if ( obj.type == 'radio' ) {
			if ( typeof ( radios[obj.name] ) != 'object'  ) {
				radios[obj.name] = new Array ();
			}
			radios[obj.name].push ( obj );
		}
	}
	return radios;
}

function submitAjaxForm ( fObj , ajaxFrame , direction ) {
	if (direction == 1 ) {
		if ( _submitForm ( fObj ) ) {
			new Ajax.Updater(ajaxFrame, fObj.action,{evalScripts:true,asynchronous:true,parameters:Form.serialize(fObj),method:fObj.method})
		}
	}else{
		new Ajax.Updater(ajaxFrame, fObj.action,{evalScripts:true,asynchronous:true,parameters:Form.serialize(fObj),method:fObj.method})
	}
	return false;
}

function pagebackAjaxForm ( fObj , ajaxFrame ) {
	new Ajax.Updater(ajaxFrame, fObj.action,{evalScripts:true,asynchronous:true,parameters:Form.serialize(fObj),method:fObj.method})
	return false;
}

function _submitForm ( fObj ) {
	var _validated = true;
	var radios = collectRadios(fObj);
	for ( var i = fObj.elements.length -1 ; i >= 0  ; i-- ) {
		var obj = fObj.elements[i];
		if ( hasValidation(obj) ) {

			switch ( obj.type ) {
				case "radio":
					var checked = false;
					if ( typeof ( radios[obj.name] ) == 'object' ) {
						for ( var u = 0 ; u < radios[obj.name].length ; u++ ) {
							if ( radios[obj.name][u].checked ) {
								checked = true;
							}
						}
						if ( ! checked ) {
							if ( typeof ( obj.onblur ) == 'function' ) {
								obj.onblur();
								if ( obj.validated == '0' ) {
									_validated = false;
								}
							}
						}
						delete radios[obj.name];
					}
					break;
                default:
				case "text":
				case "checkbox":
					if ( typeof ( obj.onblur ) == 'function' ) {
						obj.onblur();

						if ( obj.validated == '0' ) {
							_validated = false;
						}
					}
					break;
			}
		}
	}

	if ( _validated ) {
		return true
	}else{
		return false;
	}
}
function submitForm ( fObj , direction ) {
	if (direction == 1 ) {
		if ( _submitForm ( fObj ) ) {
			document.getElementById('submiterror').style.display = "none";
			fObj.submit();
		}else{
			document.getElementById('submiterror').style.display = "block";
			return false;
		}
	}else{
		return true;
	}
}
function setRadioValue( element , value ) {
	for (var i = 0 ; i < element.length ; i ++ ) {
		if ( element[i].value == value ) {
			element[i].checked = true;
		}
	}
}
function setSelectValue( element , value ) {
	for (var i = 0 ; i < element.length ; i ++ ) {
		if ( element[i].value == value ) {
			element.selectedIndex = i;
		}
	}
}

function findPosX(obj) {
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function setBorderColor(obj,state) {
    if (state=='active') {obj.style.borderColor = "#82aef1";}
    if (state=='default') {obj.style.borderColor = "#c8c5bf";}
}

function handleVisualErrorFloater (obj , result , error ) {

if (result==false) {obj.style.borderColor = "#ff1518";} else {obj.style.borderColor = "#a7b5c5";}

	var div = document.getElementById('error');
	var e;
	if ( result ) {
		e='';
		div.style.display = 'none'
		obj.className = obj.className.split(' ')[0];
		obj.validated = '1';
	}else{
		e = error;
		div.style.display = ''
		obj.className = obj.className+' error';
		obj.validated = '0';
	}
	document.getElementById('error').innerHTML = e;
	var width = obj.offsetWidth;
	var x = parseInt( findPosX(obj) , 10 );
	var y = parseInt( findPosY(obj) , 10 );
	x += width - 55;
	y -= 30;
	document.getElementById('error').style.top = (y-10)+"px";
	document.getElementById('error').style.left = x+"px";
}