// JavaScript Document

var ComparerType = {Rowne:0,Mniejsze:-1,Wieksze:1};
var CompareValueType ={Liczba:0, Data:1, Tekst:2};

function ComparerObjectsValidiator(fieldReferance, fieldToCompare, compareNeed, message, typWartosci){
	this.fileToReq = fieldReferance;
	this.fieldToCompare = fieldToCompare;
	this.messageToDisplay = message;
	this.drawMessage = true;
	this.typWartosic = typWartosci;
	this.compareType = compareNeed;
	
	document.writeln("<div style=\"float:both; color:red;\" id=\"CMessageFor"+this.fileToReq+"\">");
	document.writeln("</div>");
	
	this.CheckData = function(){
		var showError = true;
		var objRef = document.getElementById(this.fileToReq);
		var objToCompare = document.getElementById(this.fieldToCompare);
		//
		//alert(this.fileToReq+" -> "+objToCompare);
		if(objRef != null && objToCompare != null){
			//	alert(objRef.value);
			if(objRef.value != "" && objToCompare.value!= ""){
				if(this.typWartosic != undefined){
					switch(this.typWartosic){
						case CompareValueType.Liczba:
						switch(this.compareType){
							case ComparerType.Rowne:
							if(objRef.value == objToCompare.value)
								showError = false;
							break;
							case ComparerType.Mniejsze:
							if(objRef.value < objToCompare.value)
								showError = false;
							break;
							case ComparerType.Wieksze:
							if(objRef.value > objToCompare.value)
								showError = false;
							break;
						}
						break;
						case CompareValueType.Data:
						var d = objRef.value.split("-");
						var dateRef = new Date(d[0],d[1]-1,d[2]);
						d = objToCompare.value.split("-");
						var dateCom = new Date(d[0],d[1]-1,d[2]);
						switch(this.compareType){
							case ComparerType.Rowne:
							if(dateRef == dateCom)
								showError = false;
							break;
							case ComparerType.Mniejsze:
							if(dateRef < dateCom)
								showError = false;
							break;
							case ComparerType.Wieksze:
							if(dateRef > dateCom)
								showError = false;
							break;
						}
						break;
						case CompareValueType.Tekst:
						switch(this.compareType){
							case ComparerType.Rowne:
							if(objRef.value == objToCompare.value)
								showError = false;
							break;
							case ComparerType.Mniejsze:
							if(objRef.value < objToCompare.value)
								showError = false;
							break;
							case ComparerType.Wieksze:
							if(objRef.value > objToCompare.value)
								showError = false;
							break;
						}
						break;
						default:
						alert("Nie wybrano typu wartości");
						break
					}
				}else{
					alert("Nie wybrano typu wartości");
				}
			}
		}
		
		var obj = document.getElementById("CMessageFor"+this.fileToReq);
		if(obj){
			if(showError){
				obj.innerHTML = this.drawMessage == true ? this.messageToDisplay : "*";
			}else{
				obj.innerHTML = "";
			}
		}
		return !showError;
	}
}

function RequireDataValidiator(fieldId, messageDisplay){
	
	this.fileToReq = fieldId;
	this.messageToDisplay = messageDisplay;
	this.drawMessage = true;
	
	document.writeln("<div style=\"float:both; color:red;\" id=\"RMessageFor"+this.fileToReq+"\">");
	document.writeln("</div>");
	
	this.CheckData = function(){
		var obj = document.getElementById(this.fileToReq);
		//alert(obj);
		if(obj != null){
			//alert(obj.value);
			if(obj.value != ""){
				var obj = document.getElementById("RMessageFor"+this.fileToReq);
				if(obj){
					obj.innerHTML = "";
				}
				return true;
			}
		}
		
		var obj = document.getElementById("RMessageFor"+this.fileToReq);
		if(obj){
			obj.innerHTML = this.drawMessage == true ? this.messageToDisplay : "*";
		}
		return false;
	}
}

function ValidationSummary(name, useSummary, _summaryField){
	this.elements = new Array();
	this.arrayOfErrors = new Array();
	
	this.name = name;
	this.summaryField = _summaryField;
	
	this.AddValidation = function(obj){
		obj.drawMessage = !useSummary;
		this.elements.push(obj);
	}
	
	this.DrawErrors = function(){
		var obj = document.getElementById(this.summaryField);
		if(obj){
			obj.innerHTML = "";
			for(i=0; i<this.arrayOfErrors.length; i++){
				obj.innerHTML += this.arrayOfErrors[i]+"<br/>";
			}
		}
		else{
			alert("No object to draw error "+this.summaryField);
		}
	}
	
	this.Validate = function(){
		var setFalse = false;
		this.arrayOfErrors = [];
		for(i=0; i<this.elements.length; i++){
			if(!this.elements[i].CheckData()){
				setFalse = true;
				this.arrayOfErrors.push(this.elements[i].messageToDisplay);
			}
		}
		if(setFalse){
			if(this.useSummary)
			this.DrawErrors();
		}
		return !setFalse;
	}
}