
var oldValidatorUpdateDisplay;

if (typeof(ValidatorUpdateDisplay) == "function")
{
	oldValidatorUpdateDisplay = ValidatorUpdateDisplay;
}
ValidatorUpdateDisplay = As24ValidatorUpdateDisplay;
RegularExpressionValidatorEvaluateIsValid = As24RegularExpressionValidatorEvaluateIsValid;
ValidationSummaryOnSubmit = As24ValidationSummaryOnSubmit;

var Page_LastValidationGroup;

function RequiredFieldValidatorEvaluateIsValid(val) 
{
	var tb=gE(val.controltovalidate);
	if (tb.defaultText && tb.defaultText.length>0)
	{
		var tbval=ValidatorTrim(ValidatorGetValue(val.controltovalidate));
		if (tbval==tb.defaultText || tbval.length==0) return false;
		return true;
	}
  return (ValidatorTrim(ValidatorGetValue(val.controltovalidate)) != ValidatorTrim(val.initialvalue))
}
function As24ValidatorUpdateDisplay(val) 
{
  // call original ValidatorUpdateDisplay
  if (oldValidatorUpdateDisplay != null)
  {
	oldValidatorUpdateDisplay(val);
  }
  if (!val.controltovalidate) return;
  if (val.isrequired && val.isrequired.toUpperCase()=='TRUE')
  {
		if ((val.isrequired.toUpperCase()=='TRUE') && 
			  (ValidatorTrim(ValidatorGetValue(val.controltovalidate)).length==0) &&
			  (val.requirederrormessage))
		{
			val.innerText=val.requirederrormessage;
		}
		else
		{
			val.innerText=val.errormessage;
		}
	}
  
  // the highlighting extension
  var objControlToValidate = gE(val.controltovalidate);
  if (val.enablecontrolhighlighting == null || val.enablecontrolhighlighting == true)
  {
	  if (val.errorcssclass)
	  {
		if (val.isvalid)
		  RemoveClassName(objControlToValidate, val.errorcssclass);
		else
		  AddClassName(objControlToValidate, val.errorcssclass);
	  }
  }
  
  UpdateAs24ValidationSummary(val);
}

function As24RegularExpressionValidatorEvaluateIsValid(val) 
{
    var value = ValidatorGetValue(val.controltovalidate);
    var req=(val.isrequired.toUpperCase()!='TRUE');
    if (ValidatorTrim(value).length == 0) return req;
		var cv=gE(val.controltovalidate);
		if (cv.attributes.defaultText && cv.attributes.defaultText.value==value) return req;
    var rx=new RegExp(val.validationexpression);
    var matches=rx.exec(value);
    return (matches!=null && value==matches[0]);
}

function RadiusZipValidatorCustomHookup()
{
	if (typeof(Page_Validators) == "undefined")
		return;
	var i, val;
	for (i = 0; i < Page_Validators.length; i++) {
		val = Page_Validators[i];
		if (typeof(val.selectlisttovalidate) == "string")
		{
			ValidatorHookupControlID(val.selectlisttovalidate, val);
			
			if (typeof(val.controltovalidate) == "string")
			{
				var radiusDropDown = gE(val.selectlisttovalidate);
				var zipCodeTextBox = gE(val.controltovalidate);
				if (radiusDropDown != null && zipCodeTextBox != null && zipCodeTextBox.defaultText != null)
				{
					var prevalidateFunction = "SetZipCodeToDefault(this, '" + zipCodeTextBox.id + "', '" + val.ddldefault + "'); ";
					ValidatorHookupEvent(radiusDropDown, "onchange", prevalidateFunction);
				}
			}
		}
	}
}

function SetZipCodeToDefault(radiusDropDown, zipCodeTextBoxId, ddlDefaultValue)
{
	if (radiusDropDown.options[radiusDropDown.selectedIndex].value == ddlDefaultValue)
	{
		var zipCodeTextBox = gE(zipCodeTextBoxId);
		zipCodeTextBox.value = zipCodeTextBox.defaultText;
	}
}

function RadiusZipValidatorEvaluateIsValid(source, clientArgs)
{
	try {
		var value=ValidatorGetValue(source.controltovalidate);
		var ddl=gE(source.selectlisttovalidate);
		var tb=gE(source.controltovalidate);
		var tbVal=(tb.defaultText ? tb.defaultText : value);
		var skipregex = false;
		if (ddl.selectedIndex>source.ddldefault)
		{
			tbVal=(tb.defaultText ? tb.defaultText : '');
			if ((ValidatorTrim(value).length==0)||(tbVal==value))
			{
				//ticket 11466, No direct error message when change the radius
				clientArgs.IsValid=true; //false
				skipregex = true;
			}
		}
		else
		{
			if (tbVal==value)
			{
				clientArgs.IsValid=true;
				skipregex = true;
			}
		}
		if (!skipregex)
		{
			var rx=new RegExp(source.validationexpression);
			var matches=rx.exec(value);
			clientArgs.IsValid=(matches!=null && value==matches[0]);
			if (clientArgs.IsValid && ddl.selectedIndex<=source.ddldefault)
			{
				clientArgs.IsValid = false;
			}
		}
	} 
	catch (e) {clientArgs.IsValid=false;}
  // mark drop down as wrong
  if (source.errorcssclass)
  {
		if (clientArgs.IsValid)
			RemoveClassName(ddl,source.errorcssclass);
		else
			AddClassName(ddl, source.errorcssclass);
	}
}

function As24ValidationSummaryOnSubmit(validationGroup) 
{
    if (typeof(Page_ValidationSummaries) == "undefined") return;
    Page_LastValidationGroup=validationGroup;
    var summary, s;
    for (var sums = 0; sums < Page_ValidationSummaries.length; sums++) {
        summary = Page_ValidationSummaries[sums];
        summary.style.display = "none";
				var dm = summary.displaymode ? summary.displaymode.value : summary.attributes.displaymode.value;
        if (!Page_IsValid && IsValidationGroupMatch(summary, validationGroup)) {
            if (summary.showsummary != "False") {
                summary.style.display = "block";
                // next line is new
                if (dm != 'None') {
                  switch (dm) {
                      case "List":
                          first = "";
                          pre = "<span>";
                          post = "</span><br/>";
                          end = "";
                          break;
                      case "BulletList":
                      default:
                          first = "<ul>";
                          pre = "<li>";
                          post = "</li>";
                          end = "</ul>";
                          break;
                      case "SingleParagraph":
                          first = "";
                          pre = "<span>";
                          post = " </span>";
                          end = "<br/>";
                          break;
                  }
                  s = first;
                  for (var i=0; i<Page_Validators.length; i++) {
                      if (!Page_Validators[i].isvalid && typeof(Page_Validators[i].errormessage) == "string") 
                      {
                        //s += pre + Page_Validators[i].errormessage + post;
                        // new:
                        var valCtrl=Page_Validators[i].controltovalidate;
						var pre1=pre;
						if (Page_Validators[i].attributes.resourcekey)
						{
							var pv=Page_Validators[i];
							pre1=pre.substring(0,pre.length-1)+
								' controltype="' + pv.attributes.controltype.value + '"' +
								' propertiestotranslate="ErrorMessage"' +
								' resourcekey="' + pv.attributes.resourcekey.value + '">';
						}
                        if (!valCtrl || valCtrl=='undefined')
                        {
													if (Page_Validators[i].attributes.focusElement)
														valCtrl=Page_Validators[i].attributes.focusElement.value;
                        }
                        if (valCtrl && valCtrl!='undefined')
                        {
													s += pre1 + '<a href="javascript:Val_SetFocus(\'' + 
														valCtrl + '\')">' + 
														GetErrorMessage(Page_Validators[i]) + '</a>' + post;
                        }
                        else
                        {
													s += pre1 + GetErrorMessage(Page_Validators[i]) + post;
                        }
                        if (dm == 'SingleParagraph') pre =', '+pre;
                      }
                  }
                  s += end;
                  var summaryFields = gE(summary.id+'_fields');
                  try { summaryFields.innerHTML = s; } catch(e) {}
                }
                window.scrollTo(0,0);
            }
            if (summary.showmessagebox == "True") {
                s = "";
                if (typeof(summary.headertext) == "string") {
                    s += summary.headertext + "\r\n";
                }
                var lastValIndex = Page_Validators.length - 1;
                for (var i=0; i<=lastValIndex; i++) {
                    if (!Page_Validators[i].isvalid && typeof(Page_Validators[i].errormessage) == "string") {
                        switch (dm) {
                            case "List":
                                s += GetErrorMessage(Page_Validators[i]);
                                if (i < lastValIndex) {
                                    s += "\r\n";
                                }
                                break;
                            case "BulletList":
                            default:
                                s += "- " + GetErrorMessage(Page_Validators[i]);
                                if (i < lastValIndex) {
                                    s += "\r\n";
                                }
                                break;
                            case "SingleParagraph":
                                s += GetErrorMessage(Page_Validators[i]) + " ";
                                break;
                        }
                    }
                }
                alert(s);
            }
        }
    }
    if (typeof(onValidationFailed)=='function') onValidationFailed();
}

function GetErrorMessage(val)
{
	if (val.isrequired && val.isrequired.toUpperCase()=='TRUE' && gE(val.controltovalidate).value.length==0) 
		return val.requirederrormessage;
	return val.errormessage;
}

function Val_SetFocus(id)
{
  var obj = gE(id);
  if (obj)
  {
		obj.focus();
		if (obj.select) obj.select();
  }
}

function UpdateAs24ValidationSummary(val) 
{
    if (typeof(Page_ValidationSummaries) == "undefined") return;

    var summary, s;
    for (var sums = 0; sums < Page_ValidationSummaries.length; sums++) {
        summary = Page_ValidationSummaries[sums];
            summary.style.display = "none";
			if ((!val.isvalid || !Page_IsValid) && IsValidationGroupMatch(summary, val.validationGroup)) {
            if (summary.showsummary != "False") {
                summary.style.display = "block";
                // next line is new
                if (summary.displaymode != 'None') {
                  switch (summary.displaymode) {
                      case "List":
                          first = "";
                          pre = "<span>";
                          post = "</span><br/>";
                          end = "";
                          break;
                      case "BulletList":
                      default:
                          first = "<ul>";
                          pre = "<li>";
                          post = "</li>";
                          end = "</ul>";
                          break;
                      case "SingleParagraph":
                          first = "";
                          pre = "<span>";
                          post = " </span>";
                          end = "<br/>";
                          break;
                  }
                  s = first;
                  for (var i=0; i<Page_Validators.length; i++) {
                      if (!Page_Validators[i].isvalid && typeof(Page_Validators[i].errormessage) == "string" && IsValidationGroupMatch(summary, Page_Validators[i].validationGroup)) 
                      {
                        var valCtrl=Page_Validators[i].controltovalidate;
						var pre1=pre;
						if (Page_Validators[i].attributes.resourcekey)
						{
							var pv=Page_Validators[i];
							pre1=pre.substring(0,pre.length-1)+
								' controltype="' + pv.attributes.controltype.value + '"' +
								' propertiestotranslate="ErrorMessage"' +
								' resourcekey="' + pv.attributes.resourcekey.value + '">';
						}
                        if (!valCtrl || valCtrl=='undefined')
                        {
													if (Page_Validators[i].attributes.focusElement)
														valCtrl=Page_Validators[i].attributes.focusElement.value;
                        }
                        if (valCtrl && valCtrl!='undefined')
                        {
													s += pre1 + '<a href="javascript:Val_SetFocus(\'' + 
														valCtrl + '\')">' + 
														GetErrorMessage(Page_Validators[i]) + '</a>' + post;
                        }
                        else
                        {
													s += pre1 + GetErrorMessage(Page_Validators[i]) + post;
                        }
                        if (summary.displaymode == 'SingleParagraph') pre =', '+pre;
                      }
                  }
                  s += end;
                  var summaryFields = gE(summary.id+'_fields');
                  try { summaryFields.innerHTML = s; } catch(e) {}
                }
            }
        }
    }
}
