/// /// var browserName = navigator.appName; var browserVer = parseInt(navigator.appVersion, 10); var unloadWontClearOutage = false; //Detect if MSIE version in case > v4 if (browserName == "Microsoft Internet Explorer" && browserVer >= 4) { var sAgent = navigator.userAgent; var sMSIEVer = sAgent.substr(sAgent.indexOf("MSIE ")+("MSIE ").length, 4); var nMSIEVer = parseInt(sMSIEVer,10); if (nMSIEVer > browserVer) { browserVer = nMSIEVer; } } // set up the crow object and children window.crow = { page: {}, controls: {}, clientRules: {}, selectors: new StandardChoosers(), dates: new DateClass() }; showAlert = function (className, innerHtml) { var alert = $('#alertMessage'); alert.removeClass('errorAlert successAlert noAlert processingAlert'); alert.addClass(className); alert.html(innerHtml); alert.show().focus(); }; hideAlert = function () { $('#alertMessage').hide(); }; hideProcessing = function () { $('#processingMessage').hide(); }; showProcessing = function () { var alert = $('#processingMessage'); alert.show(); }; function ajaxError(xhr, textStatus) { showAlert('errorAlert', 'ajax failed:' + textStatus); } function tabMouseOver(name) { if (tabAllowClick(name)) { $('#' + name).addClass('tab-highlighted'); } } function tabMouseOut(name) { if (tabAllowClick(name)) { window.status = ''; $('#' + name).removeClass('tab-highlighted'); } } function tabAllowClick(name) { var form = document.forms[0]; if (!form[name + 'Visible']) return true; var isVisible = form[name + 'Visible'].value; var isEnabled = form[name + 'Enabled'].value; var isSelected = form[name + 'TabSelected'].value; return isVisible.toString() == 'true' && isEnabled.toString() == 'true' && isSelected.toString() == 'false'; } // old school code look to remove some time. var isCompatible = 0; if ((browserName == "Netscape" && browserVer >= 3) || (browserName == "Microsoft Internet Explorer" && browserVer >= 4)) isCompatible = 1; function submitFormToServer() { if(window.preprocessSubmit!==undefined) window.preprocessSubmit(); document.forms[0].submit(); } function rowHover(query,on) { if (on) $(query).addClass('rowHover'); else $(query).removeClass('rowHover'); } function padLeft(text, padString, length) { text = String(text); while (text.length < length) text = padString + text; return text; } function filterInt(event) { var e; if (window.event) e = window.event; else if (event) e = event; else return true; var keyChar = e.keyCode; var returnVal = false; if ((keyChar >= 46 && keyChar <= 57) || (keyChar >= 37 && keyChar <= 40) || (keyChar == 8) || (keyChar == 9) || (keyChar >= 96 && keyChar <= 105) || (keyChar == 109) || (keyChar == 189)) { returnVal = true; } e.returnValue = returnVal; return returnVal; } function filterFloat(event, textField) { var e; if (window.event) e = window.event; else if (event) e = event; else return true; var keyChar = e.keyCode; var returnVal; if ((keyChar >= 46 && keyChar <= 57) || (keyChar == 46) || (keyChar >= 37 && keyChar <= 40) || (keyChar == 8) || (keyChar == 9) || (keyChar == 13) || (keyChar >= 96 && keyChar <= 105) || (keyChar == 110) || (keyChar == 109) || (keyChar == 189)) { returnVal = true; } else { if (keyChar == 190) { // period character returnVal = (textField.value.indexOf('.') < 0); } else { returnVal = false; } } e.returnValue = returnVal; return returnVal; } // filterFloat function isNumber(theString) { if (!theString) return false; var retVal = true; for (var i = 0; i <= theString.length -1; i++) { if ((theString.charAt(i) < "0") || (theString.charAt(i) > "9")) { retVal = false; } } return retVal; } // function isNumber function PadDigits(n, totalDigits) { n = n.toString(); var pd = ''; if (totalDigits > n.length) { for (var i=0; i < (totalDigits-n.length); i++) pd += '0'; } return pd + n.toString(); } /********************************* Date Class ******/ function DateClass() { var me = this; // private function getDateControls(fieldName) { var form = document.forms[0]; return { Year: form[fieldName + '_year'], Month: form[fieldName + '_month'], Day: form[fieldName + '_day'], Time: form[fieldName + '_time'] }; } function dateControlAllNullValue(form, name) { var dayField = form[name + "_day"]; var yearField = form[name + "_year"]; var monthField = form[name + "_month"]; if (yearField.value === "" && monthField.value === "" && dayField.value === "") { clearError(dayField); clearError(yearField); clearError(monthField); return true; } return false; } function weekDay(weekDayNo) { if (weekDayNo === 0) { return "Sunday"; } else if (weekDayNo == 1) { return "Monday"; } else if (weekDayNo == 2) { return "Tuesday"; } else if (weekDayNo == 3) { return "Wednesday"; } else if (weekDayNo == 4) { return "Thursday"; } else if (weekDayNo == 5) { return "Friday"; } else { return "Saturday"; } } // weekDay //----- public this.getMaxDay = function(theMonth, theYear) { if ((theMonth == 4) || (theMonth == 6) || (theMonth == 9) || (theMonth == 11)) { return 30; } else { if (theMonth == 2) { if ((theYear % 4 === 0) && (theYear % 100 !== 0)) { return 29; } else { return 28; } } else { return 31; } } }; // function getMaxDay this.validYear = function (event, showErr, fromOtherValidate, errorAlert) { var changedField = (event.target ? event.target : (event.srcElement ? event.srcElement : event)); if (errorAlert === undefined) errorAlert = createAlert(changedField, showErr); var form = document.forms[0]; var controlName = changedField.name.replace("_year", ""); var theWeekDay = form[controlName + "_weekday"]; if (changedField.value === "") { // If changed field is not null if (dateControlAllNullValue(form, controlName)) return true; errorAlert("Year field must not be blank."); if (event.stopPropagation) event.stopPropagation(); else if (event.cancelBubble != undefined) event.cancelBubble = true; return false; } if (!isNumber(changedField.value)) { errorAlert("Year field must be a valid number."); if (event.stopPropagation) event.stopPropagation(); else if (event.cancelBubble != undefined) event.cancelBubble = true; return false; } // Format modified date with field with leading zeros var newValue = parseInt(changedField.value, 10); if ((newValue >= 60) && (newValue < 100)) newValue = newValue + 1900; if (newValue < 60) newValue = newValue + 2000; newValue = "00" + newValue; changedField.value = newValue.substring(newValue.length - 4, newValue.length); if ((changedField.value < 1960) || (changedField.value > 2100)) { errorAlert("Year field must be between 1960 and 2100."); if (event.stopPropagation) event.stopPropagation(); else if (event.cancelBubble != undefined) event.cancelBubble = true; return false; } if (!fromOtherValidate && showErr) { var result = me.validMonth(form[controlName + "_month"], false, true); result = me.validDay(form[controlName + "_day"], false, true) && result; if (!result) { clearError(changedField); return false; } } if (theWeekDay !== undefined) { me.setWeekday(theWeekDay); } clearError(changedField); return true; }; // function validYear this.validMonth = function(changedField, showErr, fromOtherValidate, errorAlert) { if (errorAlert === undefined) errorAlert = createAlert(changedField, showErr); var form = document.forms[0]; var controlName = changedField.name.replace("_month", ""); var theWeekDay = form[controlName + "_weekday"]; if (changedField.value === "") { // If changed field is not null if (dateControlAllNullValue(form, controlName)) return true; errorAlert("Month field must not be blank."); return false; } // Format modified date with field with leading zeros if (!isNumber(changedField.value)) { errorAlert("Month field must be a valid number."); return false; } var newValue = parseInt(changedField.value, 10); newValue = "00" + newValue; changedField.value = newValue.substring(newValue.length - 2, newValue.length); if (changedField.value < 1 || changedField.value > 12) { errorAlert("Month field must be between 1 and 12."); return false; } if (!fromOtherValidate && showErr) { var result = me.validYear(form[controlName + "_year"], false, true); result = me.validDay(form[controlName + "_day"], false, true) && result; if (!result) { clearError(changedField); return false; } } if (theWeekDay !== undefined) { me.setWeekday(theWeekDay); } clearError(changedField); return true; }; // function validMonth this.validDay = function(changedField, showErr, fromOtherValidate, errorAlert) { if (errorAlert === undefined) errorAlert = createAlert(changedField, showErr); var form = document.forms[0]; var controlName = changedField.name.replace("_day", ""); var theWeekDay = form[controlName + "_weekday"]; var yearField = form[controlName + "_year"]; var monthField = form[controlName + "_month"]; // Changed field is null if (changedField.value === "") { // If changed field is not null if (dateControlAllNullValue(form, controlName)) return true; errorAlert("Day field must not be blank."); return false; } // Format modified date with field with leading zeros if (!isNumber(changedField.value)) { errorAlert("Day field must be a valid number."); return false; } var newValue = parseInt(changedField.value, 10); newValue = "00" + newValue; changedField.value = newValue.substring(newValue.length - 2, newValue.length); var monthDays = 31; if ((monthField.value >= 1 && monthField.value <= 12) && (yearField.value >= 1980 && yearField.value <= 2100)) monthDays = me.getMaxDay(monthField.value, yearField.value); if (changedField.value < 1 || changedField.value > monthDays) { errorAlert("Day field must be between 1 and " + monthDays + "."); return false; } if (!fromOtherValidate && showErr) { var result = me.validYear(yearField, false, true); result = me.validMonth(monthField, false, true) && result; if (!result) { clearError(changedField); return false; } } if (theWeekDay !== undefined) { me.setWeekday(theWeekDay); } clearError(changedField); return true; }; // function validDay this.validDateControl = function(form, name, description, writeMessage) { var errorAlert = function(message) { writeMessage(description + ": " + message); }; var result = me.validYear(form[name + "_year"], false, true, errorAlert); result = me.validMonth(form[name + "_month"], false, true, errorAlert) && result; result = me.validDay(form[name + "_day"], false, true, errorAlert) && result; return result; }; this.timeError = function (event, showErr) { var timeField = (event.target ? event.target : (event.srcElement ? event.srcElement : event)); if (event.stopPropagation) event.stopPropagation(); else if (event.cancelBubble != undefined) event.cancelBubble = true; else timeField = event; if (showErr) { jqAlert("You have entered an invalid time."); if (event.stopPropagation) setTimeout('var e= document.forms[0]["' + timeField.name + '"];e.focus();e.select();', 10); else { timeField.focus(); timeField.select(); } } return false; }; this.validTime = function (event, showSeconds, showMilliseconds, showErr) { var timeField = (event.target ? event.target : (event.srcElement ? event.srcElement : event)); var re = /^\s*([01]?\d|2[0-3]):?([0-5]\d)?:?([0-5]\d)?\.?(\d{1-3})?\s*([aApP])?[mM]?\s*$/; var m = re.exec(timeField.value === "" ? "00:00" : timeField.value); if (m) { var result = (m[1].length == 2 ? "" : "0") + m[1]; var len = m.length; if (len > 0 && m[len - 1] && m[len - 1].match(/[aApP]/)) { len--; var h = parseInt(m[1], 10); if (h > 12) return this.timeError(event, showErr); if (m[len].match(/[pP]/)) h += 12; if (h == 24)h = 0; if (h >= 24) return this.timeError(event, showErr); result = "" + (h > 9 ? h : "0" + h); } result = result + ":" + (len > 1 && m[2] ? m[2] : "00"); if (showSeconds) result += ":" + (len > 2 && m[3] ? m[3] : "00"); if (showSeconds) result += "." + (len > 3 && m[4] ? m[4] : "000"); timeField.value = result; return true; } return this.timeError(event, showErr); }; // function validTime this.openCalendar = function(fieldName, rootPath, returnMethod) { var controls = getDateControls(fieldName); var url = rootPath + "Resources/calendar.aspx?fieldname=" + fieldName + "&calDate=" + controls.Year.value + "/" + controls.Month.value + "/" + controls.Day.value + "&rtnMethod=" + returnMethod; // This is for the Calendar pop-up window // Will open to an new window to show the Calendar if (typeof jQuery != 'undefined') { url += '&jquery=1'; var ds = "