var outputArea,
	eventEndMsg,
	eventCountDownMsg;
function StartTimeoutMonitoring(msgOutputArea, eventEnd, eventCountDown)
{
	outputArea = msgOutputArea;
	eventEndMsg = eventEnd;
	eventCountDownMsg = eventCountDown;
	timeOut();
}

function timeOut()
{
	var dtNow = new Date(),
	pstDateTime = new Date(),
	localTimeZoneOffsetToUtcInHours = -dtNow.getTimezoneOffset() / 60,
	pstTimeZoneOffset = -8,
	totalOffset = localTimeZoneOffsetToUtcInHours - pstTimeZoneOffset,
	endDate;

	pstDateTime.setHours(dtNow.getHours() - totalOffset);
	endDate = ComputeSaleEndDate(pstDateTime);
	// message = dtNow + "<br />PST is now " + pstDateTime;
	var displayCountdown = SetupCountdownDisplay(endDate, pstDateTime),
		message;
	if ((endDate - pstDateTime) < 1000)
	{
		message = eventEndMsg;
	}
	else
	{
		message = eventCountDownMsg + displayCountdown;
	}
	document.getElementById(outputArea).innerHTML = message;

	setTimeout("timeOut()", 1000);
}

function ComputeSaleEndDate(pstDateTime)
{
	var day = pstDateTime.getDay();
	// reset sunday, monday, wednesday, friday midnight pst (23:59:59) that would be monday, tuesday, thursday, saturday morning
	// sunday to end of day (sunday 23:59:59 reset)
	// monday to end of day (monday 23:59:59 reset)
	// tuesday to wednesday end of day (wednesday 23:59:59 reset) 
	// wednesday to end of day (wednesday 23:59:59 reset)
	// thursday to friday end of day (friday 23:59:59 reset)
	// friday to end of day (friday 23:59:59 reset)
	// saturday to sunday end of day (sunday 23:59:59 reset)
	var endDate = new Date(pstDateTime);
	if (day == 0 || day == 1 || day == 3 || day == 5)
	{
		endDate.setDate(endDate.getDate() + 1);
	}
	else
	{
		endDate.setDate(endDate.getDate() + 2);
	}
	endDate.setHours(0, 0, 0, 0);
	return endDate;
}

function SetupCountdownDisplay(endDate, pstDateTime)
{
	var difference = endDate - pstDateTime,
	daysDiff = (difference > (1000 * 60 * 60 * 24) ? 1 : 0),
	hoursDiff,
	minDiff,
	secDiff;

	if (daysDiff == 1)
	{
		difference -= (1000 * 60 * 60 * 24);
	}
	hoursDiff = difference / (1000 * 60 * 60);
	var strTrimmedHoursDiff = new String(hoursDiff),
	trimmedHoursDiff,
	strTrimmedMinDiff,
	trimmedMinDiff,
	strTrimmedSecDiff;

	strTrimmedHoursDiff = strTrimmedHoursDiff.substr(0, strTrimmedHoursDiff.indexOf('.'));
	trimmedHoursDiff = new Number(strTrimmedHoursDiff);
	difference -= trimmedHoursDiff * (1000 * 60 * 60);
	minDiff = difference / (1000 * 60);
	strTrimmedMinDiff = new String(minDiff);
	strTrimmedMinDiff = strTrimmedMinDiff.substr(0, strTrimmedMinDiff.indexOf('.'));
	trimmedMinDiff = new Number(strTrimmedMinDiff);
	difference -= trimmedMinDiff * (1000 * 60);
	secDiff = difference / 1000;
	strTrimmedSecDiff = new String(secDiff);
	strTrimmedSecDiff = strTrimmedSecDiff.substr(0, strTrimmedSecDiff.indexOf('.'));
	//message = message + "<br />End Date is " + endDate;
	// message = message + "<br />Sales ends in " + daysDiff + ":" + trimmedHoursDiff + ":" + trimmedMinDiff + ":" + strTrimmedSecDiff;

	// fix for the missing 0 in countdown.

	var hours = parseInt(trimmedHoursDiff);
	var minutes = parseInt(trimmedMinDiff);
	var seconds = parseInt(strTrimmedSecDiff);

	if (hours < 10) {
	    trimmedHoursDiff = "0" + hours.toString();
	}
	if (minutes < 10) {
	    trimmedMinDiff = "0" + minutes.toString();
	}
	if (seconds < 10) {
	    strTrimmedSecDiff = "0" + seconds.toString();
	}
	//

	return daysDiff + ":" + trimmedHoursDiff + ":" + trimmedMinDiff + ":" + strTrimmedSecDiff;
}

