function MaskedEditSetMessage(value, msg, txt) {
value.errormessage = msg;
if(txt == "")
value.text = msg;
else
value.text = txt;
value.innerHTML = value.text;
}
function MaskedEditMessageShow(value, IsValid) {
if(typeof (value.display) == "string") {
if(value.display == "None")
return;
if(value.display == "Dynamic") {
value.style.display = IsValid ? "none" : "inline";
return;
}
}
value.style.visibility = IsValid ? "hidden" : "visible";
}
function MaskedEditSetCssClass(value, Css) {
var target = $get(value.TargetValidator);
Sys.UI.DomElement.removeCssClass(target, value.InvalidValueCssClass);
Sys.UI.DomElement.removeCssClass(target, value.CssBlurNegative);
Sys.UI.DomElement.removeCssClass(target, value.CssFocus);
Sys.UI.DomElement.removeCssClass(target, value.CssFocusNegative);
if(Css != "")
Sys.UI.DomElement.addCssClass(target, Css);
}
function MaskedEditValidatorDateTime(value) {
MaskedEditSetMessage(value, "", "");
MaskedEditSetCssClass(value, "");
MaskedEditMessageShow(value, true);
if(value.IsMaskedEdit == "false")
return true;
var target = $get(value.TargetValidator);
if(value.ValidEmpty == "false") {
if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value() == value.InitialValue) {
MaskedEditSetMessage(value, value.EmptyValueMessage, value.EmptyValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
MaskedEditMessageShow(value, false);
return false;
}
}
if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value() == "")
return true;
var ret = true,
mask = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value();
// regular Exp
if(value.ValidationExpression != "") {
var rx = new RegExp(value.ValidationExpression),
matches = rx.exec(mask);
ret = (matches != null && mask == matches[0]);
if(!ret) {
MaskedEditSetMessage(value, value.InvalidValueMessage, value.InvalidValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
MaskedEditMessageShow(value, false);
return false;
}
}
var PartDate = target.MaskedEditBehavior.AutoFormatDate(),
PartTime = target.MaskedEditBehavior.AutoFormatTime(),
MinVlDt = "",
MinVlTm = "";
if(value.MinimumValue != "") {
MinVlDt = value.MinimumValue.split(" ")[0];
MinVlTm = value.MinimumValue.split(" ")[1];
}
var MaxVlDt = "",
MaxVlTm = "";
if(value.MaximumValue != "") {
MaxVlDt = value.MaximumValue.split(" ")[0];
MaxVlTm = value.MaximumValue.split(" ")[1];
}
ret = MaskedEditValidatorPartDate(value, PartDate, MinVlDt, MaxVlDt);
if(ret)
ret = MaskedEditValidatorPartTime(value, PartTime, MinVlTm, MaxVlTm);
// custom valid
if(ret && value.ClientValidationFunction != "") {
var args = { Value: mask, IsValid: true };
eval(value.ClientValidationFunction + "(value, args);");
ret = args.IsValid;
if(!ret) {
MaskedEditSetMessage(value, value.InvalidValueMessage, value.InvalidValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
}
}
if(!ret)
MaskedEditMessageShow(value, ret);
return ret;
}
function MaskedEditValidatorPartTime(value, mask, MinVl, MaxVl) {
var ret = true,
AttibTmSep = value.TimeSeparator,
AttibTmSyb = value.AmPmSymbol;
// hh:mm or hh:mm:ss
var SybTm = AttibTmSyb.split(";"),
tm = AttibTmSyb.replace(";", "|"),
reg1 = "^(^([0][0-9]|[1][0-2])" + AttibTmSep + "([0-5][0-9])" + AttibTmSep + "([0-5][0-9])\\s(" + tm + ")$)|(^([0][0-9]|[1][0-2])" + AttibTmSep + "([0-5][0-9])\\s(" + tm + ")$)$",
reg2 = "^(^([0-1][0-9]|[2][0-3])" + AttibTmSep + "([0-5][0-9])" + AttibTmSep + "([0-5][0-9])$)|(^([0-1][0-9]|[2][0-3])" + AttibTmSep + "([0-5][0-9])$)$",
H = -1,
M = -1,
S = -1,
aux = "",
m_arrValue = mask.split(AttibTmSep),
regex1 = new RegExp(reg1),
matches1 = regex1.exec(mask),
regex2 = new RegExp(reg2),
matches2 = regex2.exec(mask);
if(matches1 && (matches1[0] == mask)) {
aux = mask.substring(mask.length - 2).substring(0, 1);
H = parseInt(m_arrValue[0], 10);
if(aux.toUpperCase() == SybTm[1].substring(0, 1).toUpperCase()) {
H += 12;
if(H == 24)
H = 12;
}
M = parseInt(m_arrValue[1], 10);
S = (value.length > 9 ? parseInt(m_arrValue[2].substring(0, 2), 10) : 0);
} else if(matches2 && (matches2[0] == mask)) {
H = parseInt(m_arrValue[0], 10);
M = parseInt(m_arrValue[1], 10);
S = (mask.length > 5 ? parseInt(m_arrValue[2], 10) : 0);
}
if(H == -1 || M == -1 || S == -1)
ret = false;
if(!ret) {
MaskedEditSetMessage(value, value.InvalidValueMessage, value.InvalidValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
}
if(ret && (MaxVl != "" || MinVl != "")) {
var Hr,
Mr,
Sr,
m_arr;
if(MinVl != "") {
Hr = -1;
Mr = -1;
Sr = -1;
m_arr = MinVl.split(AttibTmSep);
matches1 = regex1.exec(MinVl);
matches2 = regex2.exec(MinVl);
if(matches1 && (matches1[0] == MinVl)) {
aux = MinVl.substring(MinVl.length - 2).substring(0, 1);
Hr = parseInt(m_arr[0], 10);
if(aux.toUpperCase() == SybTm[1].substring(0, 1).toUpperCase()) {
Hr += 12;
if(Hr == 24)
Hr = 0;
}
Mr = parseInt(m_arr[1], 10);
Sr = (MinVl.length > 9 ? parseInt(m_arr[2].substring(0, 2), 10) : 0);
} else if(matches2 && (matches2[0] == MinVl)) {
Hr = parseInt(m_arr[0], 10);
Mr = parseInt(m_arr[1], 10);
Sr = (MinVl.length > 5 ? parseInt(m_arr[2], 10) : 0);
}
ret = (H > Hr || (H == Hr && M > Mr) || (H == Hr && M == Mr && S >= Sr));
if(!ret) {
MaskedEditSetMessage(value, value.MinimumValueMessage, value.MinimumValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
}
}
if(MaxVl != "" && ret) {
Hr = -1;
Mr = -1;
Sr = -1;
m_arr = MaxVl.split(AttibTmSep);
matches1 = regex1.exec(MaxVl);
matches2 = regex2.exec(MaxVl);
if(matches1 && (matches1[0] == MaxVl)) {
aux = MaxVl.substring(MaxVl.length - 2).substring(0, 1);
Hr = parseInt(m_arr[0], 10);
if(aux.toUpperCase() == SybTm[1].substring(0, 1).toUpperCase()) {
Hr += 12;
if(Hr == 24)
Hr = 0;
}
Mr = parseInt(m_arr[1], 10);
Sr = (MaxVl.length > 9 ? parseInt(m_arr[2].substring(0, 2), 10) : 0);
} else if(matches2 && (matches2[0] == MaxVl)) {
Hr = parseInt(m_arr[0], 10);
Mr = parseInt(m_arr[1], 10);
Sr = (MaxVl.length > 5 ? parseInt(m_arr[2], 10) : 0);
}
ret = (H < Hr || (H == Hr && M < Mr) || (H == Hr && M == Mr && S <= Sr));
if(!ret) {
MaskedEditSetMessage(value, value.MaximumValueMessage, value.MaximumValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
}
}
}
return ret;
}
function MaskedEditValidatorPartDate(value, mask, MinVl, MaxVl) {
var ret = true,
AttibDtFmt = "MDY";
switch(value.DateFormat) {
case "DayMonthYear":
AttibDtFmt = "DMY";
break;
case "DayYearMonth":
AttibDtFmt = "DYM";
break;
case "MonthDayYear":
AttibDtFmt = "MDY";
break;
case "MonthYearDay":
AttibDtFmt = "MYD";
break;
case "YearDayMonth":
AttibDtFmt = "YDM";
break;
case "YearMonthDay":
AttibDtFmt = "YMD";
break;
}
var AttibDtSep = value.DateSeparator,
m_arrDate = mask.split(AttibDtSep);
if(parseInt(m_arrDate.length, 10) != 3) {
MaskedEditSetMessage(value, value.InvalidValueMessage, value.InvalidValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
ret = false;
}
if(AttibDtFmt.indexOf("D") == -1 || AttibDtFmt.indexOf("M") == -1 || AttibDtFmt.indexOf("Y") == -1) {
MaskedEditSetMessage(value, value.InvalidValueMessage, value.InvalidValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
ret = false;
}
var D = -1,
M = -1,
Y = -1;
if(ret) {
D = parseInt(m_arrDate[AttibDtFmt.indexOf("D")], 10);
M = parseInt(m_arrDate[AttibDtFmt.indexOf("M")], 10);
Y = parseInt(m_arrDate[AttibDtFmt.indexOf("Y")], 10)
ret = (D > 0 && M > 0 && Y > 0 && (D <= [, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][M] || D == 29 && M == 2 && Y % 4 == 0 && (Y % 100 > 0 || Y % 400 == 0)));
}
if(!ret) {
MaskedEditSetMessage(value, value.InvalidValueMessage, value.InvalidValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
}
if(ret && (MaxVl != "" || MinVl != "")) {
var m_arr,
Dr = -1,
Mr = -1,
Yr = -1;
if(MinVl != "") {
m_arr = MinVl.split(AttibDtSep);
Dr = parseInt(m_arr[AttibDtFmt.indexOf("D")], 10);
Mr = parseInt(m_arr[AttibDtFmt.indexOf("M")], 10);
Yr = parseInt(m_arr[AttibDtFmt.indexOf("Y")], 10);
ret = (Dr > 0 && Mr > 0 && Yr > 0 && Y > Yr || (Y == Yr && M > Mr) || (Y == Yr && M == Mr && D >= Dr));
if(!ret) {
MaskedEditSetMessage(value, value.MinimumValueMessage, value.MinimumValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
}
}
if(ret && MaxVl != "") {
m_arr = MaxVl.split(AttibDtSep);
Dr = parseInt(m_arr[AttibDtFmt.indexOf("D")], 10);
Mr = parseInt(m_arr[AttibDtFmt.indexOf("M")], 10);
Yr = parseInt(m_arr[AttibDtFmt.indexOf("Y")], 10);
ret = (Dr > 0 && Mr > 0 && Yr > 0 && Y < Yr || (Y == Yr && M < Mr) || (Y == Yr && M == Mr && D <= Dr));
if(!ret) {
MaskedEditSetMessage(value, value.MaximumValueMessage, value.MaximumValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
}
}
}
return ret;
}
function MaskedEditValidatorDate(value) {
MaskedEditSetMessage(value, "", "");
MaskedEditSetCssClass(value, "");
MaskedEditMessageShow(value, true);
if(value.IsMaskedEdit == "false")
return true;
var target = $get(value.TargetValidator);
if(value.ValidEmpty == "false") {
if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value() == value.InitialValue) {
MaskedEditSetMessage(value, value.EmptyValueMessage, value.EmptyValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
MaskedEditMessageShow(value, false);
return false;
}
}
if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value() == "")
return true;
var ret = true,
mask = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value();
// regular Exp
if(value.ValidationExpression != "") {
var rx = new RegExp(value.ValidationExpression),
matches = rx.exec(mask);
ret = (matches != null && mask == matches[0]);
if(!ret) {
MaskedEditSetMessage(value, value.InvalidValueMessage, value.InvalidValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
MaskedEditMessageShow(value, false);
return false;
}
}
ret = MaskedEditValidatorPartDate(value, mask, value.MinimumValue, value.MaximumValue);
if(ret && value.ClientValidationFunction != "") {
var args = { Value: mask, IsValid: true };
eval(value.ClientValidationFunction + "(value, args);");
ret = args.IsValid;
if(!ret) {
MaskedEditSetMessage(value, value.InvalidValueMessage, value.InvalidValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
}
}
if(!ret)
MaskedEditMessageShow(value, ret);
return ret;
}
// Validator time
function MaskedEditValidatorTime(value) {
MaskedEditSetMessage(value, "", "");
MaskedEditSetCssClass(value, "");
MaskedEditMessageShow(value, true);
if(value.IsMaskedEdit == "false")
return true;
var target = $get(value.TargetValidator);
if(value.ValidEmpty == "false") {
if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value() == value.InitialValue) {
MaskedEditSetMessage(value, value.EmptyValueMessage, value.EmptyValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
MaskedEditMessageShow(value, false);
return false;
}
}
if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value() == "")
return true;
var ret = true,
mask = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value();
// regular Exp
if(value.ValidationExpression != "") {
var rx = new RegExp(value.ValidationExpression),
matches = rx.exec(mask);
ret = (matches != null && mask == matches[0]);
if(!ret) {
MaskedEditSetMessage(value, value.InvalidValueMessage, value.InvalidValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
MaskedEditMessageShow(value, false);
return false;
}
}
ret = MaskedEditValidatorPartTime(value, mask, value.MinimumValue, value.MaximumValue);
if(ret && value.ClientValidationFunction != "") {
var args = { Value: mask, IsValid: true };
eval(value.ClientValidationFunction + "(value, args);");
ret = args.IsValid;
if(!ret) {
MaskedEditSetMessage(value, value.InvalidValueMessage, value.InvalidValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
}
}
if(!ret)
MaskedEditMessageShow(value, ret);
return ret;
}
// Validator Number
function MaskedEditValidatorNumber(value) {
MaskedEditSetMessage(value, "", "");
MaskedEditSetCssClass(value, "");
MaskedEditMessageShow(value, true);
if(value.IsMaskedEdit == "false")
return true;
var target = $get(value.TargetValidator),
numVal = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value().replace(new RegExp("(\[\w_.,\s\$ ])", "g"), "");
if(value.ValidEmpty == "false") {
if(numVal == value.InitialValue) {
MaskedEditSetMessage(value, value.EmptyValueMessage, value.EmptyValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
MaskedEditMessageShow(value, false);
return false;
}
}
if(numVal == "")
return true;
var ret = true,
AttibThSep = value.Thousands,
AttibDcSep = value.Decimal,
AttibCuSyb = value.Money,
AttibLastPos = value.LastMaskPosition + AttibCuSyb.length + 1;
var mask = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value();
if(value.ValidationExpression != "") {
var rx = new RegExp(value.ValidationExpression),
matches = rx.exec(mask);
ret = (matches != null && mask == matches[0]);
if(!ret) {
MaskedEditSetMessage(value, value.InvalidValueMessage, value.InvalidValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
MaskedEditMessageShow(value, false);
return false;
}
}
ret = false;
var cleanInput = null,
exp = null,
m = null,
num = null,
Compnum = null;
mask = mask.replace(new RegExp("(\\" + AttibThSep + ")", "g"), "");
mask = mask.replace(new RegExp("(\\" + AttibCuSyb + ")", "g"), "");
// trim
m = mask.match(/^\s*(\S+(\s+\S+)*)\s*$/);
if(m != null)
mask = m[1];
// integer
exp = /^\s*[-\+]?\d+\s*$/;
if(mask.match(exp) != null) {
num = parseInt(mask, 10);
ret = (num == (isNaN(num) ? null : num));
}
if(ret) {
if(value.MaximumValue != "") {
Compnum = parseInt(value.MaximumValue, 10);
if(Compnum == (isNaN(Compnum) ? null : Compnum))
if(num > Compnum) {
ret = false;
MaskedEditSetMessage(value, value.MaximumValueMessage, value.MaximumValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
}
}
if(ret && value.MinimumValue != "") {
Compnum = parseInt(value.MinimumValue, 10);
if(Compnum == (isNaN(Compnum) ? null : Compnum))
if(num < Compnum) {
ret = false;
MaskedEditSetMessage(value, value.MinimumValueMessage, value.MinimumValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
}
}
} else {
// float
exp = new RegExp("^\\s*([-\\+])?(\\d+)?(\\" + AttibDcSep + "(\\d+))?\\s*$");
m = mask.match(exp);
if(m != null) {
cleanInput = null;
if(typeof (m[1]) != "undefined")
cleanInput = m[1] + (m[2].length > 0 ? m[2] : "0") + "." + m[4];
else
cleanInput = (m[2].length > 0 ? m[2] : "0") + "." + m[4];
num = parseFloat(cleanInput);
ret = (num == (isNaN(num) ? null : num));
}
if(!ret) {
MaskedEditSetMessage(value, value.InvalidValueMessage, value.InvalidValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
}
if(ret) {
if(value.MaximumValue != "") {
Compnum = parseFloat(value.MaximumValue);
if(Compnum == (isNaN(Compnum) ? null : Compnum))
if(num > Compnum) {
ret = false;
MaskedEditSetMessage(value, value.MaximumValueMessage, value.MaximumValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
}
}
if(ret && value.MinimumValue != "") {
Compnum = parseFloat(value.MinimumValue);
if(Compnum == (isNaN(Compnum) ? null : Compnum))
if(num < Compnum) {
ret = false;
MaskedEditSetMessage(value, value.MinimumValueMessage, value.MinimumValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
}
}
}
}
if(ret && value.ClientValidationFunction != "") {
var args = { Value: mask, IsValid: true };
eval(value.ClientValidationFunction + "(value, args);");
ret = args.IsValid;
if(!ret) {
MaskedEditSetMessage(value, value.InvalidValueMessage, value.InvalidValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
}
}
if(!ret)
MaskedEditMessageShow(value, ret);
return ret;
}
// Validator None
function MaskedEditValidatorNone(value) {
MaskedEditSetMessage(value, "", "");
MaskedEditSetCssClass(value, "");
MaskedEditMessageShow(value, true);
if(value.IsMaskedEdit == "false")
return true;
var target = $get(value.TargetValidator);
if(value.ValidEmpty == "false")
if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value() == value.InitialValue) {
MaskedEditSetMessage(value, value.EmptyValueMessage, value.EmptyValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
MaskedEditMessageShow(value, false);
return false;
}
if(Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value() == "")
return true;
var ret = true,
mask = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(target).get_Value();
if(value.ValidationExpression != "") {
var rx = new RegExp(value.ValidationExpression),
matches = rx.exec(mask);
ret = (matches != null && mask == matches[0]);
if(!ret) {
MaskedEditSetMessage(value, value.InvalidValueMessage, value.InvalidValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
MaskedEditMessageShow(value, false);
return false;
}
}
var exp = /^\d+\s*$/,
num = null;
if(value.MaximumValue != "")
if(value.MaximumValue.match(exp) != null) {
num = parseInt(value.MaximumValue, 10);
if(num == (isNaN(num) ? null : num))
if(mask.length > num) {
ret = false;
MaskedEditSetMessage(value, value.MaximumValueMessage, value.MaximumValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
}
}
if(ret && value.MinimumValue != "")
if(value.MinimumValue.match(exp) != null) {
num = parseInt(value.MinimumValue, 10);
if(num == (isNaN(num) ? null : num))
if(mask.length < num) {
ret = false;
MaskedEditSetMessage(value, value.MinimumValueMessage, value.MinimumValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
}
}
if(ret && value.ClientValidationFunction != "") {
var args = { Value: mask, IsValid: true };
eval(value.ClientValidationFunction + "(value, args);");
ret = args.IsValid;
if(!ret) {
MaskedEditSetMessage(value, value.InvalidValueMessage, value.InvalidValueText);
MaskedEditSetCssClass(value, value.InvalidValueCssClass);
}
}
if(!ret)
MaskedEditMessageShow(value, ret);
return ret;
}