var CountDowns = new Array();

function GenerateCountdown(SpanID, SecLeft, StringCount, FormatNum, FormatWeek, FormatWeeks, FormatDay, FormatDays, FormatHour, FormatHours, FormatMinute, FormatMinutes, StringRelease)
{
    newObject = new Object();
    
    newObject.SpanID = SpanID;
    newObject.TimeLeft = SecLeft;
    
    newObject.StringCount = StringCount;
    newObject.StringRelease = StringRelease;
    
    var Last = FormatNum.lastIndexOf('0');
    newObject.FormatNum = FormatNum.substring(0, Last) + '%%STRINGHERE%%' + FormatNum.substring(Last+1);
    
    newObject.FormatWeek = FormatWeek;
    newObject.FormatWeeks = FormatWeeks;
    newObject.FormatDay = FormatDay;
    newObject.FormatDays = FormatDays;
    newObject.FormatHour = FormatHour;
    newObject.FormatHours = FormatHours;
    newObject.FormatMinute = FormatMinute;
    newObject.FormatMinutes = FormatMinutes;
    
    CountDowns.push(newObject);
    
    UpdateCountdown(newObject);
}

function GenerateDay(Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday)
{
    Today = new Date();
    Today = new Date(Today - 4 * 60 * 1000);
    
    switch (Today.getDay())
    {
        case 0:
            document.write(Sunday);
            break;
        case 1:
            document.write(Monday);
            break;
        case 2:
            document.write(Tuesday);
            break;
        case 3:
            document.write(Wednesday);
            break;
        case 4:
            document.write(Thursday);
            break;
        case 5:
            document.write(Friday);
            break;
        case 6:
            document.write(Saturday);
            break;
        default:
            document.write("###unknown day###");
    }
}

function MaintainCountdowns()
{
    for (var I = 0; I < CountDowns.length; I++)
    {
        curObject           =   CountDowns[I];
        curObject.TimeLeft  -=  1;
        UpdateCountdown(curObject);
    }
}

function UpdateCountdown(curObject)
{   
    curElement  = document.getElementById(curObject.SpanID);
	if (curElement == null)
	{
		return;
	}
    
    var TimeLeft = curObject.TimeLeft;
    var MinutesLeft = Math.floor(TimeLeft / 60);
    var HoursLeft = 0;
    var DaysLeft = 0;
    var WeeksLeft = 0;
    var Written = false;
    
    if (TimeLeft < 0)
    {
        curElement.innerHTML = newObject.StringRelease;
        return;
    }
    
    if (MinutesLeft == 0)
        MinutesLeft = 1;
    
    if (MinutesLeft > 120)
    {
        HoursLeft   = Math.floor(MinutesLeft / 60);
        MinutesLeft = MinutesLeft - (HoursLeft * 60);
    }
    if (HoursLeft > 48)
    {
        MinutesLeft = 0;
        DaysLeft    = Math.floor(HoursLeft / 24);
        HoursLeft   = HoursLeft - (DaysLeft * 24);
    }
    if (DaysLeft > 14)
    {
        HoursLeft  = 0;
        WeeksLeft  = Math.floor(DaysLeft / 7);
        DaysLeft   = DaysLeft - (WeeksLeft * 7);
    }
    
    var NewString = '';
    
    if (WeeksLeft > 0)
    {
        NewString += curObject.FormatNum.replace('%%STRINGHERE%%', WeeksLeft) + curObject.FormatWeeks;
        Written = true;
    }
    if (DaysLeft > 1)
    {
        if (Written)
            NewString += ', ';
        NewString += curObject.FormatNum.replace('%%STRINGHERE%%', DaysLeft) + curObject.FormatDays;
        Written = true;
    }
    else if (DaysLeft == 1)
    {
        if (Written)
            NewString += ', ';
        NewString += curObject.FormatNum.replace('%%STRINGHERE%%', DaysLeft) + curObject.FormatDay;
        Written = true;
    }
    if (HoursLeft > 1)
    {
        if (Written)
            NewString += ', ';
        NewString += curObject.FormatNum.replace('%%STRINGHERE%%', HoursLeft) + curObject.FormatHours;
        Written = true;
    }
    else if (HoursLeft == 1)
    {
        if (Written)
            NewString += ', ';
        NewString += curObject.FormatNum.replace('%%STRINGHERE%%', HoursLeft) + curObject.FormatHour;
        Written = true;
    }
    if (MinutesLeft > 1)
    {
        if (Written)
            NewString += ', ';
        NewString += curObject.FormatNum.replace('%%STRINGHERE%%', MinutesLeft) + curObject.FormatMinutes;
        Written = true;
    }
    else if (MinutesLeft == 1)
    {
        if (Written)
            NewString += ', ';
        NewString += curObject.FormatNum.replace('%%STRINGHERE%%', MinutesLeft) + curObject.FormatMinute;
        Written = true;
    }
    
    curElement.innerHTML = curObject.StringCount.replace('%time%', NewString);
}

window.setInterval("MaintainCountdowns()", 1000);
