
var StatusArea = {
clientID: null,
mControl: null,
mArgs: null,
init: function(args)
{
this.mArgs = args;
this.clientID = args.clientID;
},
clear: function()
{
var intLength;
var intIndex;
var objP;
var objControl = StatusArea._getControl();

objP = objControl.getElementsByTagName('p');
intLength = objP.length;
for (intIndex = 0; intIndex < intLength; intIndex++)
{
objControl.removeChild(objP[intIndex]);
}
},
add: function(strType, strMessage)
{
var objControl = StatusArea._getControl();
var objP = $CE('p');
var objSpan = $CE('span', { className: 'StatusAreaType' + strType });

objControl.className = 'StatusArea StatusAreaType' + strType;
objP.appendChild(objSpan);
objP.appendChild(document.createTextNode(strMessage));
objControl.appendChild(objP);
StatusArea.show();
},
hide: function()
{
var objControl = StatusArea._getControl();
var objX = objControl.getElementsByTagName('a')[0];
StatusArea.clear();
objControl.hide();
if (objX)
$(objX).hide();
},
show: function()
{
var objControl = StatusArea._getControl();
var objX = objControl.getElementsByTagName('a')[0];
if (objX)
$(objX).show();
objControl.show();
document.location.href = '#StatusAreaNavigation';
},
_getControl: function()
{
var objA;
var objSpan;
var objTmp;
if (StatusArea.mControl == null)
{
if ((StatusArea.clientID == '') || (StatusArea.clientID == null))
{
StatusArea.clientID = 'divStatusAreaControl';
}
StatusArea.mControl = $(StatusArea.clientID);
if (StatusArea.mControl == null)
{
objTmp = $$('div.StatusArea');
if (objTmp.length > 0)
{
StatusArea.mControl = objTmp[objTmp.length - 1];
}
}

if (StatusArea.mControl == null)
{
StatusArea.mControl = $CE('div', { id: StatusArea.clientID, className: 'StatusArea' }, { display: 'none' });
document.forms['aspnetForm'].insertBefore(StatusArea.mControl, document.forms['aspnetForm'].firstChild);
}
if (StatusArea.mControl.getElementsByTagName('a').length < 1)
{
objA = $CE('a', { title: 'Close', className: 'close', href: 'javascript:StatusArea.hide();' }, { display: 'none' });
objSpan = $CE('span');
objSpan.innerHTML = '[X]';
objA.appendChild(objSpan);
StatusArea.mControl.appendChild(objA);
objA = $CE('a', { name: 'StatusAreaNavigation' });
StatusArea.mControl.appendChild(objA);
}

}
return StatusArea.mControl;
},
getType: function() { return 'StatusArea'; }
};






function ChangeCheckList(hidCheckBox, arrayName, e) 
{ 

var hidControl = document.getElementById(hidCheckBox);
var srcControl;
var strID;
var astrID;
var myArray = eval(arrayName);
var intIndex = 0;
var astrValues;
var intValuesLength;


if(!e)
{
e = window.event;
}

srcControl = e.srcElement;

strID = srcControl.id;
astrID = strID.split('_');
strID = astrID[astrID.length - 1];
intIndex = parseInt(strID)
var strValue = myArray[intIndex];

astrValues = hidControl.value.split(',');
intValuesLength = astrValues.length
hidControl.value = '';

for (var intValuesIndex = 0; intValuesIndex < intValuesLength; intValuesIndex++)
{
if(astrValues[intValuesIndex] != strValue)
{
if (hidControl.value == '') 
{
hidControl.value = astrValues[intValuesIndex];
}
else 
{
hidControl.value = hidControl.value + ',' + astrValues[intValuesIndex];
} 
}

}


if (srcControl.checked) 
{
if (hidControl.value == '') 
{
hidControl.value = strValue;
}
else 
{
hidControl.value = hidControl.value + ',' + strValue;
}
}
}


function DateTimePicker_init(id, txtYearId, txtMonthId, txtDayId, txtHourId, txtMinuteId, intMode, strDropDownPosition)
{
var dateTimePicker = document.getElementById(id);

if(dateTimePicker != null)
{

dateTimePicker.txtYear = document.getElementById(txtYearId);
dateTimePicker.txtMonth = document.getElementById(txtMonthId);
dateTimePicker.txtDay = document.getElementById(txtDayId);
dateTimePicker.txtHour = document.getElementById(txtHourId);
dateTimePicker.txtMinute = document.getElementById(txtMinuteId);

dateTimePicker.mode = intMode;
dateTimePicker.dropDownPosition = strDropDownPosition; 

switch(dateTimePicker.mode)
{
case 0:
initDateFields(dateTimePicker);
initTimeFields(dateTimePicker);
break;

case 1:
initDateFields(dateTimePicker);

break;

case 2:
initTimeFields(dateTimePicker)

break;
}

dateTimePicker.get_value = function(e)
{
var objDate = new Date();
var intYear = objDate.getFullYear();
var intMonth = objDate.getMonth();
var intDay = objDate.getDate();
if(this.txtYear.value!='' && isNumeric(this.txtYear.value)) 
{
intYear = this.txtYear.value;
}
if(this.txtMonth.value!='' && isNumeric(this.txtMonth.value)) 
{
intMonth = this.txtMonth.value-1;
}
if(this.txtDay.value!='' && isNumeric(this.txtDay.value)) 
{
intDay = this.txtDay.value;
} 
return new Date(intYear, intMonth, intDay); 


}
dateTimePicker.set_value = function(value)
{
this.txtYear.value = value.getFullYear().toString();
this.txtMonth.value = padLeft((value.getMonth()+1).toString(), 2, '0');
this.txtDay.value = padLeft(value.getDate(), 2, '0');
}
}
}
function initDateFields(dateTimePicker)
{
if(dateTimePicker != null)
{
dateTimePicker.txtYear.dateTimePicker = dateTimePicker;
dateTimePicker.txtMonth.dateTimePicker = dateTimePicker;
dateTimePicker.txtDay.dateTimePicker = dateTimePicker;
dateTimePicker.txtYear.mode = 'year';
dateTimePicker.txtMonth.mode = 'month';
dateTimePicker.txtDay.mode = 'day';

dateTimePicker.txtYear.onfocus = function(){selectAllText(this)};
dateTimePicker.txtMonth.onfocus = function(){selectAllText(this)};
dateTimePicker.txtDay.onfocus = function(){selectAllText(this)};

dateTimePicker.txtDay.onkeypress = function(){return filterNumeric(this, event)};
dateTimePicker.txtMonth.onkeypress = function(){return filterNumeric(this, event)};
dateTimePicker.txtYear.onkeypress = function(){return filterNumeric(this, event)};

dateTimePicker.txtDay.onblur = function(){validatedDateField(this)};
dateTimePicker.txtMonth.onblur = function(){validatedDateField(this)};
dateTimePicker.txtYear.onblur = function(){validatedDateField(this)};
}
}
function initTimeFields(dateTimePicker)
{
if(dateTimePicker != null)
{
dateTimePicker.txtHour.dateTimePicker = dateTimePicker;
dateTimePicker.txtMinute.dateTimePicker = dateTimePicker;
dateTimePicker.txtHour.mode = 'hour';
dateTimePicker.txtMinute.mode = 'minute';

dateTimePicker.txtHour.onfocus = function(){selectAllText(this)};
dateTimePicker.txtMinute.onfocus = function(){selectAllText(this)};

dateTimePicker.txtHour.onkeypress = function(){return filterNumeric(this, event)};
dateTimePicker.txtMinute.onkeypress = function(){return filterNumeric(this, event)};

dateTimePicker.txtHour.onblur = function(){validatedDateField(this)};
dateTimePicker.txtMinute.onblur = function(){validatedDateField(this)};
}
}

function filterNumeric(that, e)
{
try
{
var dateTimePicker = that.dateTimePicker;
var intKeyCode = (e.which?e.which:e.keyCode);
var filterValues = '0123456789'; 
if((intKeyCode==null) 
|| (intKeyCode==0) 
|| (intKeyCode==8) 
|| (intKeyCode==9) 
|| (intKeyCode==13) 
|| (intKeyCode==27))
{ 
return true; 
}

var Char = String.fromCharCode(intKeyCode); 
if((filterValues.indexOf(Char) > -1))
{
return true; 
} 
if(that.value.length == that.maxlength)
{
switch(that.mode)
{
case 'year':
if (that.dateTimePicker.mode == 0)
{
that.dateTimePicker.txtHour.focus();
} 
break;
case 'month':
that.dateTimePicker.txtYear.focus();
break;
case 'day':
that.dateTimePicker.txtMonth.focus();
break;
case 'hour':
that.dateTimePicker.txtMinute.focus();
break;
case 'minute':
;
break;
} 
}
}
catch(e)
{
raiseMessage('error', e.message, that.id);
}

return false;
}
function validatedDateField(that)
{
if(that.value == '')
{
return;
}

switch(that.mode)
{
case 'year':
that.value = toYear(that.value);

try
{ 
var value = new Date(that.value, that.dateTimePicker.txtMonth.value-1, that.dateTimePicker.txtDay.value); 
that.value = value.getFullYear().toString();
that.dateTimePicker.txtMonth.value = padLeft((value.getMonth()+1).toString(), 2, '0');
that.dateTimePicker.txtDay.value = padLeft(value.getDate(), 2, '0'); 
}
catch(e)
{
raiseMessage('stoperror', e.toString(), that.id);
}

break;
case 'month':
that.value = padLeft(toNumericValueRange(that.value, 1, 12), 2, '0');
break;
case 'day':
that.value = padLeft(toNumericValueRange(that.value, 1, 31), 2, '0');
break;
case 'hour':
that.value = padLeft(toNumericValueRange(that.value, 0, 23), 2, '0');
break;
case 'minute':
that.value = padLeft(toNumericValueRange(that.value, 0, 59), 2, '0');
break;
}
}
function toYear(value)
{
if (value.length == 0)
{
value = new Date().getFullYear();
}
else if (value.length == 1)
{
value = new Date().getFullYear().toString().substr(0,3) + value;
}
else if (value.length == 2)
{
value = new Date().getFullYear().toString().substr(0,2) + value;
}
else if (value.length == 3)
{
value = new Date().getFullYear().toString().substr(0,1) + value;
}
return value;
}
function toNumericValueRange(value, minimumValue, maximumValue)
{
if((isNaN(value))||(value==''))
{
return minimumValue;
}
else if(value<minimumValue)
{
return minimumValue;
}
else if(value>maximumValue)
{
return maximumValue;
}
else
{ 
return value;
}
}


var datePickerDivID = "datepicker";
var iFrameDivID = "datepickeriframe";
var dayArrayShort = new Array('Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa');
var dayArrayMed = new Array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
var dayArrayLong = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var monthArrayShort = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
var monthArrayMed = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec');
var monthArrayLong = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');

var defaultDateSeparator = "/"; var defaultDateFormat = "dmy"; var dateSeparator = defaultDateSeparator;
var dateFormat = defaultDateFormat;

function displayDatePicker(dateFieldName, displayPosition, displayBelowThisObject, dtFormat, dtSep)
{
var targetDateField = document.getElementById(dateFieldName);


if (!displayBelowThisObject)
{
displayBelowThisObject = targetDateField;
}

if (dtSep)
dateSeparator = dtSep;
else
dateSeparator = defaultDateSeparator;

if (dtFormat)
dateFormat = dtFormat;
else
dateFormat = defaultDateFormat;

if (typeof(displayPosition) == 'undefined')
{
displayPosition = 'Below';
}

var x = displayBelowThisObject.offsetLeft;
var y = displayBelowThisObject.offsetTop;

switch(displayPosition.toLowerCase())
{
case 'below':
y = y + displayBelowThisObject.offsetHeight ; 
break;
case 'above':
break;
case 'left':
break;
case 'right':
x = x + displayBelowThisObject.offsetWidth + 20;
break;
}

var parent = displayBelowThisObject;
while (parent.offsetParent) 
{
parent = parent.offsetParent;
x += parent.offsetLeft;
y += parent.offsetTop ;
}
drawDatePicker(targetDateField, x, y, displayPosition);
};

function drawDatePicker(targetDateField, x, y, displayPosition)
{
var targetDateField1 = document.getElementById(targetDateField.id);
var dt = targetDateField1.get_value(); 
var pickerDivId = datePickerDivID;
if (!document.getElementById(datePickerDivID))
{
var newNode = document.createElement("div");
newNode.setAttribute("id", pickerDivId);
newNode.setAttribute("class", "dpDiv");
newNode.setAttribute("style", "visibility: hidden;");
newNode.setAttribute("mouseOnOut", "restoreBlur(e);");
document.body.appendChild(newNode);
}
var pickerDiv = document.getElementById(pickerDivId);
pickerDiv.style.position = "absolute";
pickerDiv.style.left = x + "px";
pickerDiv.style.top = y + "px";
pickerDiv.style.visibility = (pickerDiv.style.visibility == "visible" ? "hidden" : "visible");
pickerDiv.style.display = (pickerDiv.style.display == "block" ? "none" : "block");
pickerDiv.style.zIndex = 10000;
refreshDatePicker(targetDateField.id, targetDateField.name, displayPosition, x, y, dt.getFullYear(), dt.getMonth(), dt.getDate());
};

function refreshDatePicker(targetDateFieldId, dateFieldName, displayPosition, x, y, year, month, day)
{
var pickerDivId = datePickerDivID;
var pickerDiv = document.getElementById(pickerDivId);
var thisDay = new Date();
if ((month >= 0) && (year > 0)) 
{
thisDay = new Date(year, month, 1);
} 
else 
{
day = thisDay.getDate();
thisDay.setDate(1);
}
var crlf = "\r\n";
var TABLE = "<table cols=7 class='dpTable'>" + crlf;
var xTABLE = "</table>" + crlf;
var TR = "<tr class='dpTR'>";
var TR_title = "<tr class='dpTitleTR'>";
var TR_days = "<tr class='dpDayTR'>";
var TR_todaybutton = "<tr class='dpTodayButtonTR'>";
var xTR = "</tr>" + crlf;
var TD = "<td class='dpTD' onMouseOut='this.className=\"dpTD\";' onMouseOver=' this.className=\"dpTDHover\";' "; var TD_title = "<td colspan=5 class='dpTitleTD'>";
var TD_buttons = "<td class='dpButtonTD'>";
var TD_todaybutton = "<td colspan=7 class='dpTodayButtonTD'>";
var TD_days = "<td class='dpDayTD'>";
var TD_selected = "<td class='dpDayHighlightTD' onMouseOut='this.className=\"dpDayHighlightTD\";' onMouseOver='this.className=\"dpTDHover\";' "; var xTD = "</td>" + crlf;
var DIV_title = "<div class='dpTitleText'>";
var DIV_selected = "<div class='dpDayHighlight'>";
var xDIV = "</div>";
var weeksShown = 0;
var html = TABLE;
html += TR_title;
html += TD_buttons + getButtonCode(targetDateFieldId, dateFieldName, displayPosition, x, y, thisDay, -1, "&lt;") + xTD;
html += TD_title + DIV_title + monthArrayLong[ thisDay.getMonth()] + " " + thisDay.getFullYear() + xDIV + xTD;
html += TD_buttons + getButtonCode(targetDateFieldId, dateFieldName, displayPosition, x, y, thisDay, 1, "&gt;") + xTD;
html += xTR;
html += TR_days;
for(i = 0; i < dayArrayShort.length; i++)
html += TD_days + dayArrayShort[i] + xTD;
html += xTR;
html += TR;
for (i = 0; i < thisDay.getDay(); i++)
html += TD + "&nbsp;" + xTD;
do 
{
dayNum = thisDay.getDate();
TD_onclick = " onclick=\"updateDateField('" + targetDateFieldId + "', '" + getDateString(thisDay) + "');\">";
if (dayNum == day)
html += TD_selected + TD_onclick + DIV_selected + dayNum + xDIV + xTD;
else
html += TD + TD_onclick + dayNum + xTD;
if (thisDay.getDay() == 6)
{
html += xTR + TR;
weeksShown++;
}
thisDay.setDate(thisDay.getDate() + 1);
} while (thisDay.getDate() > 1)
if (thisDay.getDay() > 0) 
{
for (i = 6; i > thisDay.getDay(); i--)
html += TD + "&nbsp;" + i.toString() + xTD;
}
weeksShown++;
html += xTR;
if((displayPosition.toLowerCase() == 'above')&&(weeksShown != 6))
{
html += TR;
for (i = 0; i < 7; i++)
html += TD + "&nbsp;" + xTD;
html += xTR; 
}

var today = new Date();
var todayString = "Today is " + dayArrayMed[today.getDay()] + ", " + monthArrayMed[ today.getMonth()] + " " + today.getDate();
html += TR_todaybutton + TD_todaybutton;
html += "<button class='dpTodayButton' onClick='refreshDatePicker(\"" + targetDateFieldId + "\",\"" + dateFieldName + "\",\"" + displayPosition + "\"," + x + "," + y + ");'>this month</button> ";
html += "<button class='dpTodayButton' onClick='updateDateField(\"" + targetDateFieldId + "\");'>close</button>";
html += xTD + xTR;
html += xTABLE;
pickerDiv.innerHTML = html; 
switch(displayPosition.toLowerCase())
{
case 'below':
break;
case 'above':
pickerDiv.style.top = (y - pickerDiv.offsetHeight) + "px";
break;
case 'left':
pickerDiv.style.left = (x - pickerDiv.offsetWidth) + "px";
break;
case 'right':
break;
}
adjustiFrame(pickerDiv);
};

function getButtonCode(targetDateFieldId, dateFieldName, displayPosition, x, y, dateVal, adjust, label)
{
var newMonth = (dateVal.getMonth () + adjust) % 12;
var newYear = dateVal.getFullYear() + parseInt((dateVal.getMonth() + adjust) / 12);

if (newMonth < 0)
{
newMonth += 12;
newYear += -1;
}
return "<button class='dpButton' onClick='refreshDatePicker(\"" + targetDateFieldId + "\",\"" + dateFieldName + "\",\"" + displayPosition + "\", " + x + ", " + y + ", " + newYear + ", " + newMonth + ");'>" + label + "</button>";
};

function getDateString(dateVal)
{
var dayString = "00" + dateVal.getDate();
var monthString = "00" + (dateVal.getMonth()+1);
dayString = dayString.substring(dayString.length - 2);
monthString = monthString.substring(monthString.length - 2);

switch (dateFormat) {
case "dmy" :
return dayString + dateSeparator + monthString + dateSeparator + dateVal.getFullYear();
case "ymd" :
return dateVal.getFullYear() + dateSeparator + monthString + dateSeparator + dayString;
case "mdy" :
default :
return monthString + dateSeparator + dayString + dateSeparator + dateVal.getFullYear();
}
};

function getFieldDate(dateString)
{
var dateVal;
var dArray;
var d, m, y;

try {
dArray = splitDateString(dateString);
if (dArray) {
switch (dateFormat) {
case "dmy" :
d = parseInt(dArray[0], 10);
m = parseInt(dArray[1], 10) - 1;
y = parseInt(dArray[2], 10);
break;
case "ymd" :
d = parseInt(dArray[2], 10);
m = parseInt(dArray[1], 10) - 1;
y = parseInt(dArray[0], 10);
break;
case "mdy" :
default :
d = parseInt(dArray[1], 10);
m = parseInt(dArray[0], 10) - 1;
y = parseInt(dArray[2], 10);
break;
}
if(y.toString().length == 2)
{
y = getFullYear(y);
}
dateVal = new Date(y, m, d);
} else if (dateString) {
dateVal = new Date(dateString);
} else {
dateVal = new Date();
}
} catch(e) {
dateVal = new Date();
}

return dateVal;
};

function splitDateString(dateString)
{
var dArray;
if (dateString.indexOf("/") >= 0)
dArray = dateString.split("/");
else if (dateString.indexOf(".") >= 0)
dArray = dateString.split(".");
else if (dateString.indexOf("-") >= 0)
dArray = dateString.split("-");
else if (dateString.indexOf("\\") >= 0)
dArray = dateString.split("\\");
else if (dateString.indexOf(" ") >= 0)
dArray = dateString.split(" ");
else if ((dateString.length == 6)||(dateString.length == 8))
dArray = new Array(dateString.substring(0,2) ,dateString.substring(2,2) , dateString.substring(4));
else
dArray = false;
return dArray;
};
function updateDateField(dateFieldId, value)
{
var targetDateField = document.getElementById(dateFieldId);
var pickerDivId = datePickerDivID;

if (value)
targetDateField.set_value(getFieldDate(value));
var pickerDiv = document.getElementById(pickerDivId);
pickerDiv.style.visibility = "hidden";
pickerDiv.style.display = "none";
adjustiFrame(pickerDiv);
targetDateField.txtYear.select();
targetDateField.txtYear.focus();

};

function adjustiFrame(pickerDiv, iFrameDiv)
{
var is_opera = (navigator.userAgent.toLowerCase().indexOf("opera") != -1);
if (is_opera)
return;

try 
{
if (!document.getElementById(iFrameDivID)) 
{
var newNode = document.createElement("iFrame");
newNode.setAttribute("id", iFrameDivID);
newNode.setAttribute("src", "javascript:'';");
newNode.setAttribute("scrolling", "no");
newNode.setAttribute ("frameborder", "0");
document.body.appendChild(newNode);
}

if (!pickerDiv)
pickerDiv = document.getElementById(datePickerDivID);
if (!iFrameDiv)
iFrameDiv = document.getElementById(iFrameDivID);

try 
{
iFrameDiv.style.position = "absolute";
iFrameDiv.style.width = pickerDiv.offsetWidth;
iFrameDiv.style.height = pickerDiv.offsetHeight ;
iFrameDiv.style.top = pickerDiv.style.top;
iFrameDiv.style.left = pickerDiv.style.left;
iFrameDiv.style.zIndex = pickerDiv.style.zIndex - 1;
iFrameDiv.style.visibility = pickerDiv.style.visibility ;
iFrameDiv.style.display = pickerDiv.style.display;
} 
catch(e) 
{
}

} 
catch (ee) 
{
}

};

var bValidateOverride = false;
var bValidateItemOverride = false;

function CheckPage(validationGroup, useStatusArea)
{
if(typeof(Validate) != 'undefined')
{
return Validate.Check(validationGroup, useStatusArea);
}
else
{
return true;
}
};
var Validator = Class.create();
Validator.prototype = {
items: [],

initialize: function()
{},
Add: function(control, conditions, messages, runOnCheckAll, runOnBlur, runOnClick, addToBlur, addToMouseOut)
{
if (control != null)
{
this.items.push(new ValidatorItem(control, conditions, messages, runOnCheckAll, runOnBlur, runOnClick));
if (addToMouseOut == true)
{
control.onmouseout = function() { Validate.CheckThis(this, event) };
}
if (addToBlur == true)
{
control.onblur = function() { Validate.CheckThis(this, event) };
}
}
},


Check: function(validationGroup, useStatusArea)
{
if ((typeof (validationGroup) == 'undefined') || (validationGroup == null))
{
validationGroup = '';
}
return this.CheckThis(null, null, validationGroup, useStatusArea);
},
CheckThis: function(checkcontrol, e, validationGroup, useStatusArea)
{
var focusId;
var eventType = '';
var itemCount;

if ((e) && (e != null))
{
eventType = e.type;
}
alternativeFocusId = null;
if (bValidateOverride)
{
return true;
}
else if ((bValidateItemOverride) && (checkcontrol != null))
{
return false;
}
else if ((messageArea) && (messageArea.messageRaised))
{
return false;
}
if ((typeof (useStatusArea) == 'undefined') || (useStatusArea == null))
{
useStatusArea = false;
}

itemCount = this.items.length;
for (var iLoop = 0; iLoop < itemCount; iLoop++)
{
if (this.items[iLoop].control != null)
{
if ((checkcontrol == null) || (this.items[iLoop].control.id == checkcontrol.id))
{
for (var iCondition = 0; iCondition < this.items[iLoop].rules.length; iCondition++)
{
var that = this.items[iLoop].control;
if ((this.items[iLoop].rules[iCondition].condition.validationGroup == validationGroup) && (this.isDisabled(that) == false) && (this.isReadOnly(that) == false))
{
if ((checkcontrol != null) || (this.items[iLoop].rules[iCondition].runOnCheckAll == 'true'))
{
if (!eval(this.items[iLoop].rules[iCondition].condition.rule))
{
if (typeof (this.items[iLoop].rules[iCondition].message) != 'undefined')
{
if (alternativeFocusId != null)
{
focusId = alternativeFocusId;
}
else
{
focusId = this.items[iLoop].control.id;
}
if (useStatusArea == true)
{
StatusArea.clear();
StatusArea.add('Fatal', this.items[iLoop].rules[iCondition].message);
}
else
{
var msgShown = raiseMessage('validation', this.items[iLoop].rules[iCondition].message, focusId);
}
return false;
break;
}
}
}
}
}
}
}
}
return true;
},
isDisabled: function(that)
{
if (typeof (that.disabled) == 'boolean')
{
return that.disabled;
}
else
{
return false;
}
},
isReadOnly: function(that)
{
if (typeof (that.readOnly) == 'boolean')
{
return that.readOnly;
}
else
{
return false;
}
}
};
var ValidatorItem = Class.create();
ValidatorItem.prototype = {
control: null,
rules: null,
initialize: function(control, conditions, messages, runOnCheckAll, runOnBlur, runOnClick)
{
this.control = control;
this.rules = [];
for (var ruleIndex = 0; ruleIndex < conditions.length; ruleIndex++)
{
this.rules.push(new ValidatorRule(conditions[ruleIndex], messages[ruleIndex], runOnCheckAll[ruleIndex], runOnBlur[ruleIndex], runOnClick[ruleIndex]));
}
}
};
var ValidatorRule = Class.create();
ValidatorRule.prototype = {
condition: null,
message: null,
runOnCheckAll: false,
runOnBlur: false,
runOnClick: false,

initialize: function(condition, message, runOnCheckAll, runOnBlur, runOnClick)
{
this.condition = condition;
this.message = message;
this.runOnCheckAll = runOnCheckAll;
this.runOnBlur = runOnBlur;
this.runOnClick = runOnClick;
}
};


function isMatch(strValue, strExpression)
{
var rgMatch = new RegExp(strExpression);
return strValue.match(rgMatch)
}
function upperCase(that)
{
that.value = that.value.toUpperCase();
return true;
}
function lowerCase(that)
{
that.value = that.value.toLowerCase();
return true;
}
function normalCaseFirst(that)
{
that.value = toNormalCase(that.value,' ', false);
return true;
}
function normalCaseAll(that)
{
that.value = toNormalCase(that.value,' ', true);
return true;
}
function compareDate(strdate_1, strdate_2, strmode)
{
var ret_val = false;
if(
typeof(strdate_1) != 'undefined' && 
typeof(strdate_2) != 'undefined' &&
strdate_1 != '' &&
strdate_2 != ''
)
{
var new_date_1=toDate(strdate_1);
var new_date_2=toDate(strdate_2);
switch (strmode)
{
case "greater":
ret_val = new_date_1 > new_date_2;
break;
case "less":
ret_val = new_date_1 < new_date_2;
break;
case "equal":
ret_val = new_date_1 == new_date_2;
break;
case "equgreater":
ret_val = new_date_1 >= new_date_2;
break;
case "equless":
ret_val = new_date_1 <= new_date_2;
break;
default:
ret_val = false;
break;
}
}
else
{
return true;
}
return ret_val;
}
function toNormalCase(this_string, word_seperator, all_words)
{
var first_letter = new String();
var other_letters = new String();
var temp_string = new String();
if (word_seperator==null)
{
word_seperator = ' ';
}
if (all_words!=true)
{
all_words=false
}
this_string = this_string.toLowerCase();
if (all_words)
{
var temp_words = new Array();
temp_words = this_string.split(word_seperator);
var word_num = 0;
for (word_num = 0; word_num<temp_words.length; word_num++)
{
first_letter = temp_words[word_num].charAt(0);
other_letters = temp_words[word_num].substring(1,temp_words[word_num].length);
first_letter = first_letter.toUpperCase();
if (temp_string=='')
{
temp_string += first_letter + other_letters
}
else
{
temp_string += word_seperator + first_letter + other_letters
}
}
}
else
{
first_letter = this_string.charAt(0);
other_letters = this_string.substring(1,this_string.length);
first_letter = first_letter.toUpperCase();
temp_string = first_letter + other_letters
}
return (temp_string);
}

function isValidDecimalPercent(that, min, max)
{

var return_value = true;
if (isNaN(that))
{
return_value = false;
}
else
{
if (that > max || that < min)
{
return_value = false;
}
if (that.indexOf('.')>-1)
{
var this_value = that.toString();
var value_array = new Array();
value_array = this_value.split('.');
if (value_array.length > 0)
{
var decimal_part = value_array[1].toString();
if (decimal_part.length > 2)
{
return_value = false;
}
}
}
}
return return_value;
};

function isNumeric(expression)
{
var validChars = "0123456789.";
var validSignChars = "-+";
var charValue;
var decimalPointCount = 0;
if((expression != null)&&(expression != 'undefined'))
{
for (var charIndex = 0; charIndex < expression.length; charIndex++) 
{ 
charValue = expression.charAt(charIndex); 
if (validChars.indexOf(charValue) == -1) 
{
if (!((charIndex==0)&&(validSignChars.indexOf(charValue) != -1)))
{
return false;
} 
}
if(charValue=='.')
{
decimalPointCount++;
}
}
if(decimalPointCount<2)
{
return true;
}
return true;
}
else
{
return false;
}
};
function isGenericPhoneNo(strPhone)
{
rePhoneNumber = new RegExp(/^\+?\d[-\s\d]*\d$/);
if (strPhone == '')
{
return true;
}

if (!rePhoneNumber.test(strPhone)) 
{
return false;
}

return true;

};
function isEmail(strEmail)
{
var reExp;
if (strEmail == '')
{
return true;
}

reExp = new RegExp(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/);
return reExp.test(strEmail);
};
function isDate(strDate)
{


if (bValidateOverride)
{
return true;
}

var iDay = 0;
var iMonth = 1;
var iYear = 2;
var splitChar = ''; 
var validformat;

if (strDate.indexOf('/') >= 0)
{
validformat = new RegExp(/(0?[1-9]|[12][0-9]|3[01])(\/)(0?[1-9]|1[0-2])(\/)[129][0-9]{3}/);
splitChar = '/';
}
else if (strDate.indexOf('.') >= 0)
{
validformat = new RegExp(/(0?[1-9]|[12][0-9]|3[01])(\.)(0?[1-9]|1[0-2])(\.)[129][0-9]{3}/);
splitChar = '.';
}
else if (strDate.indexOf('-') >= 0)
{
validformat = new RegExp(/(0?[1-9]|[12][0-9]|3[01])(\-)(0?[1-9]|1[0-2])(\-)[129][0-9]{3}/);
splitChar = '-';
}
else if (strDate.indexOf('\\') >= 0)
{
validformat = new RegExp(/(0?[1-9]|[12][0-9]|3[01])(\\)(0?[1-9]|1[0-2])(\\)[129][0-9]{3}/);
splitChar = '\\';
}
else
{
return false;
}
if (!strDate.match(validformat))
{
return false;
}
else
{ 
var dayfield=strDate.split(splitChar)[iDay]
var monthfield=strDate.split(splitChar)[iMonth]
var yearfield=strDate.split(splitChar)[iYear]
var dayobj = new Date(yearfield, monthfield-1, dayfield)
if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield))
{
return false; 
}
else
{
return true;
}
}
return true;
}
function toDate(expression)
{

var sStartDate = expression.split('/');
var day = 0;
var month = 0;
var year = 0;
if (sStartDate.length > 0)
{
day = parseInt(sStartDate[0]);
}
if (sStartDate.length > 1)
{
month = parseInt(sStartDate[1]);
}
if (sStartDate.length > 2)
{
year = parseInt(sStartDate[2]);
}
if(day == 0)
{
day = new Date().getDate();
}
if(month == 0)
{
month = new Date().getMonth();
}
if(year == 0)
{
year = new Date().getYear();
}
return new Date(year,month,day);
}
function numericComparisons(expression, compareValue, whichComparison)
{
var value = null;
var blnComparison = false;

if (expression == '')
{
return true;
}
if ((expression != null)&&(expression != 'undefined'))
{
switch (whichComparison.toLowerCase())
{
case 'numericgreaterthanorequalto':
value = getNumeric(expression, '-.+', true);
if (value >= compareValue)
{
blnComparison = true;
}
break;

case 'numericlessthanorequalto':
value = getNumeric(expression, '-.+', true);
if (value <= compareValue)
{
blnComparison = true;
}
break;

case 'numericlessthan':
value = getNumeric(expression, '-.+', true);
if (value < compareValue)
{
blnComparison = true;
}
break;

case 'numericgreaterthan':
value = getNumeric(expression, '-.+', true);
if (value > compareValue)
{
blnComparison = true;
}
break;

case 'numericnotlongerthan':
value = getNumeric(expression, '', true);
if (value.length <= compareValue)
{
blnComparison = true;
}
break;

case 'numericnotshorterthan':
value = getNumeric(expression, '', true);
if (value.length >= compareValue)
{
blnComparison = true;
}
break;

case 'numericlengthequalto':
value = getNumeric(expression, '', true);
if (value.length == compareValue)
{
blnComparison = true;
}
break;

case 'numericnotblank':
value = getNumeric(expression, '', true);
if (value.length > 0)
{
blnComparison = true;
}
break;

case 'numericbutnotdecimal':
value = getNumeric(expression, '+.-', true);
var intValue = parseInt(value);
if (value == intValue)
{
blnComparison = true;
}
break;

default:
blnComparison = false;
}
}
else
{
blnComparison = false;
}

return blnComparison;
};
function getNumericValue(that, allowTheseExtras, blnTreatAsANumber)
{
that.value = getNumeric(that.value, allowTheseExtras, blnTreatAsANumber);
return true;
};

function getNumeric(expression, allowTheseExtras, blnTreatAsANumber)
{
var blnDecimal = false;
var blnPositiveNegative = false;
var strExpression = '';
var chrAtIndex;
var numList = '0123456789';
var iCharIndex = 0;

if((expression != null)&&(expression != 'undefined'))
{
for (iCharIndex = 0; iCharIndex < expression.length; iCharIndex++) 
{ 
chrAtIndex = expression.charAt(iCharIndex);

if ((!(numList.indexOf(chrAtIndex) == -1))||(!(allowTheseExtras.indexOf(chrAtIndex) == -1)))
{
if (blnTreatAsANumber)
{
if ((chrAtIndex == '.')&&(blnDecimal))
{
return false;
}
else if (chrAtIndex == '.')
{
blnDecimal = true;
}
else if (((blnPositiveNegative)&&(chrAtIndex == '-'))||((chrAtIndex == '+')&&(blnPositiveNegative)))
{
return false;
}
else if ((chrAtIndex == '-')||(chrAtIndex == '+'))
{
blnPositiveNegative = true;
}
}
strExpression = strExpression.concat(chrAtIndex);
}
}
return strExpression;
}
else
{
return false;
}
};


//-End File-\\