function cdLocalTime(container, servermode, offsetMinutes, targetdate, debugmode, current){
this.container=document.getElementById(container)
var servertimestring=current;
this.localtime=this.serverdate=new Date(servertimestring)
this.targetdate=new Date(targetdate)
this.debugmode=(typeof debugmode!="undefined")? 1 : 0
this.timesup=false
this.localtime.setTime(this.serverdate.getTime()+offsetMinutes*60*1000) //add user offset to server time
this.updateTime()

}

cdLocalTime.prototype.updateTime=function(){
var thisobj=this
this.localtime.setSeconds(this.localtime.getSeconds()+1)
setTimeout(function(){thisobj.updateTime()}, 1000) //update time every second

}

cdLocalTime.prototype.displaycountdown=function(baseunit, functionref){
this.baseunit=baseunit
this.formatresults=functionref
this.showresults()
}

cdLocalTime.prototype.showresults=function(){
var thisobj=this
var debugstring=(this.debugmode)? "" : ""

var timediff=(this.targetdate-this.localtime)/1000 //difference btw target date and current date, in seconds
if (timediff<0){ //if time is up
this.timesup=true
this.container.innerHTML=debugstring+this.formatresults()
return
}
var oneMinute=60 //minute unit in seconds
var oneHour=60*60 //hour unit in seconds
var oneDay=60*60*24 //day unit in seconds
var dayfield=Math.floor(timediff/oneDay)
var hourfield=Math.floor((timediff-dayfield*oneDay)/oneHour)
var minutefield=Math.floor((timediff-dayfield*oneDay-hourfield*oneHour)/oneMinute)
var secondfield=Math.floor((timediff-dayfield*oneDay-hourfield*oneHour-minutefield*oneMinute))
if (this.baseunit=="hours"){ //if base unit is hours, set "hourfield" to be topmost level
hourfield=dayfield*24+hourfield
dayfield="n/a"
}
else if (this.baseunit=="minutes"){ //if base unit is minutes, set "minutefield" to be topmost level
minutefield=dayfield*24*60+hourfield*60+minutefield
dayfield=hourfield="n/a"
}
else if (this.baseunit=="seconds"){ //if base unit is seconds, set "secondfield" to be topmost level
var secondfield=timediff
dayfield=hourfield=minutefield="n/a"
}
this.container.innerHTML=debugstring+this.formatresults(dayfield, hourfield, minutefield, secondfield)
setTimeout(function(){thisobj.showresults()}, 1000) //update results every second
}

/////CUSTOM FORMAT OUTPUT FUNCTIONS BELOW//////////////////////////////

//Create your own custom format function to pass into cdLocalTime.displaycountdown()
//Use arguments[0] to access "Days" left
//Use arguments[1] to access "Hours" left
//Use arguments[2] to access "Minutes" left
//Use arguments[3] to access "Seconds" left

//The values of these arguments may change depending on the "baseunit" parameter of cdLocalTime.displaycountdown()
//For example, if "baseunit" is set to "hours", arguments[0] becomes meaningless and contains "n/a"
//For example, if "baseunit" is set to "minutes", arguments[0] and arguments[1] become meaningless etc

//1) Display countdown using plain text
function formatresults(){
if (this.timesup==false){//if target date/time not yet met
//var displaystring="<span style='background-color: #CFEAFE'>"+arguments[1]+" hours "+arguments[2]+" minutes "+arguments[3]+" seconds</span> left until launch time"
}
else{ //else if target date/time met
var displaystring="Launch time!"
}
return displaystring

}

//2) Display countdown with a stylish LCD look, and display an alert on target date/time
function formatresults2(){
if (this.timesup==false){ //if target date/time not yet met


var divisor=10;

// for argument 0 coding starts here
var digitarrayday=new Array(); // creating an array
//alert(arguments[0].toString().length);
if((arguments[0].toString().length)==1)
{
arguments[0]=("<img src=images/digits/dg0.gif>")+("<img src=images/digits/dg"+arguments[0]+".gif>");	
}
else
{ 
	do
	 {
	var digitday=(arguments[0] % divisor); 
	// looping through the till all digits are taken
	arguments[0]=(arguments[0]/divisor); // getting the digits from right side
	digitarrayday=digitarrayday.concat(digitday);
	} while(arguments[0] >=1);
    digitarrayday.reverse();
	for (i in digitarrayday)
	{
		var i;
		digitarrayday[i]=digitarrayday[i].toString();
			if((digitarrayday[i].indexOf("."))>0)
			{
			digitarrayday[i]=digitarrayday[i].split(".");
			digitarrayday[i]=digitarrayday[i][0];
			}
		arguments[0]+=("<img src=images/digits/dg"+digitarrayday[i]+".gif>");
		arguments[0]=arguments[0].toString();
			if((arguments[0].indexOf("<"))>0)
			{
			arguments[0]=arguments[0].split("<");
			arguments[0]="<"+arguments[0][1];
			
			}
	}
}
// for argument 0 coding ends here

// for argument 1 coding starts here
var digitarrayhr=new Array(); // creating an array
if((arguments[1].toString().length)==1)
{
arguments[1]=("<img src=images/digits/dg0.gif>")+("<img src=images/digits/dg"+arguments[1]+".gif>");	
}
else
{ 
do
 {
var digithr=(arguments[1] % divisor); 
// looping through the till all digits are taken
arguments[1]=(arguments[1]/divisor); // getting the digits from right side
digitarrayhr=digitarrayhr.concat(digithr);
} while(arguments[1] >=1);
digitarrayhr.reverse();
for (z in digitarrayhr)
{
var z;
digitarrayhr[z]=digitarrayhr[z].toString();
if((digitarrayhr[z].indexOf("."))>0)
{
digitarrayhr[z]=digitarrayhr[z].split(".");
digitarrayhr[z]=digitarrayhr[z][0];
}
arguments[1]+=("<img src=images/digits/dg"+digitarrayhr[z]+".gif>");
arguments[1]=arguments[1].toString();
if((arguments[1].indexOf("<"))>0)
{
arguments[1]=arguments[1].split("<");
arguments[1]="<"+arguments[1][1];

}
}
}
// for argument 1 coding ends here


var digitarray=new Array(); // creating an array
 if((arguments[2].toString().length)==1)
{
arguments[2]=("<img src=images/digits/dg0.gif>")+("<img src=images/digits/dg"+arguments[2]+".gif>");	
}
else
{ 
 do
 {
var digit=(arguments[2] % divisor); 
// looping through the till all digits are taken
arguments[2]=(arguments[2]/divisor); // getting the digits from right side
digitarray=digitarray.concat(digit);
} while(arguments[2] >=1);
digitarray.reverse();
for (x in digitarray)
{
var x;

digitarray[x]=digitarray[x].toString();
if((digitarray[x].indexOf("."))>0)
{
digitarray[x]=digitarray[x].split(".");
digitarray[x]=digitarray[x][0];
}
arguments[2]+=("<img src=images/digits/dg"+digitarray[x]+".gif>");
arguments[2]=arguments[2].toString();
if((arguments[2].indexOf("<"))>0)
{
arguments[2]=arguments[2].split("<");
arguments[2]="<"+arguments[2][1];

}
}}
// for argument 3 coding starts here
var digitarraysec=new Array(); // creating an array
 if((arguments[3].toString().length)==1)
{
arguments[3]=("<img src=images/digits/dg0.gif>")+("<img src=images/digits/dg"+arguments[3]+".gif>");	
}
else
{ 
 do
 {
	var digitsec=(arguments[3] % divisor); 
	// looping through the till all digits are taken
	arguments[3]=(arguments[3]/divisor); // getting the digits from right side
	digitarraysec=digitarraysec.concat(digitsec);
} while(arguments[3] >=1);
digitarraysec.reverse();
for (y in digitarraysec)
{
var y;
digitarraysec[y]=digitarraysec[y].toString();
	if((digitarraysec[y].indexOf("."))>0)
	{
	digitarraysec[y]=digitarraysec[y].split(".");
	digitarraysec[y]=digitarraysec[y][0];
	}

	arguments[3]+=("<img src=images/digits/dg"+digitarraysec[y]+".gif>");
	arguments[3]=arguments[3].toString();
	if((arguments[3].indexOf("<"))>0)
	{
	arguments[3]=arguments[3].split("<");
	arguments[3]="<"+arguments[3][1];
	
	}
}}
// for argument 3 coding ends here


var displaystring="<span >"+arguments[0]+("<img src=images/digits/dgc.gif>")+arguments[1]+("<img src=images/digits/dgc.gif>")+arguments[2]+("<img src=images/digits/dgc.gif>")+arguments[3]+"</span>"
}
else{ //else if target date/time met
var displaystring="" //Don't display any text
//alert("Launch time!") //Instead, perform a custom alert
window.location.reload();

}
return displaystring
}


function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}