// (C) 2009 - The end of time ; Times Publishing Company

function TPCDateFormat(){this.debug=false;this.d=new Date();this.tpc_dt_month=new Array("January","Febuary","March","April","May","June","July","Auguest","September","October","November","December");this.tpc_dt_millis=1;this.tpc_dt_second=this.tpc_dt_millis*1000;this.tpc_dt_minute=this.tpc_dt_second*60;this.tpc_dt_hour=this.tpc_dt_minute*60;this.tpc_dt_day=this.tpc_dt_hour*24;this.setTime=function(unixTime){this.d.setTime(unixTime);}
this.translateMilliseconds=function(t){return Math.round(t);};this.translateSeconds=function(t){return Math.round(t/this.tpc_dt_second);};this.translateMinutes=function(t){return Math.round(t/this.tpc_dt_minute);};this.translateHours=function(t){return Math.round(t/this.tpc_dt_hour);};this.format=function(fmt){if(fmt==null||fmt=='')
return this.d.toString();if(this.debug){alert("Format is: "+fmt);}
var _str='';var _arr=this.compile(fmt);if(this.debug){alert("Compiled Array: "+_arr);}
for(var i=0;i<_arr.length;i++){_str+=this.tpc_dt_translate(_arr[i]);}
return _str;};this.compile=function(fmt){var _arr=new Array();var _idx=0;var _strStart=-1;var _strEnd=-1;var _key=null;var _keyLiteral=null;for(var i=0;i<fmt.length;i++){_strStart=i;_strEnd=i+1;_key=fmt.substring(_strStart,_strEnd);_keyLiteral=_key;while(true){_strStart++;_strEnd++;_arr[_idx]=_keyLiteral;if(_strEnd>fmt.length)
break;var _tmpKey=fmt.substring(_strStart,_strEnd);if(_tmpKey==_key){_keyLiteral+=_key;i++;}else{_idx++;break;}}}
return _arr;}
this.tpc_dt_translate=function(fmt){var t=null;if(fmt.length<1){return fmt;}
else if(fmt.substring(0,1)=='M'){if(this.debug){alert("Formatting the month ("+fmt+")");}
t=this.d.getMonth();if(fmt.length<3){var _month=t+1;return(parseInt(_month)<10&&fmt.length==2)?"0"+_month.toString():_month.toString();}else if(fmt.length==3)
return this.tpc_dt_month[t].substring(0,3);else
return this.tpc_dt_month[t];}
else if(fmt.substring(0,1)=='d'){t=this.d.getDate();return(fmt.length>1&&parseInt(t<10))?"0"+t.toString():t.toString();}
else if(fmt.substring(0,1)=='x'){t=this.d.getDate();var _suffix='th';if(t!=11&&t!=12&&t!=13){var _tmod=t%10;if(_tmod==1){_suffix='st';}else if(_tmod==2){_suffix='nd';}else if(_tmod==3){_suffix='rd';}}
return _suffix;}
else if(fmt.substring(0,1)=='y'){t=this.d.getFullYear();t=""+t;return(fmt.length<4)?t.substring(2,4):t;}
else if(fmt.substring(0,1)=='i'){t=this.d.getMinutes();return(fmt.length>1&&t<10)?"0"+t.toString():t.toString();}
else if(fmt.substring(0,1)=='h'){t=this.d.getHours();if(parseInt(t)==0)
t=12;else if(t>12)
t-=12;return(fmt.length>1&&t<10)?"0"+t.toString():t.toString();}
else if(fmt.substring(0,1)=='H'){t=this.d.getHours();return(fmt.length>1&&t<10)?"0"+t.toString():t.toString();}
else if(fmt.substring(0,1)=='A'||fmt.substring(0,1)=='a'){t=this.d.getHours();if(t<12)
return(fmt[0]=='a')?"am":"AM";else
return(fmt[0]=='a')?"pm":"PM";}
else if(fmt.substring(0,1)=='s'){t=this.d.getSeconds();return(fmt.length>1&&t<10)?"0"+t.toString():t.toString();}
else if(fmt.substring(0,1)=='S'){t=this.d.getMilliseconds();return t;}
else{return fmt;}};this.since=function(fmt){var _now=new Date().getTime();var _diff=_now-this.d.getTime();if(_diff<0){return this.format(fmt);}
else if(_diff<this.tpc_dt_second){return this.translateMilliseconds(_diff)+" milliseconds ";}
else if(_diff<this.tpc_dt_minute){var _diffSeconds=this.translateSeconds(_diff);return _diffSeconds+" second"+((_diffSeconds>1)?"s":"");}
else if(_diff<this.tpc_dt_hour){var _diffMinutes=this.translateMinutes(_diff);return _diffMinutes+" minute"+((_diffMinutes>1)?"s":"");}
else if(_diff<this.tpc_dt_day){var _diffHours=this.translateHours(_diff);var _diffMinutesMod=this.translateMinutes(_diff%this.tpc_dt_hour);var _formattedStr=_diffHours+" hour"+((_diffHours>1)?"s":"");if(_diffMinutesMod>0){_formattedStr+=", "+_diffMinutesMod+" minute"+((_diffMinutesMod>1)?"s":"");}
return _formattedStr;}
else{return this.format(fmt);}};}
