/**
 * 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 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.value.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;
}
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 submitForm ( fObj ) {
	//alert ("Form submitted");
	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;
									//alert ("not validated");
								}
							}
						}
						delete radios[obj.name];
					}
					break;
				case "text":
				case "checkbox":
					if ( typeof ( obj.onblur ) == 'function' ) {
						obj.onblur();
						if ( obj.validated == '0' ) {
							_validated = false;
							//alert ("not validated");
						}
					}
					break;
			}
		}
	}
	if ( _validated ) {
		document.getElementById('submiterror').style.display = "none";
		fObj.submit();
	}else{
		//alert ("not submitted");
		document.getElementById('submiterror').style.display = "block";
	}
	return false;
}
function report( msg ) {
	document.getElementById('report').innerHTML += msg+"<br />";
}
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;
		}
	}
}