function isNum(e) { if (!(e.keyCode >= 48 && e.keyCode <= 57)) { e.keyCode = 0; } } function base64toBlob(b64Data, contentType, sliceSize) { contentType = contentType || ''; sliceSize = sliceSize || 512; var byteCharacters = atob(b64Data); var byteArrays = []; for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) { var slice = byteCharacters.slice(offset, offset + sliceSize); var byteNumbers = new Array(slice.length); for (var i = 0; i < slice.length; i++) { byteNumbers[i] = slice.charCodeAt(i); } var byteArray = new Uint8Array(byteNumbers); byteArrays.push(byteArray); } var blob = new Blob(byteArrays, { type: contentType }); return blob; } String.format = function () { // The string containing the format items (e.g. "{0}") // will and always has to be the first argument. var theString = arguments[0]; // start with the second argument (i = 1) for (var i = 1; i < arguments.length; i++) { // "gm" = RegEx options for Global search (more than one instance) // and for Multiline search var regEx = new RegExp("\\{" + (i - 1) + "\\}", "gm"); theString = theString.replace(regEx, arguments[i]); } return theString; } function IsTouch() { var deviceAgent = navigator.userAgent.toLowerCase(); var isTouchDevice = (deviceAgent.match(/(iphone|ipod|ipad)/) || deviceAgent.match(/(android)/) || deviceAgent.match(/(iemobile)/) || deviceAgent.match(/iphone/i) || deviceAgent.match(/ipad/i) || deviceAgent.match(/ipod/i) || deviceAgent.match(/blackberry/i) || deviceAgent.match(/bada/i)); return isTouchDevice; } function JSONToCSVConvertor(JSONData, FileName) { //If JSONData is not an object then JSON.parse will parse the JSON string in an Object var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData; var CSV = ''; //Set Report title in first row or line var dataf = ""; for (var key in JSONData[0]) { dataf += '"' + key + '",'; } CSV += dataf + '\r\n'; //1st loop is to extract each row for (var i = 0; i < arrData.length; i++) { var row = ""; //2nd loop will extract each column and convert it in string comma-seprated for (var index in arrData[i]) { row += '"' + arrData[i][index] + '",'; } row.slice(0, row.length - 1); //add a line break after each row CSV += row + '\r\n'; } if (CSV == '') { alert("Invalid data"); return; } //Initialize file format you want csv or xls var uri = 'data:text/csv;charset=utf-8,' + escape(CSV); // Now the little tricky part. // you can use either>> window.open(uri); // but this will not work in some browsers // or you will not get the correct file extension //this trick will generate a temp tag var link = document.createElement("a"); link.href = uri; //set the visibility hidden so it will not effect on your web-layout link.style = "visibility:hidden"; link.download = FileName + ".csv"; //this part will append the anchor tag and remove it after automatic click document.body.appendChild(link); link.click(); document.body.removeChild(link); } Number.prototype.format = function (n, x) { var re = '\\d(?=(\\d{' + (x || 3) + '})+' + (n > 0 ? '\\.' : '$') + ')'; return this.toFixed(Math.max(0, ~~n)).replace(new RegExp(re, 'g'), '$&,'); }; function toNumber(str) { //if(str=='') // return str; var tmpStr = currencyToNumber(str) if (isNaN(tmpStr)) return 0 else return Number(tmpStr) } function colorgrid() { var rgb = []; for (var i = 0; i < 3; i++) rgb.push(Math.floor(Math.random() * 255)); return 'rgb(' + rgb.join(',') + ')'; } function toNumber1(str) { if (str == '') return str; var tmpStr = currencyToNumber(str) if (isNaN(tmpStr)) return 0 else return Number(tmpStr) } function currencyToNumber(str) { if (str == null || String(str).length == 0) return 0 var tmp = "" var curChar for (var i = 0; i < String(str).length; i++) { curChar = String(str).charAt(i) if (!(curChar == '$' || curChar == ',')) { tmp += curChar } } return tmp } function validateAmount(inputObj, maxAmount, objLabel) { if (inputObj.value == "") return true var tmpAmount = currencyToNumber(inputObj.value) if (tmpAmount == "") { inputObj.value = "" return false } if (inputObj.value != "" && isNaN(tmpAmount)) { alert("Please enter a valid amount.") inputObj.focus() return false } else if (maxAmount != 0 && toNumber(tmpAmount) > maxAmount) { alert(objLabel + " value cannot be greater than " + maxAmount + "."); inputObj.value = maxAmount; inputObj.focus(); return false } else if (!isNaN(tmpAmount) && toNumber(tmpAmount) < 0) { alert(objLabel + " value cannot be less than zero."); inputObj.value = 0; inputObj.focus(); return false } else { inputObj.value = currency(inputObj.value); return true; } } function formatDec(expr, decPlaces) { //description: format a number to the given number of decimal places // multiply the number by 100 then round the number if (expr == '') return ''; if (eval(expr) == 0) { var tmp = "" for (var i = 1; i <= decPlaces; i++) tmp += "0" if (decPlaces = 0) return 0 else return "0." + tmp } var str = "" + Math.round(eval(expr) * (Math.pow(10, decPlaces))) // find the position of 2 digits from the right side var decpoint = str.length - Number(decPlaces) // insert the decimal point of the position you found and return the value var str2 = str.substring(0, decpoint) + "." + str.substring(decpoint, str.length) if (Number(str2) < 1) str2 = "0" + str2 return str2 } function currency(anynum) { if (trim(anynum) == "" || trim(anynum) == "0") return '' //-- Returns passed number as string in xxx,xxx.xx format. anynum = eval(currencyToNumber(anynum + "")) workNum = Math.abs((Math.round(anynum * 100) / 100)); workStr = "" + workNum if (workStr.indexOf(".") == -1) { workStr += ".00" } dStr = workStr.substr(0, workStr.indexOf(".")); dNum = dStr - 0 pStr = workStr.substr(workStr.indexOf(".")) while (pStr.length < 3) { pStr += "0" } //--- Adds comma in thousands place. if (dNum >= 1000) { dLen = dStr.length dStr = parseInt("" + (dNum / 1000)) + "," + dStr.substring(dLen - 3, dLen) } //-- Adds comma in millions place. if (dNum >= 1000000) { dLen = dStr.length dStr = parseInt("" + (dNum / 1000000)) + "," + dStr.substring(dLen - 7, dLen) } retval = dStr + pStr //-- Put numbers in parentheses if negative. //bill changes () to neg sign if (anynum < 0) { retval = "-" + retval } return retval } function currencyWithoutDecimal(anynum) { if (trim(anynum) == "") return anynum //-- Returns passed number as string in xxx,xxx.xx format. anynum = eval(currencyToNumber(anynum + "")) anynum = Math.round(anynum) workNum = Math.abs((Math.round(anynum * 100) / 100)); workStr = "" + workNum if (workStr.indexOf(".") == -1) { workStr += ".00" } dStr = workStr.substr(0, workStr.indexOf(".")); dNum = dStr - 0 pStr = workStr.substr(workStr.indexOf(".")) while (pStr.length < 3) { pStr += "0" } //--- Adds comma in thousands place. if (dNum >= 1000) { dLen = dStr.length dStr = parseInt("" + (dNum / 1000)) + "," + dStr.substring(dLen - 3, dLen) } //-- Adds comma in millions place. if (dNum >= 1000000) { dLen = dStr.length dStr = parseInt("" + (dNum / 1000000)) + "," + dStr.substring(dLen - 7, dLen) } retval = dStr //-- Put numbers in parentheses if negative. //bill changes () to neg sign if (anynum < 0) { retval = "-" + retval } return retval } function ltrim(argvalue) { while (1) { if (argvalue.substring(0, 1) != " ") break; argvalue = argvalue.substring(1, argvalue.length); } return argvalue; } function rtrim(argvalue) { argvalue = argvalue + "" while (1) { if (argvalue.substring(argvalue.length - 1, argvalue.length) != " ") break; argvalue = argvalue.substring(0, argvalue.length - 1); } return argvalue; } function ltrim(argvalue) { argvalue = argvalue + "" while (1) { if (argvalue.substring(0, 1) != " ") break; argvalue = argvalue.substring(1, argvalue.length); } return argvalue; } function trim(argvalue) { var tmpstr = ltrim(argvalue); return rtrim(tmpstr); } function ValidateDate(inputObj) { if (trim(inputObj.value) != "") { if (parseDate(inputObj.value) == null) { alert("Please enter a valid date.") inputObj.focus(); return false } else { inputObj.value = formatShortDate(inputObj.value); return true; } } } function formatShortDate(dateStr) { return formatDate(parseDate(dateStr), "MM/dd/y") } // HISTORY // ------------------------------------------------------------------ // May 17, 2003: Fixed bug in parseDate() for dates <1970 // March 11, 2003: Added parseDate() function // March 11, 2003: Added "NNN" formatting option. Doesn't match up // perfectly with SimpleDateFormat formats, but // backwards-compatability was required. // ------------------------------------------------------------------ // These functions use the same 'format' strings as the // java.text.SimpleDateFormat class, with minor exceptions. // The format string consists of the following abbreviations: // // Field | Full Form | Short Form // -------------+--------------------+----------------------- // Year | yyyy (4 digits) | yy (2 digits), y (2 or 4 digits) // Month | MMM (name or abbr.)| MM (2 digits), M (1 or 2 digits) // | NNN (abbr.) | // Day of Month | dd (2 digits) | d (1 or 2 digits) // Day of Week | EE (name) | E (abbr) // Hour (1-12) | hh (2 digits) | h (1 or 2 digits) // Hour (0-23) | HH (2 digits) | H (1 or 2 digits) // Hour (0-11) | KK (2 digits) | K (1 or 2 digits) // Hour (1-24) | kk (2 digits) | k (1 or 2 digits) // Minute | mm (2 digits) | m (1 or 2 digits) // Second | ss (2 digits) | s (1 or 2 digits) // AM/PM | a | // // NOTE THE DIFFERENCE BETWEEN MM and mm! Month=MM, not mm! // Examples: // "MMM d, y" matches: January 01, 2000 // Dec 1, 1900 // Nov 20, 00 // "M/d/yy" matches: 01/20/00 // 9/2/00 // "MMM dd, yyyy hh:mm:ssa" matches: "January 01, 2000 12:30:45AM" // ------------------------------------------------------------------ var MONTH_NAMES = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'); var DAY_NAMES = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'); function LZ(x) { return (x < 0 || x > 9 ? "" : "0") + x } // ------------------------------------------------------------------ // isDate ( date_string, format_string ) // Returns true if date string matches format of format string and // is a valid date. Else returns false. // It is recommended that you trim whitespace around the value before // passing it to this function, as whitespace is NOT ignored! // ------------------------------------------------------------------ function isDate(val, format) { var date = getDateFromFormat(val, format); if (date == 0) { return false; } return true; } // ------------------------------------------------------------------- // compareDates(date1,date1format,date2,date2format) // Compare two date strings to see which is greater. // Returns: // 1 if date1 is greater than date2 // 0 if date2 is greater than date1 of if they are the same // -1 if either of the dates is in an invalid format // ------------------------------------------------------------------- function compareDates(date1, dateformat1, date2, dateformat2) { var d1 = getDateFromFormat(date1, dateformat1); var d2 = getDateFromFormat(date2, dateformat2); if (d1 == 0 || d2 == 0) { return -1; } else if (d1 > d2) { return 1; } return 0; } // ------------------------------------------------------------------ // formatDate (date_object, format) // Returns a date in the output format specified. // The format string uses the same abbreviations as in getDateFromFormat() // ------------------------------------------------------------------ function formatDate(date, format) { format = format + ""; var result = ""; var i_format = 0; var c = ""; var token = ""; var y = date.getYear() + ""; var M = date.getMonth() + 1; var d = date.getDate(); var E = date.getDay(); var H = date.getHours(); var m = date.getMinutes(); var s = date.getSeconds(); var yyyy, yy, MMM, MM, dd, hh, h, mm, ss, ampm, HH, H, KK, K, kk, k; // Convert real date parts into formatted versions var value = new Object(); if (y.length < 4) { y = "" + (y - 0 + 1900); } value["y"] = "" + y; value["yyyy"] = y; value["yy"] = y.substring(2, 4); value["M"] = M; value["MM"] = LZ(M); value["MMM"] = MONTH_NAMES[M - 1]; value["NNN"] = MONTH_NAMES[M + 11]; value["d"] = d; value["dd"] = LZ(d); value["E"] = DAY_NAMES[E + 7]; value["EE"] = DAY_NAMES[E]; value["H"] = H; value["HH"] = LZ(H); if (H == 0) { value["h"] = 12; } else if (H > 12) { value["h"] = H - 12; } else { value["h"] = H; } value["hh"] = LZ(value["h"]); if (H > 11) { value["K"] = H - 12; } else { value["K"] = H; } value["k"] = H + 1; value["KK"] = LZ(value["K"]); value["kk"] = LZ(value["k"]); if (H > 11) { value["a"] = "PM"; } else { value["a"] = "AM"; } value["m"] = m; value["mm"] = LZ(m); value["s"] = s; value["ss"] = LZ(s); while (i_format < format.length) { c = format.charAt(i_format); token = ""; while ((format.charAt(i_format) == c) && (i_format < format.length)) { token += format.charAt(i_format++); } if (value[token] != null) { result = result + value[token]; } else { result = result + token; } } return result; } // ------------------------------------------------------------------ // Utility functions for parsing in getDateFromFormat() // ------------------------------------------------------------------ function _isInteger(val) { var digits = "1234567890"; for (var i = 0; i < val.length; i++) { if (digits.indexOf(val.charAt(i)) == -1) { return false; } } return true; } function _getInt(str, i, minlength, maxlength) { for (var x = maxlength; x >= minlength; x--) { var token = str.substring(i, i + x); if (token.length < minlength) { return null; } if (_isInteger(token)) { return token; } } return null; } // ------------------------------------------------------------------ // getDateFromFormat( date_string , format_string ) // // This function takes a date string and a format string. It matches // If the date string matches the format string, it returns the // getTime() of the date. If it does not match, it returns 0. // ------------------------------------------------------------------ function getDateFromFormat(val, format) { val = val + ""; format = format + ""; var i_val = 0; var i_format = 0; var c = ""; var token = ""; var token2 = ""; var x, y; var now = new Date(); var year = now.getYear(); var month = now.getMonth() + 1; var date = 1; var hh = now.getHours(); var mm = now.getMinutes(); var ss = now.getSeconds(); var ampm = ""; while (i_format < format.length) { // Get next token from format string c = format.charAt(i_format); token = ""; while ((format.charAt(i_format) == c) && (i_format < format.length)) { token += format.charAt(i_format++); } // Extract contents of value based on format token if (token == "yyyy" || token == "yy" || token == "y") { if (token == "yyyy") { x = 4; y = 4; } if (token == "yy") { x = 2; y = 2; } if (token == "y") { x = 2; y = 4; } year = _getInt(val, i_val, x, y); if (year == null) { return 0; } i_val += year.length; if (year.length == 2) { if (year > 70) { year = 1900 + (year - 0); } else { year = 2000 + (year - 0); } } } else if (token == "MMM" || token == "NNN") { month = 0; for (var i = 0; i < MONTH_NAMES.length; i++) { var month_name = MONTH_NAMES[i]; if (val.substring(i_val, i_val + month_name.length).toLowerCase() == month_name.toLowerCase()) { if (token == "MMM" || (token == "NNN" && i > 11)) { month = i + 1; if (month > 12) { month -= 12; } i_val += month_name.length; break; } } } if ((month < 1) || (month > 12)) { return 0; } } else if (token == "EE" || token == "E") { for (var i = 0; i < DAY_NAMES.length; i++) { var day_name = DAY_NAMES[i]; if (val.substring(i_val, i_val + day_name.length).toLowerCase() == day_name.toLowerCase()) { i_val += day_name.length; break; } } } else if (token == "MM" || token == "M") { month = _getInt(val, i_val, token.length, 2); if (month == null || (month < 1) || (month > 12)) { return 0; } i_val += month.length; } else if (token == "dd" || token == "d") { date = _getInt(val, i_val, token.length, 2); if (date == null || (date < 1) || (date > 31)) { return 0; } i_val += date.length; } else if (token == "hh" || token == "h") { hh = _getInt(val, i_val, token.length, 2); if (hh == null || (hh < 1) || (hh > 12)) { return 0; } i_val += hh.length; } else if (token == "HH" || token == "H") { hh = _getInt(val, i_val, token.length, 2); if (hh == null || (hh < 0) || (hh > 23)) { return 0; } i_val += hh.length; } else if (token == "KK" || token == "K") { hh = _getInt(val, i_val, token.length, 2); if (hh == null || (hh < 0) || (hh > 11)) { return 0; } i_val += hh.length; } else if (token == "kk" || token == "k") { hh = _getInt(val, i_val, token.length, 2); if (hh == null || (hh < 1) || (hh > 24)) { return 0; } i_val += hh.length; hh--; } else if (token == "mm" || token == "m") { mm = _getInt(val, i_val, token.length, 2); if (mm == null || (mm < 0) || (mm > 59)) { return 0; } i_val += mm.length; } else if (token == "ss" || token == "s") { ss = _getInt(val, i_val, token.length, 2); if (ss == null || (ss < 0) || (ss > 59)) { return 0; } i_val += ss.length; } else if (token == "a") { if (val.substring(i_val, i_val + 2).toLowerCase() == "am") { ampm = "AM"; } else if (val.substring(i_val, i_val + 2).toLowerCase() == "pm") { ampm = "PM"; } else { return 0; } i_val += 2; } else { if (val.substring(i_val, i_val + token.length) != token) { return 0; } else { i_val += token.length; } } } // If there are any trailing characters left in the value, it doesn't match if (i_val != val.length) { return 0; } // Is date valid for month? if (month == 2) { // Check for leap year if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) { // leap year if (date > 29) { return 0; } } else { if (date > 28) { return 0; } } } if ((month == 4) || (month == 6) || (month == 9) || (month == 11)) { if (date > 30) { return 0; } } // Correct hours value if (hh < 12 && ampm == "PM") { hh = hh - 0 + 12; } else if (hh > 11 && ampm == "AM") { hh -= 12; } var newdate = new Date(year, month - 1, date, hh, mm, ss); return newdate.getTime(); } // ------------------------------------------------------------------ // parseDate( date_string [, prefer_euro_format] ) // // This function takes a date string and tries to match it to a // number of possible date formats to get the value. It will try to // match against the following international formats, in this order: // y-M-d MMM d, y MMM d,y y-MMM-d d-MMM-y MMM d // M/d/y M-d-y M.d.y MMM-d M/d M-d // d/M/y d-M-y d.M.y d-MMM d/M d-M // A second argument may be passed to instruct the method to search // for formats like d/M/y (european format) before M/d/y (American). // Returns a Date object or null if no patterns match. // ------------------------------------------------------------------ function parseDate(val) { var preferEuro = (arguments.length == 2) ? arguments[1] : false; generalFormats = new Array('y-M-d', 'MMM d, y', 'MMM d,y', 'y-MMM-d', 'd-MMM-y', 'MMM d'); monthFirst = new Array('M/d/y', 'M-d-y', 'M.d.y', 'MMM-d', 'M/d', 'M-d', 'MMddyyyy', 'MMddyy'); dateFirst = new Array('d/M/y', 'd-M-y', 'd.M.y', 'd-MMM', 'd/M', 'd-M'); var checkList = new Array('generalFormats', preferEuro ? 'dateFirst' : 'monthFirst', preferEuro ? 'monthFirst' : 'dateFirst'); var d = null; for (var i = 0; i < checkList.length; i++) { var l = window[checkList[i]]; for (var j = 0; j < l.length; j++) { d = getDateFromFormat(val, l[j]); if (d != 0) { return new Date(d); } } } return null; } function getElementLeft(clt) { xPos = clt.offsetLeft; tempEl = clt.offsetParent; while (tempEl != null) { xPos += tempEl.offsetLeft; tempEl = tempEl.offsetParent; } return xPos; } function getElementTop(clt) { yPos = clt.offsetTop; tempEl = clt.offsetParent; while (tempEl != null) { yPos += tempEl.offsetTop; tempEl = tempEl.offsetParent; } return yPos; } function getElementHeight(clt) { yPos = clt.offsetHeight; tempEl = clt.offsetParent; while (tempEl != null) { yPos += tempEl.offsetHeight; tempEl = tempEl.offsetParent; } return yPos; } function getElementWidth(clt) { yPos = clt.offsetWidth; tempEl = clt.offsetParent; while (tempEl != null) { yPos += tempEl.offsetWidth; tempEl = tempEl.offsetParent; } return yPos; } function MoveOption(objSourceElement, objTargetElement) { var aryTempSourceOptions = new Array(); var x = 0; //looping through source element to find selected options for (var i = 0; i < objSourceElement.length; i++) { if (objSourceElement.options[i].selected) { //need to move this option to target element var intTargetLen = objTargetElement.length++; objTargetElement.options[intTargetLen].text = objSourceElement.options[i].text; objTargetElement.options[intTargetLen].value = objSourceElement.options[i].value; } else {//storing options that stay to recreate select element var objTempValues = new Object(); objTempValues.text = objSourceElement.options[i].text; objTempValues.value = objSourceElement.options[i].value; aryTempSourceOptions[x] = objTempValues; x++; } } //resetting length of source objSourceElement.length = aryTempSourceOptions.length; //looping through temp array to recreate source select element for (var i = 0; i < aryTempSourceOptions.length; i++) { objSourceElement.options[i].text = aryTempSourceOptions[i].text; objSourceElement.options[i].value = aryTempSourceOptions[i].value; objSourceElement.options[i].selected = false; } } function validatePhone(phoneField, format) { var num = phoneField.value.replace(/[\(\)\.\-\ ]/g, ''); if (num.length == 0) return false; if (!_isInteger(num)) { alert("The phone number contains illegal characters."); phoneField.focus(); return false; } if (num.length != 10) { //Alert the user that the phone number entered was invalid. alert('Please enter a valid phone number including area code'); phoneField.focus(); return false; } else { switch (format) { case '0': //Format (xxx)-xxx-xxxx phoneField.value = "(" + num.substring(0, 3) + ")" + num.substring(3, 6) + "-" + num.substring(6); break; case '1': //Format xxx-xxx-xxxx phoneField.value = num.substring(0, 3) + "-" + num.substring(3, 6) + "-" + num.substring(6); break; default: //Format xxxxxxxxxx phoneField.value = num; break; } } } function FormatPhone(phoneField, format) { var num = phoneField.replace(/[\(\)\.\-\ ]/g, ''); var s = phoneField if (num.length == 10) { switch (format) { case '0': //Format (xxx)-xxx-xxxx s = "(" + num.substring(0, 3) + ")" + num.substring(3, 6) + "-" + num.substring(6); break; case '1': //Format xxx-xxx-xxxx s = num.substring(0, 3) + "-" + num.substring(3, 6) + "-" + num.substring(6); break; default: //Format xxxxxxxxxx break; } } return s; } function FormatSSN(SSNField) { var num = SSNField.replace(/[\(\)\.\-\ ]/g, ''); var s = SSNField; if (num.length == 9) { s = num.substring(0, 3) + "-" + num.substring(3, 5) + "-" + num.substring(5); } return s; } function validateSSN(SSNField) { var num = SSNField.value.replace(/[\(\)\.\-\ ]/g, ''); if (num.length == 0) return false; if (!_isInteger(num)) { alert("The SSN contains illegal characters."); SSNField.focus(); return false; } if (num.length != 9) { //Alert the user that the phone number entered was invalid. alert('Please enter a valid SSN.'); SSNField.focus(); return false; } else { SSNField.value = num.substring(0, 3) + "-" + num.substring(3, 5) + "-" + num.substring(5); } } function validateNumber(NumField) { var num = NumField.value.replace(/[\(\)\.\-\ ]/g, ''); if (num.length == 0) return false; if (!_isInteger(num)) { alert("Invalid number"); NumField.focus(); return false; } NumField.value = num; } function validate_email(field) { if (field.value.length == 0) return; with (field) { apos = value.indexOf("@"); dotpos = value.lastIndexOf("."); if (apos < 1 || dotpos - apos < 2) { alert("Please enter valid email."); field.focus(); return false; } else { return true; } } } function formatCurrency(num) { num = num.toString().replace(/\$|\,/g, ''); if (isNaN(num)) num = "0"; sign = (num == (num = Math.abs(num))); num = Math.floor(num * 100 + 0.50000000001); cents = num % 100; num = Math.floor(num / 100).toString(); if (cents < 10) cents = "0" + cents; for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3) ; i++) num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3)); return (((sign) ? '' : '-') + num + '.' + cents); } function ToUpperCase(el) { var s = document.getElementById(el.id).value; var result = s.toUpperCase(); document.getElementById(el.id).value = result; } function getParameterByName(name) { name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]").toLowerCase(); var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search.toLowerCase()); return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); }