// dependencies:
//     date.js:  http://code.google.com/p/datejs/

function formatNiceDate(pDate, pIncludeTime, pFormat) {
    if (!pFormat) pFormat = "dddd, M/d";
    var formattedNiceDate = pDate.toString(pFormat);
    if (isToday(pDate)) {
        formattedNiceDate = "Today";
    } else if (isTomorrow(pDate)) {
        formattedNiceDate = "Tomorrow";
    } else if (isYesterday(pDate)) {
        formattedNiceDate = "Yesterday";
    }
    
    if (pIncludeTime) {
        formattedNiceDate += " - " + pDate.toString("h:mm tt");
    }
    
    return formattedNiceDate;
}


function formatDateRange(pStartDate, pEndDate, pFormat) {
    if (!pFormat) pFormat = "MMMM d";
    if (!pEndDate) pEndDate = pStartDate;
    var dateString = "";
    if (pStartDate) {
        if (pStartDate.toString("yyyyMMdd") == pEndDate.toString("yyyyMMdd")) {
            dateString = pStartDate.toString(pFormat);
        } else {
            dateString = pStartDate.toString(pFormat);
            dateString += "&ndash;";
            if (pEndDate.toString("MMMM") == pStartDate.toString("MMMM")) {
                // the extra space here isn't a mistake.  otherwise the d 
                // isn't interpreted the way we want.
                dateString += pEndDate.toString("d ");
            } else {
                dateString += pEndDate.toString(pFormat);
            }
        }
    } else {
        dateString = "TBD";
    }
    return dateString;
}

function isToday(pDate) {
    return isSameDate(pDate, new Date());
}


function isTomorrow(pDate) {
    var oneDayFromRightNow = Date.today().setTimeToNow().addDays(1);
    return isSameDate(pDate, oneDayFromRightNow);
}

function isYesterday(pDate) {
    var oneDayAgoFromRightNow = Date.today().setTimeToNow().addDays(-1);
    return isSameDate(pDate, oneDayAgoFromRightNow);
}





function isSameDate(pDate1, pDate2) {
    var sameDate = false;
    try {
        sameDate = (pDate1.getYear() == pDate2.getYear() && 
                    pDate1.getMonth() == pDate2.getMonth() && 
                    pDate1.getDate() == pDate2.getDate());
    } catch (Exception) {
        // do nothing
    }
    return sameDate;
}




function fallsInYear(pDate, pYear) {
    var date = Date.parse(pDate);
    return (date.getFullYear() == pYear);
}


