﻿String.prototype.lTrim = function() { return this.replace(/^\s*/, ""); }; String.prototype.rTrim = function() { return this.replace(/\s*$/, ""); }; String.prototype.trim = function() { return this.rTrim().lTrim(); }; String.prototype.endsWith = function(sEnd) { return (this.substr(this.length - sEnd.length) == sEnd); }; String.prototype.startsWith = function(sStart) { return (this.substr(0, sStart.length) == sStart); }; String.prototype.isEmpty = function() { return this.length === 0; }; String.prototype.format = function() { var s = this; for (var i = 0; i < arguments.length; i++) { s = s.replace("{" + (i) + "}", arguments[i]); } return (s); }; String.prototype.removeSpaces = function() { return this.replace(/ /gi, ''); }; String.prototype.removeExtraSpaces = function() { return (this.replace(String.prototype.removeExtraSpaces.re, " ")); }; String.prototype.removeExtraSpaces.re = new RegExp("\\s+", "g"); String.prototype.removeSpaceDelimitedString = function(r) { var s = " " + this.trim() + " "; return s.replace(" " + r, "").rTrim(); }; String.prototype.isEmail = function() { var emailReg = /^\w+([\-.]\w+)*@\w+([\-.]\w+)*\.\w+([\-.]\w+)*$/; return emailReg.test(this); }; String.prototype.isURL = function() { var urlReg = /^http(s)?:\/\/([\w\-]+\.)+[\w\-]+(\/[\w- .\/?%&=]*)?$/; return urlReg.test(this); }; String.prototype.isAlpha = function() { var aReg = /[a-zA-Z]/g; return aReg.test(this); }; String.prototype.isAlphaNumeric = function() { var alphaReg = /[a-zA-Z0-9]/g; return alphaReg.test(this); }; String.prototype.isPositiveNumber = function() { var pReg = /(\+)?\d+/g; return pReg.test(this); }; String.prototype.isNegitiveNumber = function() { var nReg = /^\-\d+$/g; return nReg.test(this); }; String.prototype.isNumeric = function() { return (this.isPositiveNumber() || this.isNegitiveNumber()); }; String.prototype.isLimitNumeric = function(minValue, maxValue) { minValue = minValue || Number.MIN_VALUE; maxValue = maxValue || Number.MAX_VALUE; if (this.isNumeric()) { var v = parseInt(this, 10); return v >= minValue && v <= maxValue; } return false; }; String.prototype.isPositiveDecimal = function() { var pdReg = /^(\+)?((\d*\.\d+)|(\d+\.\d*))$/g; return (pdReg.test(this) || this.isPositiveNumber()); }; String.prototype.isNegitiveDecimal = function() { var ndReg = /^\-(\d+\.\d*)$/g; return (ndReg.test(this) || this.isNegitiveNumber()); }; String.prototype.isDecimal = function() { return (this.isPositiveDecimal() || this.isNegitiveDecimal()); }; String.prototype.IsLimitDecimal = function(minValue, maxValue) { minValue = minValue || Number.MIN_VALUE; maxValue = maxValue || Number.MAX_VALUE; if (this.isDecimal()) { var v = parseFloat(this); return v >= minValue && v <= maxValue; } return false; }; String.prototype.encodeURI = function() { var returnString; returnString = escape(this); returnString = returnString.replace(/\+/g, "%2B"); return returnString; }; String.prototype.decodeURI = function() { return unescape(this); }; String.prototype.byteLength = function() { var len = this.length; var count = len; for (var i = 0; i < len; i++) { if (this.charCodeAt(i) > 255) { count++; } } return count; }; String.prototype.limit = function(min, max) { min = min || 0; max = max || Number.MAX_VALUE; return (this.length >= min && this.length <= max); }; String.prototype.limitByte = function(min, max) { min = min || 0; max = max || Number.MAX_VALUE; var len = this.byteLength(); return (len >= min && len <= max); }; String.prototype.isZIP = function() { var zReg = /^\d{6}$/; return zReg.test(this); }; String.prototype.isPhone = function() { var pReg = /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/; return pReg.test(this); }; String.prototype.isMobile = function() { var mReg = /^((\(\d{2,3}\))|(\d{3}\-))?(13\d{9})|(15\d{9})$/; return mReg.test(this); }; String.prototype.isInList = function(list) { var re = eval("/[" + list + "]/"); return re.test(this); }; String.prototype.isDate = function() { var redate = /((^((1[8-9]\d{2})|([2-9]\d{3}))([\-\/\._])(10|12|0?[13578])([\-\/\._])(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))([\-\/\._])(11|0?[469])([\-\/\._])(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))([\-\/\._])(0?2)([\-\/\._])(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)([\-\/\._])(0?2)([\-\/\._])(29)$)|(^([3579][26]00)([\-\/\._])(0?2)([\-\/\._])(29)$)|(^([1][89][0][48])([\-\/\._])(0?2)([\-\/\._])(29)$)|(^([2-9][0-9][0][48])([\-\/\._])(0?2)([\-\/\._])(29)$)|(^([1][89][2468][048])([\-\/\._])(0?2)([\-\/\._])(29)$)|(^([2-9][0-9][2468][048])([\-\/\._])(0?2)([\-\/\._])(29)$)|(^([1][89][13579][26])([\-\/\._])(0?2)([\-\/\._])(29)$)|(^([2-9][0-9][13579][26])([\-\/\._])(0?2)([\-\/\._])(29)$))/; var p; var re1 = /(\d{4})[年\.\/\-](\d{1,2})[月\.\/\-](\d{1,2})[日]?$/; var re2 = /(\d{1,2})[月\.\/\-](\d{1,2})[日\.\/\-](\d{2})[年]?$/; var re3 = /(\d{1,2})[月\.\/\-](\d{1,2})[日\.\/\-](\d{4})[年]?$/; if (re1.test(this)) { p = re1.exec(this); return new Date(p[1], (p[2] - 1), p[3]); } if (re2.test(this)) { p = re2.exec(this); return new Date(p[3], (p[1] - 1), p[2]); } if (re3.test(this)) { p = re3.exec(this); return new Date(p[3], (p[1] - 1), p[2]); } return false; }; String.prototype.isInChinese = function() { return (this.length != this.replace(/[^\x00-\xff]/g, "**").length); }; String.prototype.sub = function(n) { var r = /[^\x00-\xff]/g; if (this.replace(r, "mm").length <= n) { return this; } n = n - 3; var m = Math.floor(n / 2); for (var i = m; i < this.length; i++) { if (this.substr(0, i).replace(r, "mm").length >= n) { return this.substr(0, i) + "..."; } } return this; }; String.prototype.getQueryString = function(name) { var reg = new RegExp("(^|&|\\?)" + name + "=([^&]*)(&|$)"), r; r = this.match(reg); if (r.length > 1) { return unescape(r[2]); } return null; }; var Request = { Url: { pathAndQuery: location.href, hostName: location.hostname, host: location.host, port: location.port, pathName: location.pathname, path: location.pathname, protocol: location.protocol, query: function() { var url = location.search; var theRequest = {}; if (url.indexOf("?") != -1) { var str = url.substr(1); var strs = str.split("&"); for (var i = 0; i < strs.length; i++) { theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]); } } return theRequest; } } }; Date.prototype.format = function(format) { var o = { "M+": this.getMonth() + 1, "d+": this.getDate(), "h+": this.getHours(), "m+": this.getMinutes(), "s+": this.getSeconds(), "q+": Math.floor((this.getMonth() + 3) / 3), "S": this.getMilliseconds() }; if (/(y+)/.test(format)) { format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); } for (var k in o) { if (new RegExp("(" + k + ")").test(format)) { format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)); } } return format; }; if (!Array.prototype.push) { Array.prototype.push = function() { var startLength = this.length; for (var i = 0; i < arguments.length; i++) { this[startLength + i] = arguments[i]; } return this.length; }; } Array.prototype.indexOf = function(p_var) { for (var i = 0; i < this.length; i++) { if (this[i] == p_var) { return (i); } } return (-1); }; Array.prototype.exists = function(p_var) { return (this.indexOf(p_var) != -1); }; Array.prototype.queue = function(p_var) { this.push(p_var); }; Array.prototype.dequeue = function() { return (this.shift()); }; Array.prototype.removeAt = function(p_iIndex) { return this.splice(p_iIndex, 1); }; Array.prototype.remove = function(o) { var i = this.indexOf(o); if (i > -1) { this.splice(i, 1); } return (i > -1); }; Array.prototype.clear = function() { var iLength = this.length; for (var i = 0; i < iLength; i++) { this.shift(); } }; Array.prototype.addArray = function(p_a) { if (p_a) { for (var i = 0; i < p_a.length; i++) { this.push(p_a[i]); } } }; var Elements = {}; Elements.scrollPosition = function() { var L, T, w = window, d = document, dd = d.documentElement; if (w.pageXOffset) { L = w.pageXOffset; T = w.pageYOffset; } else if (dd && dd.scrollLeft) { L = dd.scrollLeft; T = dd.scrollTop; } else if (d.body) { L = d.body.scrollLeft; T = d.body.scrollTop; } return { "left": L, "top": T }; }; Elements.realOffset = function(o) { var x = 0, y = 0; do { x += o.scrollLeft || 0; y += o.scrollTop || 0; o = o.parentNode; } while (o); return { "x": x, "y": y }; }; Elements.cumulativeOffset = function(o) { var x = 0, y = 0; do { x += o.offsetLeft || 0; y += o.offsetTop || 0; o = o.offsetParent; } while (o); return { "x": x, "y": y }; }; if (!window.scrollTop) { window.scrollTop = function() { var scrollPos = 0; if (typeof window.pageYOffset != 'undefined') { scrollPos = window.pageYOffset; } else if (typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat') { scrollPos = document.documentElement.scrollTop; } else if (typeof document.body != 'undefined') { scrollPos = document.body.scrollTop; } return scrollPos; }; }

var DDXDate = { date: new Date(), format: 'yyyy-MM-dd', textbox: null, selectYearName: 'DDXSYear', selectMonthName: 'DDXSMonth', preMonth: 'DPreMonth', nextMonth: 'DNextMonth', headID: 'ddxDateHead', bodyID: 'ddxDateBody', icon: { path: '/styles/date/images/', close: 'close.gif', pre: 'left1.gif', next: 'right1.gif' }, init: function() { $(document.body).append(this.HTML()); this.AddYear($('select[name=' + this.selectYearName + ']'), this.date.getFullYear()); this.AddMonth($('select[name=' + this.selectMonthName + ']'), this.date.getMonth()) }, SetDate: function(obj, format) { if (document.getElementById && document.getElementById('ddxdate') == undefined) { this.init() } if (format) this.format = format; if (!obj) return; if (this.textbox == obj && parseInt($('#ddxdate').css('left')) > -100) { this.Close(); return } this.textbox = obj; var v = $(obj).val(); var dTemp = null; if (!v.trim() == '') { dTemp = v.isDate() } if (dTemp) { this.date = dTemp } else { this.date = new Date() } this.Changed(); var o = $(obj); var offset = o.offset(); var l = offset.left + 5; var t = offset.top + o.height() + 2; var dH = $('#ddxdate').height(); var wH = $(document).height(); var dh = eval(dH + t + 10); if (dh > wH) { $(window).trigger('resize', [dh]) } $('#ddxdate').css({ 'left': l, 'top': t }) }, Set: function(day) { if (!this.textbox) return; var currDate = this.CurrDate(); this.date = new Date(currDate.y, currDate.m, day, currDate.h, currDate.mi, currDate.s, currDate.ms); $(this.textbox).val(this.date.format(this.format)); this.Close() }, Close: function() { $('#ddxdate').css({ 'left': '-9999px', 'top': '-9999px' }) }, ClearSelect: function(sel) { $(sel).empty(); $(sel).removeOption(/./) }, AddYear: function(sel, currYear) { this.ClearSelect(sel); var i = 0; var sYear = currYear - 10; if (sYear < 0) sYear = 0; for (; sYear < currYear + 10; sYear++) { $(sel).addOption(sYear.toString(), sYear.toString()) } $(sel).selectOptions(currYear.toString(), true) }, AddMonth: function(sel, currMonth) { this.ClearSelect(sel); var i = 0; for (var sMonth = 0; sMonth < 12; sMonth++) { $(sel).addOption(sMonth.toString(), (eval(sMonth + 1)).toString()) } $(sel).selectOptions(currMonth.toString(), true) }, Changed: function() { this.AddYear($('select[name=' + this.selectYearName + ']'), this.date.getFullYear()); this.AddMonth($('select[name=' + this.selectMonthName + ']'), this.date.getMonth()); $('#' + this.bodyID).html(this.GetDateBody()) }, ChangeYear: function(year) { var currDate = this.CurrDate(); this.date = new Date(year, currDate.m, currDate.d, currDate.h, currDate.mi, currDate.s, currDate.ms); this.Changed() }, ChangeMonth: function(month) { var currDate = this.CurrDate(); this.date = new Date(currDate.y, month, currDate.d, currDate.h, currDate.mi, currDate.s, currDate.ms); this.Changed() }, PreMonth: function() { var currDate = this.CurrDate(); this.date = new Date(currDate.y, currDate.m - 1, currDate.d, currDate.h, currDate.mi, currDate.s, currDate.ms); this.Changed() }, NextMonth: function() { var currDate = this.CurrDate(); this.date = new Date(currDate.y, currDate.m + 1, currDate.d, currDate.h, currDate.mi, currDate.s, currDate.ms); this.Changed() }, CurrDate: function() { var y = this.date.getFullYear(); var m = this.date.getMonth(); var d = this.date.getDate(); var h = this.date.getHours(); var mi = this.date.getMinutes(); var s = this.date.getSeconds(); var ms = this.date.getMilliseconds(); return { y: y, m: m, d: d, h: h, mi: mi, s: s, ms: ms} }, HTML: function() { var sHtml = '<div id="ddxdate"><table><thead id="' + this.headID + '">'; sHtml += this.GetDateTitle(); sHtml += '</thead><tbody id="' + this.bodyID + '">'; sHtml += this.GetDateBody(); sHtml += '</tbody></table></div>'; return sHtml }, GetDateTitle: function() { var sHtml = ''; sHtml += '<tr>'; sHtml += '<th colspan="7" class="title">'; sHtml += '<img src="' + DDXDate.icon.path + DDXDate.icon.pre + '" class="DPreMonth" alt="" onclick="DDXDate.PreMonth();" />'; sHtml += '<img src="' + DDXDate.icon.path + DDXDate.icon.next + '" class="DNextMonth" alt="" onclick="DDXDate.NextMonth();" />'; sHtml += '<select name="' + this.selectYearName + '" onchange="DDXDate.ChangeYear($(this).val());">'; sHtml += '</select>'; sHtml += '<select name="' + this.selectMonthName + '" onchange="DDXDate.ChangeMonth($(this).val());">'; sHtml += '</select>'; sHtml += '<img src="' + DDXDate.icon.path + DDXDate.icon.close + '" alt="" border="0" class="dClose" onclick="DDXDate.Close();" />'; sHtml += '</th>'; sHtml += '</tr>'; sHtml += '<tr>'; sHtml += '<th>日</th>'; sHtml += '<th>一</th>'; sHtml += '<th>二</th>'; sHtml += '<th>三</th>'; sHtml += '<th>四</th>'; sHtml += '<th>五</th>'; sHtml += '<th>六</th>'; sHtml += '</tr>'; return sHtml }, GetDateBody: function() { var sHtml = ''; var currDate = this.CurrDate(); var fDate = new Date(currDate.y, currDate.m, 1); var days = 31; var y = currDate.y; var m = currDate.m + 1; var d = currDate.d; switch (m) { case 4: case 6: case 9: case 11: days = 30; break; default: break }; if (m == 2) { days = 28; if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) { days = 29 } } var fDay = fDate.getDay(); var cols = days + fDay; var rows = Math.ceil(cols / 7); var c = 0, fd = 1; for (var i = 0; i < rows; i++) { sHtml += '<tr>'; for (var j = 0; j < 7; j++) { sHtml += '<td>'; if (c >= fDay && fd <= days) { if (fd == d) { sHtml += '<a href="javascript:void(0);" class="active" onclick="DDXDate.Set(' + fd + ')">' + fd.toString() + '</a>' } else { sHtml += '<a href="javascript:void(0);" onclick="DDXDate.Set(' + fd + ')">' + fd.toString() + '</a>' } fd++ } sHtml += '</td>'; c++ } sHtml += '</tr>' } return sHtml } };

var DDXFDateSet = { SetDate: function(framename, txtName, format, divobj) { $(window.frames[framename].document.getElementsByName('ddxDateBox')).val(txtName); $(window.frames[framename].document.getElementsByName('ddxDateFormat')).val(format); $(window.frames[framename].document.getElementsByName('ddxCurrentDate')).val($('input[name=' + txtName + ']').val()); $(window.frames[framename].document.getElementsByName('ddxCurrentDate')).trigger('click'); var o = $('input[name=' + txtName + ']'); var offset = o.offset(); var l = offset.left + 5; var t = offset.top + o.height() + 2; $(divobj).css({ 'left': l, 'top': t }) } };
var DDXFDate = { date: new Date(), format: 'yyyy-MM-dd', textbox: null, selectYearName: 'DDXFSYear', selectMonthName: 'DDXFSMonth', preMonth: 'DFPreMonth', nextMonth: 'DFNextMonth', headID: 'ddxFDateHead', bodyID: 'ddxFDateBody', win: window, icon: { path: '/styles/date/images/', close: 'close.gif', pre: 'left1.gif', next: 'right1.gif' }, ChangeWH: function() { var dW = $('#ddxfdate').width(); var wH = $('#ddxfdate').height(); if (window.parent) { this.win = window.parent; $(window.parent.document.getElementById("frameddxdate")).css('width', dW + 2); $(window.parent.document.getElementById("frameddxdate")).css('height', wH + 2) } }, init: function() { $(document.body).append(this.HTML()); this.AddYear($('select[name=' + this.selectYearName + ']'), this.date.getFullYear()); this.AddMonth($('select[name=' + this.selectMonthName + ']'), this.date.getMonth()); this.ChangeWH() }, Set: function(day) { var format = $('#ddxDateFormat').val(); if (format && format != '') { this.format = format } var boxName = $('#ddxDateBox').val(); if (boxName && boxName != '') { this.textbox = this.win.document.getElementsByName(boxName) } if (!this.textbox) return; var currDate = this.CurrDate(); this.date = new Date(currDate.y, currDate.m, day, currDate.h, currDate.mi, currDate.s, currDate.ms); $(this.textbox).val(this.date.format(this.format)); this.Close() }, Close: function() { if (this.win.document.getElementById('Fddxdate')) { $(this.win.document.getElementById('Fddxdate')).css({ 'left': '-9999px', 'top': '-9999px' }) } }, ClearSelect: function(sel) { $(sel).empty(); $(sel).removeOption(/./) }, AddYear: function(sel, currYear) { this.ClearSelect(sel); var i = 0; var sYear = currYear - 10; if (sYear < 0) sYear = 0; for (; sYear < currYear + 10; sYear++) { $(sel).addOption(sYear.toString(), sYear.toString()) } $(sel).selectOptions(currYear.toString(), true) }, AddMonth: function(sel, currMonth) { this.ClearSelect(sel); var i = 0; for (var sMonth = 0; sMonth < 12; sMonth++) { $(sel).addOption(sMonth.toString(), (eval(sMonth + 1)).toString()) } $(sel).selectOptions(currMonth.toString(), true) }, Changed: function() { this.AddYear($('select[name=' + this.selectYearName + ']'), this.date.getFullYear()); this.AddMonth($('select[name=' + this.selectMonthName + ']'), this.date.getMonth()); $('#' + this.bodyID).html(this.GetDateBody()); this.ChangeWH() }, ChangeYear: function(year) { var currDate = this.CurrDate(); this.date = new Date(year, currDate.m, currDate.d, currDate.h, currDate.mi, currDate.s, currDate.ms); this.Changed() }, ChangeMonth: function(month) { var currDate = this.CurrDate(); this.date = new Date(currDate.y, month, currDate.d, currDate.h, currDate.mi, currDate.s, currDate.ms); this.Changed() }, PreMonth: function() { var currDate = this.CurrDate(); this.date = new Date(currDate.y, currDate.m - 1, currDate.d, currDate.h, currDate.mi, currDate.s, currDate.ms); this.Changed() }, NextMonth: function() { var currDate = this.CurrDate(); this.date = new Date(currDate.y, currDate.m + 1, currDate.d, currDate.h, currDate.mi, currDate.s, currDate.ms); this.Changed() }, CurrDate: function() { var y = this.date.getFullYear(); var m = this.date.getMonth(); var d = this.date.getDate(); var h = this.date.getHours(); var mi = this.date.getMinutes(); var s = this.date.getSeconds(); var ms = this.date.getMilliseconds(); return { y: y, m: m, d: d, h: h, mi: mi, s: s, ms: ms} }, HTML: function() { var sHtml = '<div id="ddxfdate"><table><thead id="' + this.headID + '">'; sHtml += this.GetDateTitle(); sHtml += '</thead><tbody id="' + this.bodyID + '">'; sHtml += this.GetDateBody(); sHtml += '</tbody></table></div>'; return sHtml }, GetDateTitle: function() { var sHtml = ''; sHtml += '<tr>'; sHtml += '<th colspan="7" class="title">'; sHtml += '<img src="' + DDXFDate.icon.path + DDXFDate.icon.pre + '" class="DPreMonth" alt="" onclick="DDXFDate.PreMonth();" />'; sHtml += '<img src="' + DDXFDate.icon.path + DDXFDate.icon.next + '" class="DNextMonth" alt="" onclick="DDXFDate.NextMonth();" />'; sHtml += '<select name="' + this.selectYearName + '" onchange="DDXFDate.ChangeYear($(this).val());">'; sHtml += '</select>'; sHtml += '<select name="' + this.selectMonthName + '" onchange="DDXFDate.ChangeMonth($(this).val());">'; sHtml += '</select>'; sHtml += '<img src="' + DDXFDate.icon.path + DDXFDate.icon.close + '" alt="" border="0" class="dClose" onclick="DDXFDate.Close();" />'; sHtml += '</th>'; sHtml += '</tr>'; sHtml += '<tr>'; sHtml += '<th>日</th>'; sHtml += '<th>一</th>'; sHtml += '<th>二</th>'; sHtml += '<th>三</th>'; sHtml += '<th>四</th>'; sHtml += '<th>五</th>'; sHtml += '<th>六</th>'; sHtml += '</tr>'; return sHtml }, GetDateBody: function() { var sHtml = ''; var currDate = this.CurrDate(); var fDate = new Date(currDate.y, currDate.m, 1); var days = 31; var y = currDate.y; var m = currDate.m + 1; var d = currDate.d; switch (m) { case 4: case 6: case 9: case 11: days = 30; break; default: break }; if (m == 2) { days = 28; if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) { days = 29 } } var fDay = fDate.getDay(); var cols = days + fDay; var rows = Math.ceil(cols / 7); var c = 0, fd = 1; for (var i = 0; i < rows; i++) { sHtml += '<tr>'; for (var j = 0; j < 7; j++) { sHtml += '<td>'; if (c >= fDay && fd <= days) { if (fd == d) { sHtml += '<a href="javascript:void(0);" class="active" onclick="DDXFDate.Set(' + fd + ')">' + fd.toString() + '</a>' } else { sHtml += '<a href="javascript:void(0);" onclick="DDXFDate.Set(' + fd + ')">' + fd.toString() + '</a>' } fd++ } sHtml += '</td>'; c++ } sHtml += '</tr>' } return sHtml } };