String.prototype.trim=new Function("return this.replace(/^\\s+|\\s+$/g,'')");
if(!EE)var EE=new Object();
/* -------------------------------------------------------------------------
	DOM Utility Module 
---------------------------------------------------------------------------- */
EE.getAllChidren=function(el){if(this.hasRequired){return el.all ? el.all : el.getElementsByTagName('*');}}
EE.getElementsByClassName=function(className, startNode){
		var startNode = (startNode)? startNode : document; var els = this.getAllChidren(startNode); var elements = new Array();  
		for (var i = 0; i < els.length; i++){if(this.hasClass(els[i],className)){elements.push(els[i]);break;}}
		elements = (elements.length>1)? elements : elements[0];
		if(elements!=="undefined"){return elements;}else{return false;}
};
EE.hasClass=function(el,className){
	if(!el.className)return false; return(el.className.search('(^|\\s)'+className+'(\\s|$)')!= -1);
}
EE.removeClass=function(el,className){
	if(!el)return;el.className=el.className.replace(new RegExp('(^|\\s)'+className+'(\\s|$)'), RegExp.$1+RegExp.$2);
}
EE.addClass=function(el,className){
    if(!el || this.hasClass(el,className))return;el.className +=( (el.className=='')?'':' ')+className;
}
EE.normalizeSource=function(e){
	var e = (e) ? e : ((window.event) ? window.event : "");
	return((e.srcElement) ? e.srcElement : e.target);
}
EE.hasRequired =function(){ 
	if(document.getElementById && document.getElementsByTagName) {
		var html = document.getElementsByTagName('html')[0];
		EE.addClass(html,'has-dom');	
		return true;
	};
	return false;
}();
/* -------------------------------------------------------------------------
	FORMS Check Module
---------------------------------------------------------------------------- */
EE.Forms = {
	cache: [],
	errors: null,
	showSuccess: true,
	onload: function(){
		var forms = document.forms;
		for(i=0;i<forms.length;i++){
			if(EE.hasClass(forms[i],'check')){
				this.registerCheckForm(forms[i]);
			}
		}	
	},
	
	registerCheckForm: function(form) {
		var id=form.id; 
		this.cache[id]=[];
		form.onsubmit = this.checkForm;
		
		for (j=0;j<form.elements.length;j++){
			var el = form.elements[j];
			if(el.type.match(/(text|textarea)/)){
			if(EE.hasClass(el,'required')){el.check=el.onblur=this.checkRequired;this.cache[id].push(el);}
			if(EE.hasClass(el,'email')){el.check=el.onblur=this.checkEmail;this.cache[id].push(el);}
			}
			else if(el.type.match(/(select-one)/)){
			if(EE.hasClass(el,'required')){el.check=el.onchange=this.checkRequired;this.cache[id].push(el);}
			}
			else if(el.type.match(/(password)/)){
			if(el.id=='password-new'){el.check=el.onkeyup=this.checkPassword;this.cache[id].push(el);}
			if(el.id=='password-confirm'){el.check=el.onkeyup=this.checkPasswords;this.cache[id].push(el);}
			}
		}
	} ,
	
	checkRequired: function(e){
		var el=EE.normalizeSource(e);el=((el)? el : e);
		
		if(el.disabled) {
			EE.Forms.setSuccess(el);
			return;
		}
		
		(!el.value.trim().length==0 && el.value!="null")? EE.Forms.setSuccess(el) : EE.Forms.setError(el,"Field Required");
	},
	checkEmail: function(e){
		var el=EE.normalizeSource(e);el=((el)? el : e);
		
		if(el.disabled) {
			EE.Forms.setSuccess(el);
			return;
		}
		
		var filter=/^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		(filter.test(el.value))? EE.Forms.setSuccess(el) : EE.Forms.setError(el,"Invalid email address");
	},
	checkPassword: function(e){
		var el=EE.normalizeSource(e);el=((el)? el : e);
		if(el.value.trim().length>5){EE.Forms.setSuccess(el); return true}else{EE.Forms.setError(el,"Minimum is 6 characters"); return false}
	},
	checkPasswords: function(e){
		var el=EE.normalizeSource(e);el=((el)? el : e);
		if(EE.Forms.checkPassword(el)){
			var firstPassword = document.getElementById('password-new');
			(firstPassword.value == el.value)? EE.Forms.setSuccess(el) : EE.Forms.setError(el,"Passwords do not match");
		}
	},
	checkForm: function(e){
		var oForm,err,el,cache;
		oForm=EE.Forms;oForm.errors=null;el=EE.normalizeSource(e);cache=oForm.cache[el.id];
		for(i=0;i<cache.length;i++){var e=cache[i];e.check(e);};
		if(oForm.errors !== null){oForm.errors.focus;return false;}else{return true;alert(oForm.errors);}
	},
	setSuccess: function (el,msg){
		var status=EE.getElementsByClassName('status', el.parentNode.parentNode);
		if(status && this.showSuccess){
			status.innerHTML="<em class=\"success_msg\">"+(msg==null?"&nbsp;":msg)+"</em>";
			EE.removeClass(status,'error');EE.addClass(status,'success');
		}
		else {
			status.style.display = 'none';
		}
	},
	setError: function (el,msg){
		var status=EE.getElementsByClassName('status', el.parentNode.parentNode);
		if(status){
			this.errors=el;
			status.innerHTML="<em class=\"error_msg\">"+(msg==null?"&nbsp;":msg)+"</em>";
			EE.removeClass(status,'success');
			EE.addClass(status,'error');
			status.style.display = 'block';
			
		}
	}
}
/* ------------------------------------------------------------------------- */
EE.onload=function(){if(this.hasRequired){for(var module in this){if(this[module].onload){this[module].onload();};};};};
window.onload = function(){EE.onload();}

