﻿addNamespace("Mantis.Form");

var FormVaild=new Class({	
	options:{
		required:[],
		templates:[],
		errors:[],
		errElement:null,
		requiredClass:"required"
	},	
	initialize:function (options) {	
		this.setOptions(options);
	},	
	valid:function () {
		this.fireEvent("onBeforeValid");
		return FormVaild._vaild(this.options);
		this.fireEvent("onAfterValid");
	}	
});
FormVaild.implement(new Options,new Events);

// static properties
$extend(FormVaild,{
	_isVaild:true,
	_itemIndex:0,
	_emailRegex:/^[\w\-\.]*@([a-z0-9\-]*\.)+[a-z]{2,}$/,
	_docsRegex:/.*\.(doc|docx|xls|xlsx|ppt|pptx|pdf|txt|rtf)$/,
	_vaild:function (options) {
		if(options.errElement) options.errElement.hide();
		options.required.each(function(inp,index){
			if(!inp.value){
				FormVaild._itemIndex++;
				if(FormVaild._itemIndex==1){inp.focus();}
				//inp.addClass(options.requiredClass);				
				inp.setStyles({"border":"solid 1px red"});
				FormVaild._isVaild=false;
			}else{
				//inp.removeClass(options.requiredClass);
				inp.setStyles({"border":"solid 1px #bfbfbf"});
				if(options.templates[index]!=null){
					switch(options.templates[index]){
						case "email":
							if(!FormVaild._emailRegex.test(inp.value)){
								inp.setStyles({"border":"solid 1px red"});						
								//alert(options.errElement);
								if(options.errElement){
									options.errElement.show();
									options.errElement.setText(options.errors[index]);
								}
								inp.focus();
								FormVaild._isVaild=false;
								FormVaild._itemIndex++;
							}
						break;
						case "docs":
							if(!FormVaild._docsRegex.test(inp.value)){
								inp.setStyles({"border":"solid 1px red"});						
								//alert(options.errElement);
								if(options.errElement) options.errElement.setText(options.errors[index]);
								inp.focus();
								FormVaild._isVaild=false;
								FormVaild._itemIndex++;
							}
						break;
					}
				}
				if(FormVaild._itemIndex==0)FormVaild._isVaild=true;
			}			
		});
		
		//alert(this._isVaild)
		FormVaild._itemIndex=0;
		return this._isVaild;
	}
});
$extend(FormVaild,new Events);

if (typeof(Sys)!=="undefined") Sys.Application.notifyScriptLoaded();
