HM = {}

// Time Object.
// Constructor:
//	converts minutes over 60 to hours and rest minutes;
// 	converts fractions of hours to minutes.
HM.TimeObj = function(h, m, s)
{
	this.h = h > 0 ? h : 0;
	this.m = m > 0 ? m : 0;
	this.s = s > 0 ? s : 0;

	// add seconds over 60 to minutes
	if ( this.s > 59 )
	{
		this.m += Math.floor(this.s / 60);
		this.s = this.s % 60;
	}	
		
	// add minutes over 60 to hours
	if ( this.m > 59 )
	{
		this.h += Math.floor(this.m / 60);
		this.m = this.m % 60;
	}
	
	this.getHours = function()
	{
		return this.h;
	}
	
	this.getMinutes = function()
	{
		return this.m;
	}
	
	this.getSeconds = function()
	{
		return this.s;
	}
	
	this.getFormattedTime = function(format)
	{
		// format as strings.
		// mins, secs: add heading 0 if under 10
		var hStr = this.h.toString();
		var mStr = this.m < 10 ? '0' + this.m.toString() : this.m.toString();
		var sStr = this.s < 10 ? '0' + this.s.toString() : this.s.toString();

		if( format == 'table' )
		// return as html table row (without <tr></tr>)
		
		{
			var ret = "<td>" + hStr + ":</td>\n";
			ret += "\t<td>"+ mStr +":</td>\n";
			ret += "\t<td>"+ sStr +"</td>\n";
		}
		else
		// return as string
		{
			var ret = hStr + ':' + mStr + ':' + sStr;
		}
		return ret;
	}
}

/* Our Member Variables */
HM.totalTime = new HM.TimeObj(0, 0);
HM.times = [];
/* ******************** */


HM.calculate = function() {
	var hours = document.getElementById("dt_hours_h").value;
	if ( isNaN(hours) )
	{
		 alert("Please enter hours as a number.");
		 return;
	}

	var minutes = document.getElementById("dt_hours_m").value;
	if ( isNaN(minutes) )
	{
		 alert("Please enter minutes as a number");
		 return;
	}

	var seconds = document.getElementById("dt_hours_s").value;
	if ( isNaN(seconds) )
	{
		 alert("Please enter seconds as a number");
		 return;
	}
	
	if ( (hours.length == 0) && (minutes.length == 0) && (seconds.length == 0) )
	{
		 alert("Please enter some hours, minutes, or seconds to add up.");
		 return;
	}

	hours = parseInt(hours);
	minutes = parseInt(minutes);
	seconds = parseInt(seconds);
	
	if ( hours < 0 )
	{
		alert("Please enter hours as a positive number (more than 0)");
		return;
	}	
	if ( minutes < 0 )
	{
		alert("Please enter minutes as a positive number (more than 0)");
		return;
	}
	if ( seconds < 0 )
	{
		alert("Please enter seconds as a positive number (more than 0)");
		return;
	}
	
	// reset input form
	document.getElementById("dt_hours_h").value = '';
	document.getElementById("dt_hours_m").value = '';
	document.getElementById("dt_hours_s").value = '';
	
	// create new time object
	HM.time = new HM.TimeObj(hours, minutes, seconds);
	
 	// add to total
	HM.totalTime = new HM.TimeObj(
		HM.totalTime.getHours() + HM.time.getHours(),
		HM.totalTime.getMinutes() + HM.time.getMinutes(),
		HM.totalTime.getSeconds() + HM.time.getSeconds()
	);
	
	HM.times.push(HM.time);

	var x = document.getElementById("hours_dt_results");
	var results = "<table><tr><th class='right'>h</th><th class='right'>m</th><th class='right'>s</th></tr>";

	for(var i = 0; i < HM.times.length; i++)
	{
		results += '<tr>' + HM.times[i].getFormattedTime('table') + "</tr>\n";
	}
	
	results += "<th>Total Time</th>"
	results += '<tr class="total">' + HM.totalTime.getFormattedTime('table') + "</tr></table>\n";

	x.innerHTML = results;
	x.style.display = "block";
}
// modified css: http://www.dollartimes.com/calculators/on-your-site/calc-css.php
addJavascript = function(fileName) {
	var th = document.getElementsByTagName('head')[0];
	var s = document.createElement('script');
	s.setAttribute('type','text/javascript');
	s.setAttribute('src',fileName);
	th.appendChild(s);
}
addStylesheet = function(fileName) {
	var th = document.getElementsByTagName('head')[0];
	var s = document.createElement('link');
	s.setAttribute('type','text/css');
	s.setAttribute('title', 'dt-calc-style');
	s.setAttribute('rel','stylesheet');
	s.setAttribute('href',fileName);
	th.appendChild(s);
}


addJavascript('http://www.dollartimes.com/script/calcutil.js');
addStylesheet('http://www.dollartimes.com/calculators/on-your-site/calc-css.php');

var out = '\
<div id="hours_dt_calculator" class="dt_calculator">\n\
	<h2>Add up Hours and Minutes</h2>\n\
	<p class="small">Provided by DollarTimes.com</p>\n\
	\n\
	  <table><tr><th>Hours</th><th></th><th>Minutes</th><th></th><th>Seconds</th></tr>\n\
    <tr>\n\
		<td><input type="text" id="dt_hours_h" /></td>\n\
      <th>:</th>\n\
      <td><input type="text" id="dt_hours_m" /></td>\n\
      <th>:</th>\n\
      <td><input type="text" id="dt_hours_s" /></td>\n\
      <td><button onclick="HM.calculate()">Add</button></div></td>\n\
    </tr></table>\n\
	<div id="hours_dt_results" class="dt_results">&nbsp;</div>\n\
</div>\n\
';



var calcUrl = "http://www.dollartimes.com/calculators/on-your-site/hours-minutes-calculator.js";

var scriptEls = document.getElementsByTagName('script');
var scriptEl=false;


for(i=0; i<scriptEls.length; i++)
{
	var t = scriptEls[i];
	var src = (t.getAttribute('src'));
	if(src == calcUrl) 
	{
		scriptEl = t;
		break;
	}
}
if(!scriptEl)
{
	document.write('\n<p>Failed loading calculator. The code might have been updated. Please get the correct code at <a href="http://www.dollartimes.com/calculators/on-your-site/'+calcUrl+'">http://dollartimes.com/calculators/on-your-site/'+calcUrl+'</a></p>');
}
else
{
	var par = scriptEl.parentNode;  
	var link = par.getElementsByTagName('a')[0];
	var el = document.createElement('div');
	el.innerHTML = out;
	par.appendChild(el);

	if (link.toString().match("/calculators/")) {

		link.style.fontSize="80%";
		var calcDiv = document.getElementById('hours_dt_calculator');
		if(calcDiv)	{
			// Put link on bottom of calculator box
			par.removeChild(link)			
			calcDiv.appendChild(link);	
		}
	}
}

