
JDIF = window.JDIF || {};

JDIF.is_array = function(v){
    return v &&
    typeof(v) === "object" &&
    typeof(v.length) === "number" &&
    typeof(v.splice) === "function" &&
    !(v.propertyIsEnumerable("length"));
};


JDIF.FieldValidator = (function() {
	var module = {};
	
	
	var Def_Max_Length = {
		textbox:	50,
		textarea:	200,
		set: function(k,v) {
			this[k] = v;
		}
	};
	
	var set_def_max_length = function(k,v) {
		Def_Max_Length.set(k,v);
	};
	module.set_def_max_length = set_def_max_length;
	
	
	var pat_ALL		= 0;
	var pat_ALPHA	= /[^a-zA-Z ]+/g;
	var pat_PHONE	= /[^0-9\(\)\-ex]+/g;
	var pat_EMAIL	= /[^a-zA-Z_0-9\-\.\~\@]+/g;
	var pat_NUMBERS	= /[^0-9]+/g;
	
	var restrict = function(e,pat,max_length) {
		if (!max_length) {
			if (typeof(e.type) !== "undefined" && (e.type.toLowerCase() === "text" || e.type.toLowerCase() === "password")) {
				max_length = Def_Max_Length.textbox;
			} else {
				max_length = Def_Max_Length.textarea;
			}
		}
		
		try {
			if(typeof(e) === "string") {
				e = document.getElementById(e);
			} else {
				if(typeof(e.obj) !== "undefined") {
					e = e.obj;
				}
			}
			if (pat !== 0) {
				e.value = e.value.replace(pat, "");
			}
			if(max_length && e.value.length > max_length) {
				e.value = e.value.substr(0,max_length);
			}
		} catch(ex) {
			//alert(ex);
			//...
		}
	};	
	
	
	var restrict_length = function(e,max_length) {
		return restrict(e,pat_ALL,max_length);
	}
	module.restrict_length = restrict_length;
	
	var restrict_to_numbers = function(e,max_length) {
		return restrict(e,pat_NUMBERS,max_length);
	}
	module.restrict_to_numbers = restrict_to_numbers;
	

	var restrict_to_alpha = function(e) {
		return restrict(e,pat_ALPHA);
	}
	module.restrict_to_alpha = restrict_to_alpha;
	
	var restrict_to_phone = function(e) {
		return restrict(e,pat_PHONE);
	}
	module.restrict_to_phone = restrict_to_phone;
	
	var restrict_to_email = function(e) {
		return restrict(e,pat_EMAIL);
	}
	module.restrict_to_email = restrict_to_email;
	
	
	
	var restrict_length_collection = function(e,max_length) {
		try {
			if (JDIF.is_array(e) || e.length) {
				for (var i = 0; i < e.length; i++) {
					if (typeof(e[i].type) !== "undefined" && 
						(e[i].type.toLowerCase() === "text" 
						|| e[i].type.toLowerCase() === "password"
						|| e[i].type.toLowerCase() === "textarea") ) {
						JDIF.handle_event(e[i], "keyup", (function(d){
							return function(){
								JDIF.FieldValidator.restrict_length(d);
							}
						})(e[i]));
						
						JDIF.handle_event(e[i], "blur", (function(d){
							return function(){
								JDIF.FieldValidator.restrict_length(d);
							}
						})(e[i]));
					}
				}
			}
		} catch(ex) {
			//alert(ex);
		}
	};
	module.restrict_length_collection = restrict_length_collection;
	
	return module;
})();









JDIF.OnLoad.add(
	(function() {
		JDIF.FieldValidator.restrict_length_collection(document.body.getElementsByTagName("input"));
		JDIF.FieldValidator.restrict_length_collection(document.body.getElementsByTagName("textarea"));
	})
);










