// Declarations
var dN=new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat'),mN=new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'),frsg=0,frnz=0;

// Get date
function tN(){ return new Date(); } 

// Calculate daylight savings
function dS(){ return ((tN().getTime()>fD(0,9,1,1).getTime())&&(tN().getTime()<fD(0,2,1,3).getTime()))?3600000:0; } 
function fD(d,m,h,p){ var week=(p<0)?7*(p+1):7*(p-1),nm=(p<0)?m+1:m,x=new Date(tN().getUTCFullYear(),nm,1,h,0,0),dOff=0; if(p<0){ x.setTime(x.getTime()-86400000); } if(x.getDay()!=d){ dOff=(x.getDay()<d)?(d-x.getDay()):0-(x.getDay()-d); if(p<0&&dOff>0){ week-=7; } if(p>0&&dOff<0){ week+=7; } x.setTime(x.getTime()+((dOff+week)*86400000)); } return x; } 

// Other calculations
function lZ(x){ return (x>9)?x:'0'+x; } 
function tH(x){ if(x==0){ x=12; } return (x>12)?x-=12:x; } 
function dE(x){ if(x==1||x==21||x==31){ return 'st'; } if(x==2||x==22){ return 'nd'; } if(x==3||x==23){ return 'rd'; } return 'th'; } 
function aP(x){ return (x>11)?'pm':'am'; } 
function y4(x){ return (x<500)?x+1900:x; } 

// Singapore
function tSsg(){ x=new Date(tN().getUTCFullYear(),tN().getUTCMonth(),tN().getUTCDate(),tN().getUTCHours(),tN().getUTCMinutes(),tN().getUTCSeconds()); x.setTime(x.getTime()+28800000); return x; } 
function dTsg(){ if(frsg==0){ frsg=1; document.write('<span id="tPsg">'+eval(oTsg)+'</span>'); } document.getElementById('tPsg').innerHTML=eval(oTsg); setTimeout('dTsg()',1000); } 
var oTsg="dN[tSsg().getDay()]+','+' '+tSsg().getDate()+dE(tSsg().getDate())+' '+mN[tSsg().getMonth()]+' '+y4(tSsg().getYear())+' '+'a'+'t'+' '+tH(tSsg().getHours())+':'+lZ(tSsg().getMinutes())+aP(tSsg().getHours())";

// New Zealand
function tSnz(){ x=new Date(tN().getUTCFullYear(),tN().getUTCMonth(),tN().getUTCDate(),tN().getUTCHours(),tN().getUTCMinutes(),tN().getUTCSeconds()); x.setTime(x.getTime()+dS()+46800000); return x; } 
function dTnz(){ if(frnz==0){ frnz=1; document.write('<span id="tPnz">'+eval(oTnz)+'</span>'); } document.getElementById('tPnz').innerHTML=eval(oTnz); setTimeout('dTnz()',1000); } 
var oTnz="dN[tSnz().getDay()]+','+' '+tSnz().getDate()+dE(tSnz().getDate())+' '+mN[tSnz().getMonth()]+' '+y4(tSnz().getYear())+' '+'a'+'t'+' '+tH(tSnz().getHours())+':'+lZ(tSnz().getMinutes())+aP(tSnz().getHours())";
