var g_aIgnore = Array(8,9,37,38,39,40,35,36,46); function GetResultingValue(ptObject, strInsert) { //IE support var strPostValue = ""; if (document.selection) { var trCaret = window.document.selection.createRange(); var trPrefix = ptObject.createTextRange(); var trSuffix = trPrefix.duplicate(); trPrefix.setEndPoint("EndToStart", trCaret); trSuffix.setEndPoint("StartToEnd", trCaret); strPostValue = trPrefix.text + strInsert + trSuffix.text; } //MOZILLA/NETSCAPE support else if (ptObject.selectionStart || ptObject.selectionStart == '0') { var startPos = ptObject.selectionStart; var endPos = ptObject.selectionEnd; strPostValue = ptObject.value.substring(0, startPos) + strInsert + ptObject.value.substring(endPos, ptObject.value.length); } //SAFARI support, //I know this isn't quite right, but if anyone can get it to work let us know!! else if (window.getSelection) { strPostValue = ptObject.value + strInsert; } return strPostValue; } function IsNotNumber(strValue) { if (strValue == ".") return false; if (isNaN(parseFloat(strValue,10))) return true; if (strValue.match(/.*[\+\-]/) != null) return true; if (strValue.match(/[^0123456789\-\+\.]/) != null) return true; if (strValue.match(/.+\..+\./) != null) return true; return false; } /* * Copyright (c) 2004-2006 OIC Group, Inc. * Written and Designed by James Hunt * * This file is part of Exponent * * Exponent is free software; you can redistribute * it and/or modify it under the terms of the GNU * General Public License as published by the Free * Software Foundation; either version 2 of the * License, or (at your option) any later version. * * GPL: http://www.gnu.org/licenses/gpl.txt * */ g_rgName = new Array(); function trim(s) { while (s.charAt(0) == " ") { s = s.substr(1); } return s; } function registerRG(name) { g_rgName[g_rgName.length] = name; } function unregisterRG(name) { for (var x = 0; x < g_rgName.length; x++) { if (g_rgName[x] == name) { g_rgName = ""; } } } function checkRG() { for (var x = 0; x < g_rgName.length; x++) { if (g_rgName[x] != "") { alert("Missing required selection for " + unescape(g_rgName[x])); return false; } } return true; } function checkRequired(locForm) { for (field in locForm.elements) { if (locForm.elements[field]) { if (locForm.elements[field].getAttribute) { s = locForm.elements[field].getAttribute("required"); if (s != null) { val = trim(locForm.elements[field].value); s = unescape(s); if ((s == val) || (val == "")) { locForm.elements[field].focus(); alert(unescape(locForm.elements[field].getAttribute("caption")) + " is a required field."); return false; } } } } } if (!checkRG()) return false; return true; } /* * Copyright (c) 2004-2006 OIC Group, Inc. * Written and Designed by James Hunt * * This file is part of Exponent * * Exponent is free software; you can redistribute * it and/or modify it under the terms of the GNU * General Public License as published by the Free * Software Foundation; either version 2 of the * License, or (at your option) any later version. * * GPL: http://www.gnu.org/licenses/gpl.txt * */ function money_filter_class() { this.on_key_press = function(ptObject, evt) { evt = (evt) ? evt : event; sChar = (evt.charCode) ? evt.charCode : evt.keyCode; for (var n =0; n < g_aIgnore.length; n++) { if (sChar == g_aIgnore[n]) return true; } var strOldValue = ptObject.value; var strNewValue = GetResultingValue(ptObject, String.fromCharCode(sChar)); strNewValue = this.FormatUSCurrency(strNewValue, false); if (this.isValueIllegal(strNewValue)) return false; ptObject.value = strNewValue; this.SetCaretPosition(strOldValue, strNewValue,ptObject); return false; } this.onBlur = function(ptObject) { ptObject.value = this.FormatUSCurrency(ptObject.value, true); if (ptObject.value != ptObject.previousValue) ptObject.fireEvent("onchange"); } this.onFocus = function(ptObject) { this.previousValue = ptObject.value } this.onPaste = function(ptObject, evt) { var strNewVal = GetResultingValue(ptObject, String.fromCharCode(evt.charCode)); alert(strNewVal); if (this.isValueIllegal(strNewVal)) { return false; } return true; } this.isValueIllegal = function(strValue) { var bIsIllegal = false; var temp = strValue.replace(/,/g, ""); if (strValue.match(/[^s]\$/)) bIsIllegal = true; else if (strValue.match(/\..*\./) != null) bIsIllegal = true; else if (strValue.match(/\.+\d{3}/) != null) bIsIllegal = true; else if (parseInt(temp.substr(1)) > 9999999999) bIsIllegal = true; else if (IsNotNumber(strValue.replace(/\$/g, "").replace(/,/g, "")) == true) bIsIllegal = true; return bIsIllegal; } this.FormatUSCurrency = function(strValue, bIncludeDP) { strValue = strValue.replace(/,/g, ""); var iDPPosition = strValue.indexOf("."); if (iDPPosition == -1) iDPPosition = strValue.length; for (i = iDPPosition -3; i > 0; i -= 3) strValue = strValue.substr(0, i) + "," + strValue.substr(i); strValue = "$" + strValue.replace(/\$/g, ""); strValue = strValue.replace("$,","$"); if (bIncludeDP) { var iDP = strValue.length - strValue.indexOf("."); if (iDP > strValue.length) strValue += ".00"; else if (iDP == 1) strValue += "00"; else if (iDP == 2) strValue += "0"; if (strValue == "$.00") strValue = "$0.00"; } return strValue; } this.SetCaretPosition = function(strOld, strNew, ptObject) { var i = -1; strOld = strOld.replace(/,/g, ""); strOld = strOld.replace(/\$/g, ""); var strTemp = strNew.replace(/,/g, ""); strTemp = strTemp.replace(/\$/g, ""); var newCount = (((strTemp.length - strOld.length)<0)?1:(strTemp.length - strOld.length)); var iInsertPoint = strNew.length; for (var x = 0; x < strNew.length; x++) { if ((strNew.substr(x,1) != "$") && (strNew.substr(x,1) != ",")) { i++; if (strNew.substr(x,1) != strOld.substr(i,1)) { iInsertPoint = x + newCount; break; } } } if (document.selection) { trCaret = ptObject.createTextRange(); trCaret.collapse(true); trCaret.moveStart("character", iInsertPoint); trCaret.select(); } else if (ptObject.selectionStart || ptObject.selectionStart == '0') { ptObject.selectionStart = iInsertPoint; ptObject.selectionEnd = iInsertPoint; } } } var money_filter = new money_filter_class(); /* * Copyright (c) 2004-2006 OIC Group, Inc. * Written and Designed by James Hunt * * This file is part of Exponent * * Exponent is free software; you can redistribute * it and/or modify it under the terms of the GNU * General Public License as published by the Free * Software Foundation; either version 2 of the * License, or (at your option) any later version. * * GPL: http://www.gnu.org/licenses/gpl.txt * */ function percent_filter_class() { this.on_key_press = function(ptObject, evt) { evt = (evt) ? evt : event; sChar = (evt.charCode) ? evt.charCode : evt.keyCode; //This will allow backspace to work. for (var n =0; n < g_aIgnore.length; n++) { if (sChar == g_aIgnore[n]) return true; } var strNewVal = GetResultingValue(ptObject, String.fromCharCode(sChar)); if (this.isValueIllegal(strNewVal)) { return false; } return true; } this.onBlur = function(ptObject) { ptObject.value = this.FormatPercent(ptObject.value, true); if (ptObject.value != ptObject.previousValue) ptObject.fireEvent("onchange"); } this.onFocus = function(ptObject) { this.previousValue = ptObject.value } this.onPaste = function(ptObject, evt) { var strNewVal = GetResultingValue(ptObject, String.fromCharCode(evt.charCode)); alert(strNewVal); if (this.isValueIllegal(strNewVal)) { return false; } return true; } this.isValueIllegal = function(strValue) { var bIsIllegal = false; if (strValue.match(/\%.*\%/) != null) bIsIllegal = true; else if (strValue.match(/\%.+/) != null) bIsIllegal = true; else if (strValue.match(/\..*\./) != null) bIsIllegal = true; else if (parseInt(strValue) > 999) bIsIllegal = true; else if (strValue.match(/\.+\d{5}/) != null) bIsIllegal = true; else if (IsNotNumber(strValue.replace("%", "").replace(" ", "")) == true) bIsIllegal = true; return bIsIllegal; } this.FormatPercent = function(strValue, bIncludeDP) { strValue = strValue.replace(/\%/g, ""); if (strValue.length != 0) { while (strValue.charAt(0) == "0") { strValue = strValue.substr(1); } if (strValue.length == 0) strValue = "0"; var iDP = strValue.length - strValue.indexOf("."); if (iDP == strValue.length) strValue = "0" + strValue; if (iDP > strValue.length) strValue += ".00"; else if (iDP == 1) strValue += "00"; else if (iDP == 2) strValue += "0"; else if ((iDP > 2) && (iDP < strValue.length)) strValue = strValue.substr(0,strValue.length - iDP+5); // Ensure number is postfixed strValue = strValue + " %"; } return strValue; } } var percent_filter = new percent_filter_class(); /* * Copyright (c) 2004-2006 OIC Group, Inc. * Written and Designed by James Hunt * * This file is part of Exponent * * Exponent is free software; you can redistribute * it and/or modify it under the terms of the GNU * General Public License as published by the Free * Software Foundation; either version 2 of the * License, or (at your option) any later version. * * GPL: http://www.gnu.org/licenses/gpl.txt * */ function decimal_filter_class() { this.on_key_press = function(ptObject, evt) { evt = (evt) ? evt : event; sChar = (evt.charCode) ? evt.charCode : evt.keyCode; //This will allow backspace to work. for (var n =0; n < g_aIgnore.length; n++) { if (sChar == g_aIgnore[n]) return true; } var strNewVal = GetResultingValue(ptObject, String.fromCharCode(sChar)); if (this.isValueIllegal(strNewVal)) { return false; } return true; } this.onBlur = function(ptObject) { var iDPPos = ptObject.value.indexOf("."); if (iDPPos == -1) return; var bValueChanged = false; if (iDPPos == ptObject.value.length -1) { ptObject.value = ptObject.value.substr(0, ptObject.value.length -1); bValueChanged = true; } if (iDPPos == 0) { var dNewValue = "0" + ptObject.value; ptObject.value = dNewValue; bValueChanged = true; } if (bValueChanged) ptObject.fireEvent("onchange"); } this.onFocus = function(ptObject) { //Do nothing for decimal } this.onPaste = function(ptObject, evt) { var strNewVal = GetResultingValue(ptObject, String.fromCharCode(evt.charCode)); alert(strNewVal); if (this.isValueIllegal(strNewVal)) { return false; } return true; } this.isValueIllegal = function(strValue) { bIsIllegal = IsNotNumber(strValue); if (bIsIllegal == false) { if (strValue.match(/\..*\./) != null) bIsIllegal = true; } return bIsIllegal; } } var decimal_filter = new decimal_filter_class(); /* * Copyright (c) 2004-2006 OIC Group, Inc. * Written and Designed by James Hunt * * This file is part of Exponent * * Exponent is free software; you can redistribute * it and/or modify it under the terms of the GNU * General Public License as published by the Free * Software Foundation; either version 2 of the * License, or (at your option) any later version. * * GPL: http://www.gnu.org/licenses/gpl.txt * */ function integer_filter_class() { this.on_key_press = function(ptObject, evt) { //This will allow backspace to work. evt = (evt) ? evt : event; sChar = (evt.charCode) ? evt.charCode : evt.keyCode; for (var n =0; n < g_aIgnore.length; n++) { if (sChar == g_aIgnore[n]) return true; } var strNewVal = GetResultingValue(ptObject, String.fromCharCode(sChar)); if (this.isValueIllegal(strNewVal)) { return false; } return true; } this.onBlur = function(ptObject) { //Do nothing for integer } this.onFocus = function(ptObject) { //Do nothing for integer } this.onPaste = function(ptObject, evt) { var strNewVal = GetResultingValue(ptObject, String.fromCharCode(evt.charCode)); alert(strNewVal); if (this.isValueIllegal(strNewVal)) { return false; } return true; } this.isValueIllegal = function(strValue) { var bIsIllegal = isNaN(parseInt(strValue, 10)); if (bIsIllegal == false) { bIsIllegal = (strValue.match(/[^0-9]/) != null); } return bIsIllegal; } } var integer_filter = new integer_filter_class();