﻿/* v 1.1.1 */

String.prototype.trim = function(){ return this.replace(/(^\s*)|(\s*$)/g, "") };
String.prototype.trimStart = function(){ return this.replace(/(^\s*)/g, "") };
String.prototype.trimEnd = function(){ return this.replace(/(\s*$)/g, "") };

Number.prototype.fix = function(n){
    with(Math)
        return(round(Number(this)*pow(10,n))/pow(10,n));
}

Date.prototype.add = function(ms){ return ( new Date(this.getTime() +ms) ) };
Date.prototype.addSecond = function(s){ return this.add(1000*s) };
Date.prototype.addMinute = function(m){ return this.add(1000*60*m) };
Date.prototype.addHour = function(h){ return this.add(1000*60*60*h) };
Date.prototype.addDay = function(d){ return this.addHour(24*d) };
Date.prototype.addWeak = function(w){ return this.addDay(7*w) };
Date.prototype.addMonth = function(m){ return (new Date( new Date(this.getTime()).setUTCMonth(this.getUTCMonth() +m) )) };
Date.prototype.addYear = function(y){ return this.addMonth(12*y) };


Date.prototype.format=function(format){ 
	var date = this;
/*----------------------------------------*\ 
URL: http://www.mattkruse.com/javascript/date/


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"
 
 new Date().format("yy/mm/dd");
\*----------------------------------------*/ 
	var MONTH_NAMES=[
		'一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月',
		'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'
	];
	var DAY_NAMES=[
		'星期日','星期一','星期二','星期三','星期四','星期五','星期六',
		'Sun','Mon','Tue','Wed','Thu','Fri','Sat'
	];
	
	var LZ = function(x){ return(x<0||x>9?"":"0")+x	};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;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;
}
