/**
 * Actonjs Library v. 1.0
 * Author: Actonbit.gr < sales@actonbit.gr >
 * Copyrights: Actonbit.gr < sales@actonbit.gr >
 */

Actonjs.namespace("Actonjs.validator");

Actonjs.validator = function () {
	var errors;
	function isEmail(el) {var result=false;var s=Actonjs.trim(getValue(el));if(isEnglish(s)){result=(/^[a-zA-Z0-9]+[_a-zA-Z0-9-]*(\.[\_|a-z|0-9|\-]+)*@[a-z|0-9]+([a-z|0-9|\-]+)*(\.[a-z|0-9|\-]+)*(\.[a-z]{2,4})$/).test(s)}return result}
	function isNumber(el) {var s=Actonjs.trim(getValue(el));return (/^[\+|\-]?\d+\.?\d*$/).test(s)}
	function isEnglish(el) {var s=Actonjs.trim(getValue(el));return ((/^[a-z|A-Z| |\d|\.|\,|\!|\"|\'|\£|\$|\%|\&|\*|\?|\:|\@|\_|\-]*$/).test(s))}
	function isGreek(el) {var s=Actonjs.trim(getValue(el));return (/^( |α|β|γ|δ|ε|ζ|η|θ|ι|κ|λ|μ|ν|ξ|ο|π|ρ|σ|τ|υ|φ|χ|ψ|ω|ς|Α|Β|Γ|Δ|Ε|Ζ|Η|Θ|Ι|Κ|Λ|Μ|Ν|Ξ|Ο|Π|Ρ|Σ|Τ|Υ|Φ|Χ|Ψ|Ω|Ά|Έ|Ή|Ί|Ό|Ύ|Ώ|ά|έ|ή|ί|ό|ύ|ώ|ϊ|ϋ|\d|\,|\.|\;|\:|\"|\'|\!|-|_|\)|\(|\*|\&|\€|\@)*$/).test(s)}
	function isSwedish(el) {var s=Actonjs.trim(getValue(el));return ((/^[a-z|A-Z| |\d|\.|\,|\!|\"|\'|\£|\$|\%|\&|\*|\?|\:|\@|\_|\-|ä|ö|å|Ä|Ö|Å]*$/).test(s))}
	function isPassword(el) {var s=Actonjs.trim(getValue(el));return ((/^[a-z|A-Z|\d|\_|\-|\@|\$|\!|\.]*$/).test(s)&&s.length>4)}
	function isEmpty(el) {var s=Actonjs.trim(getValue(el));return (s.length===0)}
	function hasIllegalChars(el) {var s=Actonjs.trim(getValue(el));return (/(>|<|#|=>|->|(&lt;)|(&gt;)|(&amp;))+/).test(s)}
	
	function getValue(el) {
		var value;
		if (typeof(el) == 'string') value = el;
		else value = el.value;
		return value;
	}

	function setError(error) {var e=Actonjs.trim(error);errors[errors.length]=e;}
	function getError() {return errors;}
	function hasError() {return (errors.length?true:false);}
	
	return {
		init:		function() {Actonjs.validator.reset();return 3;},
		validate:	function() {return Actonjs.isOpera();},
		isEmail: 	function(el) {return isEmail(el);},
		isNumber:	function(el) {return isNumber(el);},
		isEnglish:	function(el) {return isEnglish(el);},
		isGreek:	function(el) {return isGreek(el);},
		isSwedish:	function(el) {return isSwedish(el);},
		isPasswd:	function(el) {return isPassword(el);},
		isEmpty:	function(el) {return isEmpty(el);},
		hasIllegalChars:function(el) {return hasIllegalChars(el);},
		setError:	function(el) {setError(el);},
		hasError:	function(el) {return hasError();},
		getError:	function() {return getError();},
		reset:		function() {errors=new Array();el=null;}
	}
}();

Actonjs.onReady(Actonjs.validator.init);
