function padZero (iNum)
{
	if (iNum < 10)
		return "0" + iNum;
	
	return iNum;
}

function addDays(sDate, iDays)
{
var mDate = sDate.split('-'); // sDate = YYYY-MM-DD
var curDate = new Date (mDate[0], parseInt(mDate[1], 10) - 1, mDate[2]);

	iDate = Date.parse(curDate);
	iDate += (iDays * 24 * 60 * 60 * 1000);

	curDate = new Date (iDate);	
	sDate = curDate.getFullYear() + "-" + padZero(curDate.getMonth() + 1) + "-" + padZero(curDate.getDate());
	
	return sDate;
}

function validTime (sTime, bPrompt)
{
var iHours, iMinutes, iPos;
var bPM, bAM;

	sTime = sTime.toLowerCase();
	if (sTime.indexOf("pm") != -1)
		bPM = true;
	if (sTime.indexOf("am") != -1)
		bAM = true;
	sTime = sTime.replace(/am/g, "");
	sTime = sTime.replace(/pm/g, "");
	sTime = sTime.replace(/ /g, "");
	sTime = sTime.replace(/\./g, ":");

	if (sTime.length < 1 || sTime.length > 5)
	{
		if (bPrompt)
			displayWarning("A valid time must be entered", bPrompt);
		return false;
	}

	iPos = sTime.indexOf(":");
//	if (iPos == -1 && sTime.length > 2)
//		sTime = sTime.substr(0, sTime.length - 2) + ":" + sTime.substr(sTime.length - 2);
	if (iPos == -1 && sTime > 24)
		sTime = "0:" + sTime;
	else if (iPos == -1)
		sTime += ":00";
	iPos = sTime.indexOf(":");

	iHours = parseInt(sTime.substr(0, iPos), 10);
	if (bPM && iHours < 12)
		iHours += 12;
	if (bAM && iHours == 12)
		iHours = 0;
	iMinutes = parseInt(sTime.substr(iPos + 1), 10);
	if (isNaN(iMinutes))
		iMinutes = 0;
	if (iHours < 0 || iHours > 24 || iMinutes < 0 || 
	   (iHours > 0 && iMinutes > 59) || 
	   (iHours == 24 && iMinutes > 0))
	{
		displayWarning("A valid time must be entered", bPrompt);
		return false;
	}

	return true;
}

function timeInMinutes(sTime, bEndTime)
{
var iHours, iMinutes, iPos;
var bPM, bAM;

	if (!validTime(sTime, false))
		return -1;

	sTime = sTime.toLowerCase();
	if (sTime.indexOf("p") != -1)
		bPM = true;
	if (sTime.indexOf("a") != -1)
		bAM = true;
	sTime = sTime.replace(/am/g, "");
	sTime = sTime.replace(/pm/g, "");
	sTime = sTime.replace(/ /g, "");
	sTime = sTime.replace(/\./g, ":");

	iPos = sTime.indexOf(":");
//	if (iPos == -1 && sTime.length > 2)
//		sTime = sTime.substr(0, sTime.length - 2) + ":" + sTime.substr(sTime.length - 2);
	if (iPos == -1 && sTime > 24)
		sTime = "0:" + sTime;
	else if (iPos == -1)
		sTime += ":00";

	iPos = sTime.indexOf(":");
	iHours = parseInt(sTime.substr(0, iPos), 10);
	if (bPM && iHours < 12)
		iHours += 12;
	if (bAM && iHours == 12)
		iHours = 0;
	iMinutes = parseInt(sTime.substr(iPos + 1), 10);
	if (isNaN(iMinutes))
		iMinutes = 0;
		
	if (iHours == 0 && iMinutes == 0 && bEndTime)
		iHours = 24;

	return ((iHours * 60) + iMinutes);
}

function validDuration (sTime, bPrompt)
{
	if (sTime.indexOf("h") == -1 && sTime.indexOf("m") == -1)
		return validTime(sTime, bPrompt);

	sTime = sTime.replace(/hrs/, ":");
	sTime = sTime.replace(/hr/, ":");
	sTime = sTime.replace(/h/, ":");

	if (sTime.indexOf(":") == -1)
	{
		if (parseInt(sTime, 10) > 12)
			sTime = "0:" + sTime;
	}
	sTime = sTime.replace(/mins/, "");
	sTime = sTime.replace(/min/, "");
	sTime = sTime.replace(/m/, "");

	return validTime(sTime, bPrompt);
}

function durationInMinutes(sTime)
{
	if (sTime.indexOf("h") == -1 && sTime.indexOf("m") == -1)
		return timeInMinutes(sTime);

	sTime = sTime.replace(/hrs/, ":");
	sTime = sTime.replace(/hr/, ":");
	sTime = sTime.replace(/h/, ":");

	if (sTime.indexOf(":") == -1)
	{
		if (parseInt(sTime, 10) > 12)
			sTime = "0:" + sTime;
	}
	sTime = sTime.replace(/mins/, "");
	sTime = sTime.replace(/min/, "");
	sTime = sTime.replace(/m/, "");

	return timeInMinutes(sTime);
}

function formatTime(iTime)
{
var iHours, iMinutes;
var sTime;

	if (iTime < 0 || iTime > 1440)
		return "";

	iHours = parseInt((iTime / 60), 10);
	iMinutes = ((iTime % 60) > 9 ? "" : "0") + Math.round(iTime % 60);
	if (b24Hr)
		return iHours + ":" + iMinutes;
	
	if (iHours > 12)
		iHours -= 12;
	sTime = iHours;
	if (iMinutes > 0)
		sTime += ":" + iMinutes;
	if (iTime >= 720 && iTime < 1440)
		sTime += " pm";
	else
		sTime += " am";

	return sTime;
}

function formatDuration(iTime)
{
var iHours, iMinutes;
var sTime;

	if (iTime < 1 || iTime > 1440)
		return "";

	iHours = parseInt((iTime / 60), 10);
	iMinutes = ((iTime % 60) > 9 ? "" : "0") + Math.round(iTime % 60);

	if (iHours == 0)
		return iMinutes + " mins";

	sTime = iHours + " hr";
	if (iHours > 1)
		sTime += "s"
	if (iMinutes > 0)
		sTime += " " + iMinutes;

	return sTime;
}

