/**
 *  Validator 
 *  @author michal.senk@siteone.cz
 *  @require yui/yahoo-dom-event.js
 *	@param formElement HTML Form element
 *	@param errorClassName classa ktera se hodi inputum ktere jsou spatne vyplnene (ja vetsinou davam cervene pismo)
 */
 function FormValidator(formElement,errorClassName){
	
	this.form = formElement;
	this.errorClassName = errorClassName;
	this.validovanePrvkyTyp = null;
	
	var that = this;
	
	
	var formElems = Dom.getElementsBy(function(elem){
											   return ((elem.tagName=="INPUT" && elem.type=="text") || elem.tagName=="TEXTAREA")
											   },null, this.form);

	var regEmail = new RegExp('^([_a-zA-Z0-9\\.\\-]+)@([_a-zA-Z0-9\\.\\-]+)\\.([a-zA-Z]{2,4})$','i');
	var regTel = new RegExp('^[ 0-9\.\+\/\-]{8,}$','i');
	var regPsc = new RegExp('^[ 0-9]{5}$','i');
	var regNumber = new RegExp('^[ 0-9]+$','i');
	
	
	this.MANDAT_MSG = "Vyplňte prosím všechny povinné položky.";
	this.ERR_MSG = "Položky označené červeným písmem nejsou vyplněny správně.";
	this.errMessage = false;
		
	this.validate = function(){
		
		var errMsgMandat = "";
		var errMsgError = "";
		that.errMessage="";
		
		for (var x=0;x<formElems.length;x++){
			
			if (Dom.hasClass(formElems[x],'mandatory') && formElems[x].value=="" ){
				errMsgMandat = that.MANDAT_MSG+"\n";
			}
			
			// email
			if (formElems[x].name.indexOf("email")>(-1) && regEmail.test(formElems[x].value)==false && formElems[x].value!=""){
				Dom.addClass(formElems[x], that.errorClassName);
				errMsgError = that.ERR_MSG;
				
			// telefon	
			} else if (formElems[x].name.indexOf("telefon")>(-1) && regTel.test(formElems[x].value)==false && formElems[x].value!=""){
				Dom.addClass(formElems[x], that.errorClassName);
				errMsgError = that.ERR_MSG;
				
			// psc
			} else if (formElems[x].name.indexOf("psc")>(-1) && regPsc.test(formElems[x].value)==false && formElems[x].value!=""){
				Dom.addClass(formElems[x], that.errorClassName);
				errMsgError = that.ERR_MSG;
				
			} else if (formElems[x].name.indexOf("pocet")>(-1) && regNumber.test(formElems[x].value)==false && formElems[x].value!=""){
				Dom.addClass(formElems[x], that.errorClassName);
				errMsgError = that.ERR_MSG;
				
			} else if (formElems[x].name.indexOf("cena")>(-1) && regNumber.test(formElems[x].value)==false && formElems[x].value!=""){
				Dom.addClass(formElems[x], that.errorClassName);
				errMsgError = that.ERR_MSG;
				
			} else {
				Dom.removeClass(formElems[x], that.errorClassName);
			}
			
		}
		
		that.errMessage = errMsgMandat+errMsgError;

		if (that.errMessage==""){
			return true;
		} else {
			return false;
		}
		
	}
	
	this.getErrMsg = function(){
			return that.errMessage;	
	}
	

	
 
 }