/*	usemedia.com . joes koppers . 2006
	human readable date formatting (English), usage:

	var date = new Date().format('Current time and date: ','time',' on ','day',' ','humandate');
		
		//predefined date formats, use (u) for US date order (month first)
	
		day					 => 'friday'
		shortday			 => 'fri'
		(u)date				 => '22/12/2006'
		(u)shortdate		 => '22/12/06'
		(u)humandate		 => '22 december 2006'
		(u)shorthumandate	 => '22 dec 2006'
		(u)shorterhumandate	 => '22 dec '06';
		(u)shortesthumandate => '22 dec';
		(u)longhumandate	 => 'friday 22 december, 2006';
		time				 => '14:56'
		longtime			 => '14:56:23'
		(u)(short)relative	 => 'x minutes ago', 'x hours x minutes ago', '1 day x hours ago', 'x days ago',
								prints regular (u)shorthumandate at 14+ days */

Date.months=["January","February","March","April","May","June","July","August","September","October","November","December"];Date.days=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];Date.times=["day","days","hour","hours","minute","minutes","mins","second","seconds","on","at","ago","less than a minute"];Date.prototype.format=function(){var n=this.getDay();var c=this.getDate();var j=this.getMonth()+1;var l=this.getFullYear();var g=this.getHours();var d=this.getMinutes();if(d<10){d="0"+d}var r=this.getSeconds();if(r<10){r="0"+r}var k="";for(var f=0;f<arguments.length;f++){switch(arguments[f]){default:k+=arguments[f];break;case"day":k+=Date.days[n];break;case"shortday":k+=Date.days[n].substring(0,3);break;case"date":k+=c+"/"+j+"/"+l;break;case"udate":k+=j+"/"+c+"/"+l;break;case"shortdate":k+=c+"/"+j+"/"+String(l).substr(2);break;case"ushortdate":k+=j+"/"+c+"/"+String(l).substr(2);break;case"humandate":k+=c+" "+Date.months[j-1]+" "+l;break;case"uhumandate":k+=Date.months[j-1]+" "+c+", "+l;break;case"shorthumandate":k+=c+" "+Date.months[j-1].substring(0,3)+" "+l;break;case"ushorthumandate":k+=Date.months[j-1].substring(0,3)+" "+c+", "+l;break;case"shorterhumandate":k+=c+" "+Date.months[j-1].substring(0,3)+" '"+String(l).substr(2);break;case"shortesthumandate":k+=c+" "+Date.months[j-1].substring(0,3);break;case"ushorterhumandate":k+=Date.months[j-1].substring(0,3)+" "+c+", '"+String(l).substr(2);break;case"ushortesthumandate":k+=Date.months[j-1].substring(0,3)+" "+c;break;case"longhumandate":k+=Date.days[n]+" "+c+" "+Date.months[j-1]+", "+l;break;case"ulonghumandate":k+=Date.days[n]+" "+Date.months[j-1]+" "+c+", "+l;break;case"time":k+=g+":"+d;break;case"longtime":k+=g+":"+d+":"+r;break;case"relative":case"urelative":case"shortrelative":case"ushortrelative":var b=new Date();var o=b-this;if(o<60000){o=0}var a=Math.floor(o/1000/60);var q=Math.floor(a/60);var p=(q>b.getHours())?Math.floor((q)/24):0;if(p==0){a=a-(q*60);q=q;if(q==0&&a==0){k+=Date.times[12]+" "}else{var e=(arguments[f].indexOf("short")!=-1)?Date.times[6]:Date.times[5];if(q>0){k+=(q==1)?"1 "+Date.times[2]+" ":q+" "+Date.times[3]+" "}if(a>0){k+=(a==1)?"1 "+Date.times[4]+" ":a+" "+e+" "}}}else{if(p==1){k+="1 "+Date.times[0]+" ";q=q-24;if(q>0){k+=(q==1)?"1 "+Date.times[2]+" ":q+" "+Date.times[3]+" "}}else{if(p<=14){k+=p+" "+Date.times[1]+" "}}}if(p>14){if(arguments[f].indexOf("short")!=-1){l="'"+String(l).substr(2)}else{k+=Date.times[9]+" "}k+=(arguments[f].indexOf("u")==-1)?c+" "+Date.months[j-1].substring(3,0)+" "+l:Date.months[j-1].substring(3,0)+" "+c+", "+l;k+=" "+Date.times[10]+" "+g+":"+d}else{k+=Date.times[11];if(p>1){k+=" "+Date.times[10]+" "+g+":"+d}}break;case"tolower":k=k.toLowerCase();break;case"nonbreaking":k=k.replace(/ /g,"&nbsp;");break}}return k};
