Mark Forums Read
  #1  
Old 05-17-2010, 01:48 AM
JavaScriptBank JavaScriptBank is offline
Senior Member
 
Join Date: Sep 2009
Posts: 130
JavaScriptBank is on a distinguished road
Default JavaScript Countdown Timer solution in OOP

This JavaScript code is the new & unique solution to create a countdown timer on your web pages; it's really new in the look of web developers and users. This JavaScript countdown timer is very ea... detail at JavaScriptBank.com - 2.000+ free JavaScript codes


How to setup

Step 1: Copy & Paste CSS code below in your HEAD section
CSS
Code:
<style type="text/css"> body{ font-family:arial,sans-serif; color:#000; background:#fff; text-align:center; } input{ font-size:20px; padding:5px; border:none; background:#69c; margin:0 10px; } input#c[disabled]{ background:#eee; } #display{ font-weight:bold; margin:20px auto; width:720px; font-size:350px; } .final{ color:#c00; } .over{ color:#c00; text-decoration:blink; } #preferences{ margin-top:.5em; background:#ccc; border-top:1px solid #999; padding:2em; font-size:1em; text-align:left; } #preferences p { width:49%; float:left; padding:5px 0; margin:0; position: absolute; top: 0px; } #preferences input{ font-size:20px; padding:5px; border:1px solid #999; background:#fff; margin:0 2px; } #preferences label{ padding-top:10px; width:30%; float:left; display:block; padding-right:1em; } #preferences input#set{ font-size:20px; padding:5px; width:600px; margin:0 auto; border:none; background:#69c; clear:both; display:block; } #preferences input#set:hover{ background:#ffc; } </style>
Step 2: Copy & Paste JavaScript code below in your HEAD section
JavaScript
Code:
<script> countdown = function(){ /* configuration of script, properties with values and labels will become form elements! */ var cfg = { displayID:'display', preferencesID:'preferences', finalClass:'final', overClass:'over', initialText:{ value:'2:00', label:'Initial Text' }, seconds:{ value:2*60, label:'Time in Seconds' }, finalCountdown:{ value:30, label:'Warning start' }, pauseLabel:{ value:'pause', label:'Pause Text' }, resumeLabel:{ value:'resume', label:'Resume Text' }, resetLabel:{ value:'reset', label:'Reset Text' }, startLabel:{ value:'start', label:'Start Text' } }; /* presets */ var seconds = cfg.seconds.value; var interval = null; var secs = null; var startTime = null; var realsecs = null; /* create display */ var display = document.createElement('div'); display.id = cfg.displayID; document.body.appendChild(display); display.innerHTML = cfg.initialText.value; /* create form with buttons */ var form = document.createElement('form'); document.body.appendChild(form); var startButton = createInput('button','startButton',cfg.startLabel.value); startButton.onclick = startCountDown; form.appendChild(startButton); var pauseButton = createInput('button','pauseButton',cfg.pauseLabel.value); pauseButton.onclick = pauseCountDown; pauseButton.disabled = true; form.appendChild(pauseButton); var resetButton = createInput('button','resetButton',cfg.resetLabel.value); resetButton.onclick = resetCountDown; form.appendChild(resetButton); /* create preferences panel */ var preferencesPanel = document.createElement('div'); preferencesPanel.id = cfg.preferencesID; preferencesPanel.style.display = 'none'; var firstForm = document.getElementsByTagName('form')[0]; firstForm.appendChild(preferencesPanel); var button = createInput('button',null,'preferences'); button.onclick = togglePreferences; preferencesPanel.parentNode.insertBefore(button,preferencesPanel); /* create preferences form */ var prefs = []; for (var i in cfg){ if(cfg[i].value){ prefs.push(i); var p = document.createElement('p'); p.appendChild(createLabel(cfg[i].label,i)); p.appendChild(createInput('text',i,cfg[i].value)); preferencesPanel.appendChild(p); } } var setPreferencesButton = createInput('button','set','set'); preferencesPanel.appendChild(setPreferencesButton); setPreferencesButton.onclick = setPreferences; function setPreferences(){ for(var i=0,j=prefs.length;i<j;i++){ cfg[prefs[i]].value = document.getElementById(prefs[i]).value; } resetCountDown(); preferencesPanel.style.display = 'none'; } function togglePreferences(){ preferencesPanel.style.display = preferencesPanel.style.display === 'none' ? 'block' : 'none'; } function startCountDown(){ pauseButton.disabled = false; startButton.disabled = true; startTime = new Date(); interval = setInterval(countdown.doCountDown, 100); } function doCountDown(){ realsecs = Math.ceil(seconds - (new Date() - startTime) / 1000); var mins = parseInt(realsecs / 60); var secs = realsecs % 60; display.innerHTML = parseInt(mins) + ':'+ (secs < 10 ? '0' : '') +(secs % 60); display.className = (realsecs > cfg.finalCountdown.value) ? '' : cfg.finalClass; if(realsecs===0){ display.className = cfg.overClass; window.clearTimeout(interval); } } function resetCountDown(){ window.clearTimeout(interval); startButton.disabled = false; pauseButton.disabled = true; display.innerHTML = cfg.initialText.value; interval = null; seconds = cfg.seconds.value; pauseButton.value = cfg.pauseLabel.value; resetButton.value = cfg.resetLabel.value; startButton.value = cfg.startLabel.value; display.className = ''; } function pauseCountDown(){ if(pauseButton.value === cfg.pauseLabel.value){ seconds = realsecs; window.clearTimeout(interval); pauseButton.value = cfg.resumeLabel.value; } else { startCountDown(); pauseButton.value = cfg.pauseLabel.value; } } function createInput(type,id,value){ var input = document.createElement('input'); input.value = value; input.type = type; if(id){ input.id = id; } return input; } function createLabel(text,id){ var label = document.createElement('label'); label.appendChild(document.createTextNode(cfg[id].label)); label.htmlFor = id; return label; } return {doCountDown:doCountDown}; }(); </script>





Reply With Quote
 #Add to Ads's Reputation  
OldSponsored Ads
Ads AdsPromoter is online
Member
 
Join Date: LongTime
Posts: 1100
Ads is on a distinguished road
Default New Sponsored Ads



This message will go away once you are registered. Also, by registering, you will have access to all post topics, communicate privately with other members (PM), respond to polls, upload graphics, and access other special features! Registration is fast, simple and absolutely free so please Click Here to join our Web Hosting community today!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT. The time now is 05:23 PM.


Powered by vBulletin Version 3.6.1
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
SEO by vBSEO 2.4.0