
var VALIDATE;
var FCKeditorAPI;
function validator(array,run){
	this.error=false;
	this.run=run
	this.errorArray=new Array();
	this.validationArray=array;
	this.runValidation=runValidation;
	this. hasErrors= hasErrors;
	this.returnErrorString=returnErrorString;
	this.colorErrors=colorErrors;
	this.clearErrorArray=clearErrorArray;
	this.indexHasError=indexHasError;
	this.validatePvm=validatePvm;
	this.remove=remove;
	this.allowDisable=true;
	this.runValidation();
	this.colorErrors()
	/*$(document).keyup(function(){
				
					
				VALIDATE.runValidation();
				VALIDATE.colorErrors();
				
			 });*/
	
}
function remove(){
	//alert("ok");
	//$(document).removeEventListener("keyup");
	//$.hotkeys.remove('Ctrl+l');
}
function clearErrorArray(){

this.errorArray=new Array();
this.error=false;
}
function validatePvm(value){
	
	if (value==undefined || value=="" || value.length==0){
		return false;
	}
	var a=value.split(".");
	
	if(a.length!=3){
	return false;	
	}
	for(var i=0;i<a.length;i++){
			if(isNaN(a[i])){
			
				return false;
				
			}
			
		
	}
	
	if(a[0].length!=2 || a[1].length!=2 || a[2].length!=4){
		
	return false;	
	}
	return true;
	
}
function runValidation(){
	
	this.clearErrorArray();
	return;
	for(var i=0;i<this.validationArray.length;i++){
		
	
			var linkki=this.validationArray[i].jqueryLink;
			
		switch(this.validationArray[i].method){
			case "fck":
			this.allowDisable=false;
			//alert("FCK"+FCKeditorAPI.GetInstance(linkki).GetXHTML());
			if(FCKeditorAPI==undefined){
				
				
			}else{
				var value=FCKeditorAPI.GetInstance(linkki).GetXHTML();
				
				if(value==undefined || value=="" || value.length==0){
					this.error=true;
					var eObject=new Object();
					eObject.string=this.validationArray[i].onError
					eObject.index=i;
					this.errorArray.push(eObject)
						
				}
				
			}
			break;
			case "requireString":
				//valuessa oltavas string+1
				
				var value=$(linkki).attr("value");
				
				if(value==undefined || value=="" || value.length==0){
					this.error=true;
					var eObject=new Object();
					eObject.string=this.validationArray[i].onError
					eObject.index=i;
					this.errorArray.push(eObject)
						
				}
			break;
			case "requirePvm":
				//valuessa oltavas string+1
				
				
				var value=$(linkki).attr("value");
				
				
				if(!this.validatePvm(value)){
					this.error=true;
					var eObject=new Object();
					eObject.string=this.validationArray[i].onError
					eObject.index=i;
					this.errorArray.push(eObject)
						
				}
			break;
			case "radioGroupRequire":
				
				
				var selected=($(linkki+" > input[@checked]").attr("value"));
				
				if(selected==undefined){
						this.error=true;
						var eObject=new Object();
						eObject.string=this.validationArray[i].onError
						eObject.index=i;
						this.errorArray.push(eObject)
				}
			break;
			
			
		}
		
	}
	
	
	
}
function hasErrors(){
	return this.error;	
	
}
function returnErrorString(){
	var str="";
	for(var i=0;i<this.errorArray.length;i++){
		str+="<span>"+this.errorArray[i].string+"</span>";
	}
	return str;
}
function indexHasError(index){
	for(var i=0;i<this.errorArray.length;i++){
		if(this.errorArray[i].index==index){
			return true;
		}
		
	}
	return false;
}

function colorErrors(){
	return;
	$(this.run).removeClass("disabled");
				$(this.run).addClass("run");
		$(this.run).get(0).disabled =false
		
		return;
	for(var i=0;i<this.validationArray.length;i++){
		
		var linkki=(this.validationArray[i].jqueryLink);
		$(linkki).unbind();
		switch(this.validationArray[i].method){
			case "fck":
			if(FCKeditorAPI!=undefined){
			if(this.indexHasError(i)){
				
			}
		
			}else{
				
				
			}
			break;
			case "radioGroupRequire":
			
			if(this.indexHasError(i)){
				$(linkki).parent().addClass("fielderror");
				
			}else{
				$(linkki).parent().removeClass("fielderror");
			}
				$(linkki+" > input ").change(function(){
			
				VALIDATE.runValidation();
				VALIDATE.colorErrors();
				
			 });
			break;
			
			
			default:
			
		if(this.indexHasError(i)){
				$(linkki).addClass("fielderror");
				
		}else{
			
		
			
			
			$(linkki).removeClass("fielderror");
	
		
	}
	
	
	
		/*$(linkki).change(function(){
				
					
				VALIDATE.runValidation();
				VALIDATE.colorErrors();
				
			 });*/
		break;
		}
	
	
	}
			
	if(this.hasErrors() && this.allowDisable){
			$(this.run).removeClass("run");
			$(this.run).addClass("disabled");
		$(this.run).get(0).disabled = true 	
	}else{
				$(this.run).removeClass("disabled");
				$(this.run).addClass("run");
		$(this.run).get(0).disabled =false
	}
		
	
}
