function varType(_var){return Object.prototype.toString.call(_var).replace(/^\[object\s+(\w+)\]$/,"$1")}function isEmpty(str){return str===undefined||str===null||str===""}function size_format(size,digit){if(digit===undefined||digit<0)digit=2;var unit=["","K","M","G","T","P"];var i=size>0?Math.floor(Math.log(size)/Math.log(1024)):0;return(size/Math.pow(1024,i)).toFixed(i>0?digit:0)+unit[i]}function date(format,timestamp){var jsdate=timestamp?new Date(timestamp*1e3):new Date;var pad=function(n,c){if((n=n+"").length<c){return new Array(++c-n.length).join("0")+n}else{return n}};var txt_weekdays=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var txt_ordin={1:"st",2:"nd",3:"rd",21:"st",22:"nd",23:"rd",31:"st"};var txt_months=["","January","February","March","April","May","June","July","August","September","October","November","December"];var f={d:function(){return pad(f.j(),2)},D:function(){return f.l().substring(0,3)},j:function(){return jsdate.getDate()},l:function(){return txt_weekdays[f.w()]},N:function(){return f.w()+1},S:function(){return txt_ordin[f.j()]?txt_ordin[f.j()]:"th"},w:function(){return jsdate.getDay()},z:function(){return(jsdate-new Date(jsdate.getFullYear()+"/1/1"))/864e5>>0},W:function(){var a=f.z(),b=364+f.L()-a;var nd2,nd=(new Date(jsdate.getFullYear()+"/1/1").getDay()||7)-1;if(b<=2&&(jsdate.getDay()||7)-1<=2-b){return 1}else{if(a<=2&&nd>=4&&a>=6-nd){nd2=new Date(jsdate.getFullYear()-1+"/12/31");return date("W",Math.round(nd2.getTime()/1e3))}else{return 1+(nd<=3?(a+nd)/7:(a-(7-nd))/7)>>0}}},F:function(){return txt_months[f.n()]},m:function(){return pad(f.n(),2)},M:function(){return f.F().substr(0,3)},n:function(){return jsdate.getMonth()+1},t:function(){var n;if((n=jsdate.getMonth()+1)===2){return 28+f.L()}else{if(n&1&&n<8||!(n&1)&&n>7){return 31}else{return 30}}},L:function(){var y=f.Y();return!(y&3)&&(y%100||!(y%400))?1:0},Y:function(){return jsdate.getFullYear()},y:function(){return(jsdate.getFullYear()+"").slice(2)},a:function(){return jsdate.getHours()>11?"pm":"am"},A:function(){return f.a().toUpperCase()},B:function(){var off=(jsdate.getTimezoneOffset()+60)*60;var theSeconds=jsdate.getHours()*3600+jsdate.getMinutes()*60+jsdate.getSeconds()+off;var beat=Math.floor(theSeconds/86.4);if(beat>1e3)beat-=1e3;if(beat<0)beat+=1e3;if(String(beat).length===1)beat="00"+beat;if(String(beat).length===2)beat="0"+beat;return beat},g:function(){return jsdate.getHours()%12||12},G:function(){return jsdate.getHours()},h:function(){return pad(f.g(),2)},H:function(){return pad(jsdate.getHours(),2)},i:function(){return pad(jsdate.getMinutes(),2)},s:function(){return pad(jsdate.getSeconds(),2)},u:function(){return jsdate.getTime().toString().substr(-3)},O:function(){var t=pad(Math.abs(jsdate.getTimezoneOffset()/60*100),4);if(jsdate.getTimezoneOffset()>0)t="-"+t;else t="+"+t;return t},P:function(){var O=f.O();return O.substr(0,3)+":"+O.substr(3,2)},c:function(){return f.Y()+"-"+f.m()+"-"+f.d()+"T"+f.h()+":"+f.i()+":"+f.s()+f.P()},U:function(){return Math.round(jsdate.getTime()/1e3)}};return format.replace(/[\\]?([a-zA-Z])/g,function(t,s){if(t!==s){return s}else if(f[s]){return f[s]()}else{return s}})}String.prototype.format=function(args){var result=this;if(arguments.length>0){var reg;if(arguments.length===1&&typeof args=="object"){for(var key in args){if(args[key]!==undefined){reg=new RegExp("({"+key+"})","g");result=result.replace(reg,args[key])}}}else{for(var i=0;i<arguments.length;i++){if(arguments[i]!==undefined){reg=new RegExp("({["+i+"]})","g");result=result.replace(reg,arguments[i])}}}}return result};String.prototype.parse_str=function(args){var reg=/(^|&+)([^=]+)=([^&]*)/g,re,o={};while(re=reg.exec(this)){o[re[2]]=re[3]}if(varType(args)==="Array"){for(var v of args){if(!o.hasOwnProperty(v))return false}}else if(varType(args)==="Object"){for(var k in args){if(varType(args[k])==="RegExp"){if(!o.hasOwnProperty(k)){if(null==="".match(args[k]))return false}else if(null===o[k].match(args[k])){return false}}else if(!o.hasOwnProperty(k)){if(args[k]!=="")return false}else if(args[k]!==o[k].toString()){return false}}}else if(varType(args)==="String"){return o.hasOwnProperty(args)?o[args]:false}return o};var REGEX={_test:function(val,re){return!isEmpty(val)&&re.test(val.toString())},isInt:function(val){return this._test(val,/^(0|[1-9]\d*)$/)},isInt2:function(val){return this._test(val,/^(0|[1-9]\d*)$/)},isDecimal:function(val){return this._test(val,/^(0|[1-9]\d*)(\.\d+)?$/)},isDate:function(val){return this._test(val,/^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/)},isDatetime:function(val){return this._test(val,/^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\s+(2[0-3]|[0-1]\d):[0-5]\d:[0-5]\d$/)},isMD5:function(val,isUpper){return this._test(val,varType(isUpper)==="Boolean"?isUpper?/^[0-9A-F]{32}$/:/^[0-9a-f]{32}$/:/^([0-9a-f]{32}|[0-9A-F]{32})$/)},isMobile:function(val){return this._test(val,/^1(([38]\d)|(4[14-9])|([59][0-35-9])|6[25-7]|(7[0-8]))\d{8}$/)},isEmail:function(val){return this._test(val,/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/)}};
