Jump to content

Help with countdown (Local time error)


Chezshire

Recommended Posts

Hello Everyone.

  I'm a newb who has been playing with coding, php, javascript, and other net related things for a few months and has very, very little idea of what he is doing. I've run into a road block and i'm hoping some nice kind <note the butt smooching here ;) > wonderful person out their < i.e. you reading things please please please help me ;) > might be able to prove some advice or wisdom in resolving my problem. Huge thanks!

 

PROBLEM:

A friend hep me update some stuff on my site last night, and now i'm getting an odd error which results in a pop up window appearing that says 'Launch time!' which i have to click 'OK' to proceed to any page which has the javascript on it.

  I believe the problem has something to do with line #49 as shown below (full javascript is at the bottom of this post - i've pull the two areas which I think are related to the problem and spotlighted them for anyone who might be able to help me out with resolving this issue.

 

 

#045 cdLocalTime.prototype.showresults=function(){
#046 var thisobj=this
#047 var debugstring=(this.debugmode)? "<p style=\"background-color: #FCD6D6; color: black; padding: 5px\"><big>Debug Mode on!</big><br /><b>Current Local time:</b> "+this.localtime.toLocaleString()+"<br />Verify this is the correct current local time, in other words, time zone of count down date.<br /><br /><b>Target Time:</b> "+this.targetdate.toLocaleString()+"<br />Verify this is the date/time you wish to count down to (should be a future date).</p>" : ""
#048


#049 var timediff=(this.targetdate-this.localtime)/1000 //difference btw target date and current date, in seconds


#49 var timediff=(this.targetdate-this.localtime)/1000 //difference btw target date and current date, in seconds
#50 if (timediff<0){ //if time is up
#51 this.timesup=true
#52 this.container.innerHTML=debugstring+this.formatresults()
#53 return
#54 }


#105  }
#106  else{ //else if target date/time met
#107  var displaystring="" //Don't display any text


#108  alert("Launch time!") //Instead, perform a custom alert


#109  }
#110 return displaystring
#111  }
#112

 

ERROR MESSAGE:

Debug Mode on!

Current Local time: September 14, 2008 8:27:02 AM PDT

Verify this is the correct current local time, in other words, time zone of count down date.

 

Target Time: September 14, 2008 12:00:05 AM PDT

Verify this is the date/time you wish to count down to (should be a future date).

 

undefined

 

 

Full code for page (It's loaded several times in various places)

[/b]
<head>
<style type="text/css">
	 .lcdstyle{ /*Example CSS to create LCD countdown look*/
	background-color:#050F1D;
	color:fff;
	font: bold 16px MS Sans Serif;
	padding: 3px;
	}

	.lcdstyle sup{ /*Example CSS to create LCD countdown look*/
	font-size: 80%
	}
	</style>
</head>


<script type="text/javascript">

//To debug or reset cloc add ',debugmode' to the function line below - remove once reset

function cdLocalTime(container, servermode, offsetMinutes, targetdate, debugmode){
if (!document.getElementById || !document.getElementById(container)) return
this.container=document.getElementById(container)
var servertimestring=(servermode=="server-php")? '<? print date("F d, Y H:i:s", time())?>' : (servermode=="server-ssi")? '<!--#config timefmt="%B %d, %Y %H:%M:%S"--><!--#echo var="DATE_LOCAL" -->' : '<%= Now() %>'
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)? "<p style=\"background-color: #FCD6D6; color: black; padding: 5px\"><big>Debug Mode on!</big><br /><b>Current Local time:</b> "+this.localtime.toLocaleString()+"<br />Verify this is the correct current local time, in other words, time zone of count down date.<br /><br /><b>Target Time:</b> "+this.targetdate.toLocaleString()+"<br />Verify this is the date/time you wish to count down to (should be a future date).</p>" : ""

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>"
}
else{ //else if target date/time met
var displaystring="rollover!"
}
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 displaystring="<span class='lcdstyle'>"+arguments[0]+" <sup>days</sup> "+arguments[1]+" <sup>hours</sup> "+arguments[2]+" <sup>minutes</sup> "+arguments[3]+" <sup>seconds</sup></span> Until Rollover"
}
return displaystring
}

</script>


<body>
<div id="cdcontainer"></div>

<script type="text/javascript">
//cdLocalTime("ID_of_DIV_container", "server_mode", LocaltimeoffsetMinutes, "target_date", "opt_debug_mode")
//cdLocalTime.displaycountdown("base_unit", formatfunction_reference)

//Note: "launchdate" should be an arbitrary but unique variable for each instance of a countdown on your page:

var launchdate=new cdLocalTime("cdcontainer", "server-php", 0, "September 14, 2008 00:00:05", "debugmode")
launchdate.displaycountdown("days", formatresults2)
</script>

</body>
</html>

Link to comment
Share on other sites

If I understand your issue right, you are wanting to turn off the debug mode so that the alert box does not appear on every page. If so, consider the following line:

function cdLocalTime(container, servermode, offsetMinutes, targetdate, debugmode)

 

If you pass in the final parameter (no matter what it is), the debugmode of the object is set to 1 (or on). So, wherever you call cdLocalTime(), you need to be sure you have only 4 parameters and not 5. Removing the 5th parameter will turn off debug mode for you.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.