/*
DPP Client Validator Scripts
*/


/*
Defines a DPP Client Validator
*/
function DppClientValidator(validatorId, clientValidationFunction, controlToValidateId)
{
	this._validatorId = validatorId;
	this._clientValidationFunction = clientValidationFunction;
	this._controlToValidateId = controlToValidateId;
	
	this.Id = function(){
		return this._validatorId;
	}
	
	this.ControlToValidate = function(){
		return document.getElementById(this._controlToValidateId);
	}
	
	this.IsValid = function(){
		if(clientValidationFunction == null)
			return true;
		return this._clientValidationFunction(this._controlToValidateId);
	}
}


/*
The Client Validation Manager
*/
var DppClientValidationManager = new function()
{	
	this.clientValidatorsArray = new Array();
	
	this.ShouldPageBeValid = true;
	
	this.Add = function(dppClientValidator){
		this.clientValidatorsArray.push(dppClientValidator);
	}
	
	var indexToRemove = -1;
	
	this.Remove = function(dppClientValidatorId){
		for(var index=0; index<this.clientValidatorsArray.length; index++)
			if(this.clientValidatorsArray[index].Id() == dppClientValidatorId)
			{
				indexToRemove = index;
				break;
			}
			
		this.clientValidatorsArray.splice(indexToRemove,1);
	}
	
	this.GetValidatorById = function(dppClientValidatorId){
		for(var index=0; index<this.clientValidatorsArray.length; index++)
			if(this.clientValidatorsArray[index].Id() == dppClientValidatorId)
				return this.clientValidatorsArray[index];
				
		return null;
	}
	
	this.IsPageValid = function(){
		var controlToFocus = null;
		var isPageValid = true;
		for(var index=0; index<this.clientValidatorsArray.length; index++)
		{
			if(this.clientValidatorsArray[index].IsValid() == false)
			{
				if(controlToFocus == null)
					controlToFocus = this.clientValidatorsArray[index].ControlToValidate();
				isPageValid = false;
			}
		}
		
		if(controlToFocus != null)
			controlToFocus.focus();
		
		return isPageValid && this.ShouldPageBeValid;
	}
}
