//general functions
var CalMonth = new Date().getMonth();
var CalYear = new Date().getFullYear();
var currentUrl = window.location.href;

var curColor = 1;
var colorDir = 1;

if (currentUrl.indexOf("?") >= 0) {
	var strParms = currentUrl.substring(currentUrl.indexOf("?") + 1);
	var strBegin = strParms.indexOf("date=");
	var strEnd = strParms.indexOf("&", strBegin);
	if (strEnd == -1) strEnd = strParms.length;
    var cldt = strParms.substring(strBegin+5, strEnd);

    if (cldt.length > 0) {
        CalYear  = parseInt(cldt.substring(0, 4));
        CalMonth = parseInt(cldt.substring(5, cldt.indexOf('-',5))) - 1;
    }
}

var days = new Array('Sun.','Mon.','Tues.','Wed.','Thurs.','Fri.','Sat.');
var months = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
function mapDay(indx){ return days[indx]; }
function mapMonth(indx){ return months[indx]; }

//takes in a month and year
function getFirstDayOfMonth(mnth, year){
    var tmpDate = new Date(year, mnth, 1);
    return tmpDate.getDay( );
}

//takes an integer 0 - 6 and returns the name of the day
function mapWeekDay(day){
    rA = new Array( );
    rA[0] = "Sun.";
    rA[1] = "Mon.";
    rA[2] = "Tues.";
    rA[3] = "Wed.";
    rA[4] = "Thurs.";
    rA[5] = "Fri.";
    rA[6] = "Sat.";

    return rA[day];
}

//pass in 1 - 12, or jan, feb, ...., dec, or january, february, ...., December
function getMonthDays(mnth, year){
    var rA = new Array( );
    var tmnth = mnth + "";

    if(tmnth.match(/^(\d)/)){
        mnth = parseInt(mnth);
        rA[0] = 31;
        if(year % 4 == 0)
            rA[1] = 29;
        else
            rA[1] = 28;
        rA[2] = 31;
        rA[3] = 30;
        rA[4] = 31;
        rA[5] = 30;
        rA[6] = 31;
        rA[7] = 31;
        rA[8] = 30;
        rA[9] = 31;
        rA[10] = 30;
        rA[11] = 31;
    }
    else{
        mnth = mnth.toLowerCase( );
        mnth = mnth.substr(0, 3);
        rA["jan"] = 31;
        if(year % 4 == 0)
            rA["feb"] = 29;
        else
            rA["feb"] = 28;
        rA["mar"] = 31;
        rA["apr"] = 30;
        rA["may"] = 31;
        rA["jun"] = 30;
        rA["jul"] = 31;
        rA["aug"] = 31;
        rA["sep"] = 30;
        rA["oct"] = 31;
        rA["nov"] = 30;
        rA["dec"] = 31;
    }

    return rA[mnth];
}

//end general functions

//clock functions
function initClock( ){
    if(document.getElementById('mm_counter')){
        updateMMCounter( );
    }
    if(document.getElementById("clock")){
        updateClock( );
    }
}
function updateClock( ){
    var dtStr = "";
    var clockObj = document.getElementById("clock");
    var monthObj = document.getElementById("month");
    var wdayObj = document.getElementById("wday");
    var ndayObj = document.getElementById("nday");
    var yearObj = document.getElementById("year");
    var hoursObj = document.getElementById("hours");
    var minutesObj = document.getElementById("minutes");
    var secondsObj = document.getElementById("seconds");
    var ampmObj = document.getElementById("ampm");

    var dt = new Date();

    var month = mapMonth(dt.getMonth( ));
    var nday = dt.getDate( );
    var wday = mapDay(dt.getDay( ));
    var year = dt.getFullYear( );
    var hours = dt.getHours( );
    var minutes = dt.getMinutes( );
    var seconds = dt.getSeconds( );
    var ampm = "AM";
    if(hours >= 12){ ampm = "PM"; }
    if(hours > 12){ hours -= 12; }

    if(nday < 10){ nday = "0" + nday };
    if(hours < 10){ hours = "0" + hours };
    if(minutes < 10){ minutes = "0" + minutes };
    if(seconds < 10){ seconds = "0" + seconds };

    if(monthObj.innerHTML != month){ monthObj.innerHTML = month; }
    if(wdayObj.innerHTML != wday){ wdayObj.innerHTML = wday; }
    if(ndayObj.innerHTML != nday){ ndayObj.innerHTML = nday; }
    if(yearObj.innerHTML != year + ":"){ yearObj.innerHTML = year + ":"; }
    if(hoursObj.innerHTML != hours + ":"){ hoursObj.innerHTML = hours + ":"; }
    if(minutesObj.innerHTML != minutes + ":"){ minutesObj.innerHTML = minutes + ":"; }
    if(secondsObj.innerHTML != seconds){ secondsObj.innerHTML = seconds; }
    if(ampmObj.innerHTML != ampm){ ampmObj.innerHTML = ampm; }

    //change the color of the clock:)
    var cStr = 'rgb(' + parseInt(curColor) + ',0,' + parseInt(255 - curColor) + ')';
    clockObj.style.color = cStr;
    if(curColor == 0 || curColor == 255){
        colorDir = colorDir * -1;
    }

    curColor += colorDir;

    setTimeout('updateClock( );', 50);
}

function updateMMCounter( ){
    var dtStr = "";
    var clockObj = document.getElementById("mm_counter");
    var daysObj = document.getElementById("mm_days");
    var hoursObj = document.getElementById("mm_hours");
    var minutesObj = document.getElementById("mm_minutes");
    var secondsObj = document.getElementById("mm_seconds");

    var dt = new Date();

    var seconds = parseInt(secondsObj.innerHTML.replace(/^0/, '')) - 1;
    var minutes = parseInt(minutesObj.innerHTML.replace(/^0/, ''));
    var hours = parseInt(hoursObj.innerHTML.replace(/^0/, ''));

    var days = parseInt(daysObj.innerHTML);
    if(daysObj.innerHTML > 0){
        days = parseInt(daysObj.innerHTML.replace(/^0/, ''));
    }

    if(seconds == 0 && minutes == 0 && hours == 0 && days == 0){
        return;
    }


    if(seconds < 0){
        seconds = 59;
        if(minutes == 0){
            minutes = 59;
            if(hours == 0){
                hours = 23;
                days = days - 1;

            }
        }
        else{
            minutes = minutes - 1;
        }
    }

    if(hours < 10){ hours = "0" + hours };
    if(minutes < 10){ minutes = "0" + minutes };
    if(seconds < 10){ seconds = "0" + seconds };

    if(daysObj.innerHTML != days){ daysObj.innerHTML = days; }
    if(hoursObj.innerHTML != hours){ hoursObj.innerHTML = hours; }
    if(minutesObj.innerHTML != minutes){ minutesObj.innerHTML = minutes; }
    if(secondsObj.innerHTML != seconds){ secondsObj.innerHTML = seconds; }

    //there may be a little time drift here, but that's ok, it won't be much.
    setTimeout('updateMMCounter( );', 1000);
}

//end clock functions

//calendar functions

function initCalendar( ){
    if(CalMonth == "" || CalYear == ""){
        var dt = new Date( );
        CalMonth = dt.getMonth( );
        CalYear = dt.getFullYear( );
    }

}

function getPrevMonth( ){
    //initCalendar( );
    if(CalMonth == 0){
        CalMonth = 11;
        CalYear--;
    }
    else{
        CalMonth--;
    }

    updateCalendar(CalMonth, CalYear);
    return false;
}

function getNextMonth( ){
    //initCalendar( );
    if(CalMonth == 11){
        CalMonth = 0;
        CalYear++;
    }
    else{
        CalMonth++;
    }

    updateCalendar(CalMonth, CalYear);
    return false;
}

//mnth must be between 1 and 12
function updateCalendar(mnth, year){
    mnthName = mapMonth(mnth);
    dayInt = getFirstDayOfMonth(mnth, year);
    numDays = getMonthDays(mnth, year);
    var cal = document.getElementById('cal');
    var now = new Date();
    var alink;

    if(!cal.innerHTML){
        //not supported
        return;
    }

    var tdS = cal.getElementsByTagName("td");
    var alnk = '<a href="/content/p/59/?date=';
    var i = 0;
    var j = 0;
    var dcnt = 1;
    var tdInd = 9;

    for (i = 0; i < 9; i++) {
        if (tdS[i].className == "calHead") {
            tdS[i].innerHTML = alnk+year+'-'+(mnth+1)+'-">'+mnthName+'<br />'+year+'</a>';
            break;
        }
    }

    for(i = 0; i < 6; i++){
        for(j = 0; j < 7; j++){
            tdInd++;//preincrement this thing so we are always working on the right td
            tdS[tdInd].className = "calDOM";
            if((i == 0 && j < dayInt) || (dcnt > numDays)){
                tdS[tdInd].className = "calBlank";
                tdS[tdInd].innerHTML = "&nbsp;";
                continue;
            }
            else{
                if (now.getFullYear() == year && now.getMonth() == mnth && now.getDate() == dcnt)
                    tdS[tdInd].className = "calToday";
                else if (now.getFullYear() == year && now.getMonth() == mnth && now.getDate() > dcnt)
                    tdS[tdInd].className = "calPast";
                tdS[tdInd].innerHTML = alnk+year+'-'+(mnth+1)+'-'+dcnt+'">'+dcnt+'</a>';
                dcnt++;
            }
        }
    }
}
//end calendar functions
