﻿ValidatorValidate = function (val, validationGroup, event) {
	val.isvalid = true;
	if ((typeof (val.enabled) == 'undefined' || val.enabled != false) && IsValidationGroupMatch(val, validationGroup)) {
		if (typeof (val.evaluationfunction) == 'function') {
			val.isvalid = val.evaluationfunction(val);
			if (!val.isvalid && Page_InvalidControlToBeFocused == null && typeof (val.focusOnError) == 'string' && val.focusOnError == 't') {
				ValidatorSetFocus(val, event);
			}
		}

	}

	ClearValidatorCallouts();
	SetValidatorCallouts();
	ValidatorUpdateDisplay(val);
}

SetValidatorCallouts = function () {
	var i;
	var pageValid = true;
	for (i = 0; i < Page_Validators.length; i++) {
		var inputControl = document.getElementById(Page_Validators[i].controltovalidate);
		if (!Page_Validators[i].isvalid) {
			if (pageValid)
				inputControl.focus();
			WebForm_AppendToClassName(inputControl, 'error');
			pageValid = false;
		}
	}

	return pageValid;
}

ClearValidatorCallouts = function () {
	var i;
	var invalidConrols = [];
	for (i = 0; i < Page_Validators.length; i++) {
		var inputControl = document.getElementById(Page_Validators[i].controltovalidate);
		WebForm_RemoveClassName(inputControl, 'error');
	}
}

function WebForm_RemoveClassName(element, className) {
	var current = element.className;
	if (current) {
		if (current.substring(current.length - className.length - 1, current.length) == ' ' + className) {
			element.className = current.substring(0, current.length - className.length - 1);
			return;
		}

		if (current == className) {
			element.className = "";
			return;
		}

		var index = current.indexOf(' ' + className + ' ');
		if (index != -1) {
			/* BUG 1: index + 1 instead of index to include one space */
			element.className = current.substring(0, index + 1) + current.substring(index + className.length + 2, current.length);
			return;
		}

		/* BUG 2: className.length + 1 instead of className.length in order that the comparison is true */
		if (current.substring(0, className.length + 1) == className + ' ')
			element.className = current.substring(className.length + 1, current.length);
	}
}
function WebForm_AppendToClassName(element, className) {
	var current = element.className;
	if (current) {
		if (current.charAt(current.length - 1) != ' ') {
			current += ' ';
		}
		current += className;
	}
	else {
		current = className;
	}
	element.className = current;
}