﻿function McCannValidatorCommon_ChangeToError(controlToChange, control)
{
	if(controlToChange)
	{
		controlToChange.className = control.errorCssClass;
		control.style.visiblity = "visible";
	}
}

function McCannValidatorCommon_ChangeToDefault(controlToChange, control)
{
	if(controlToChange)
	{
		if(controlToChange.className == control.errorCssClass)
		{
			controlToChange.className = control.defaultCssClass;
		}
	}
}

function McCannValidatorCommon_Trim(string) {
	return ValidatorTrim(string);
}

function McCannRequiredField_validate(sender)
{
	var controlToValidate = document.getElementById(sender.controltovalidate);
	var controlToChange = document.getElementById(sender.controlToChange);
	
	if(controlToValidate.value == "")
	{
		McCannValidatorCommon_ChangeToError(controlToChange, sender);
		return false;
	}
	else
	{
		McCannValidatorCommon_ChangeToDefault(controlToChange, sender);
	}
	
	return true;
}

function McCannRegularExpressionValidator_validate(sender)
{
	var controlToValidate = document.getElementById(sender.controltovalidate);
	var controlToChange = document.getElementById(sender.controlToChange);
	
	var value = McCannValidatorCommon_Trim(controlToValidate.value);
		
	if(value.length == 0 && sender.requiredField == "False")
	{
		return true;
	}
	else if(value.length == 0 && sender.requiredField == "True")
	{
		McCannValidatorCommon_ChangeToError(controlToChange, sender);
		return false;
	}
	
	var regex = new RegExp(sender.regularExpression);	
	var matches = regex.exec(controlToValidate.value);	
	
	if(matches == null || (matches != null && controlToValidate.value != matches[0]))
	{
		McCannValidatorCommon_ChangeToError(controlToChange, sender);
		return false;
	}
	else
	{
		McCannValidatorCommon_ChangeToDefault(controlToChange, sender);
	}
	
	return true;
}

function McCannLengthValidator_validate(sender)
{
	var controlToValidate = document.getElementById(sender.controltovalidate);
	var controlToChange = document.getElementById(sender.controlToChange);
	
	if(controlToValidate)
	{
		if(sender.minLength != -1)
		{
			if(controlToValidate.value.length < sender.minLength)
			{
				McCannValidatorCommon_ChangeToError(controlToChange, sender);
				return false;
			}
		}
		
		if(sender.maxLength != -1)
		{
			if(controlToValidate.value.length > sender.maxLength)
			{
				McCannValidatorCommon_ChangeToError(controlToChange, sender);
				return false;
			}
		}
	}
	
	McCannValidatorCommon_ChangeToDefault(controlToChange, sender);
	return true;
}

function McCannCheckBoxValidator_validate(sender)
{
	var controlToValidate = document.getElementById(sender.controltovalidate);
	var controlToChange = document.getElementById(sender.controlToChange);
	
	if(sender.controltovalidate == sender.controlToChange)
	{
		var elements = document.getElementsByTagName("label");
						
		for(i=0;i<elements.length;i++)
		{
			var element = elements.item(i);
			if(element)
			{
				if(element.attributes["for"])
				{
					if(element.attributes["for"].value == sender.controlToChange)
					{
						controlToChange = element;
						break;
					}
				}
			}
		}
	}
	
	if(controlToValidate)
	{
		if(!controlToValidate.checked)
		{
			
			
			McCannValidatorCommon_ChangeToError(controlToChange, sender);
			return false;
		}
	}
	
	McCannValidatorCommon_ChangeToDefault(controlToChange, sender);
	return true;
}

function McCannCheckBoxListValidator_validate(sender)
{
	var controlToValidate = document.getElementById(sender.controltovalidate);
	var controlToChange = document.getElementById(sender.controlToChange);
	
	if(controlToValidate)
	{
		var index = 0;
		var count = 0;
		var item;
		
		while(item = document.getElementById(sender.controltovalidate + "_" + index))
		{
			if(item.checked)
			{
				count++;
			}
			
			index++;
		}
		
		if(count < sender.requiredCount)
		{
			McCannValidatorCommon_ChangeToError(controlToChange, sender);
			return false;
		}
		
	}
	
	McCannValidatorCommon_ChangeToDefault(controlToChange, sender);
	return true;
}