﻿function ui(){ }

ui.date = function() { }

ui.date.getWeekNumber = function()
{
    var currentDate = new Date();
    var result;

    var firstDayOfTheYear = new Date(currentDate.getFullYear(), 0, 1);
    result = Math.ceil((((currentDate - firstDayOfTheYear) / 86400000) + firstDayOfTheYear.getDay() + 1) / 7);

    return result;
}

ui.date.getShortMonthName = function(monthValue)
{
    var result = "";
    
    switch (monthValue)
    {
        case 1:
            result ="Jan";
            break;
        case 2:
            result ="Feb";
            break;
        case 3:
            result ="Mar";
            break;
        case 4:
            result ="Apr";
            break;
        case 5:
            result ="May";
            break;
        case 6:
            result ="Jun";
            break;
        case 7:
            result ="Jul";
            break;
        case 8:
            result ="Aug";
            break;
        case 9:
            result ="Sep";
            break;
        case 10:
            result ="Oct";
            break;
        case 11:
            result ="Nov";
            break;
        case 12:
            result ="Dec";
            break;
    }

    return result;
}

ui.date.getLongMonthName = function(monthValue)
{
    var result = "";

    switch (monthValue)
    {
        case 1:
            result = "January";
            break;
        case 2:
            result = "February";
            break;
        case 3:
            result = "March";
            beak;
        case 4:
            result = "April";
            break;
        case 5:
            result = "May";
            break;
        case 6:
            result = "June";
            break;
        case 7:
            result = "July";
            break;
        case 8:
            result = "August";
            break;
        case 9:
            result = "September";
            break;
        case 10:
            result = "October";
            break;
        case 11:
            result = "November";
            break;
        case 12:
            result = "December";
            break;
    }

    return result;
}

ui.date.isLeapYear = function()
{
    var currentDate = new Date();
    var currentYear = currentDate.getFullYear();

    if ((parseInt(currentYear) % 4) === 0)
    {
        if (parseInt(currentYear) % 100 === 0)
        {
            if (parseInt(currentYear) % 400 != 0){ return false; }
            if (parseInt(currentYear) % 400 === 0){ return true; }
        }
        if (parseInt(currentYear) % 100 != 0){ return true; }
        if ((parseInt(currentYear) % 4) != 0){ return false; }
    }
}

ui.date.getCurrentDate = function()
{
    var currentDate = new Date();
    var result = currentDate.getDate() + " " + ui.date.getShortMonthName(currentDate.getMonth() + 1) + " " + currentDate.getFullYear();
    return result;
}

ui.date.getYesterdaysDate = function()
{
    var currentDate = new Date();
    var yesterdaysDate = new Date();
    var result = null;

    yesterdaysDate = (currentDate.getDate() - 1);
    if (yesterdaysDate === 0){ yesterdaysDate = ui.date.getNoOfDaysInAMonth(currentDate.getMonth()); }
    result = yesterdaysDate + " " + ui.date.getShortMonthName(currentDate.getMonth() + 1) + " " + currentDate.getFullYear();

    return result;
}

ui.date.getWeekRange = function(showCurrentWeek)
{
    var currentDate = new Date();
    var result = new Array(2);

    var weekNoToday = ui.date.getWeekNumber();
    var numOfdaysPastSinceLastMonday = 0;
    var weeksInTheFuture = (showCurrentWeek ? 0 : -1); //if showCurrentWeek, set weeks in the future to 0, otherwise, show last week

    numOfdaysPastSinceLastMonday = eval(currentDate.getDay() - 1);
    currentDate.setDate(currentDate.getDate() - numOfdaysPastSinceLastMonday);

    //NOTE: This line will be handy if there is a need to determine the date range based on a week number. Please do not delete.
    //weeksInTheFuture = eval(<weekNumber> - weekNoToday);

    currentDate.setDate(currentDate.getDate() + eval(7 * weeksInTheFuture));

    //week start date
    result[0] = currentDate.getDate() + " " + ui.date.getShortMonthName(currentDate.getMonth() + 1) + " " + currentDate.getFullYear();
    currentDate.setDate(currentDate.getDate() + 6);

    //week end date
    result[1] = currentDate.getDate() + " " + ui.date.getShortMonthName(currentDate.getMonth() + 1) + " " + currentDate.getFullYear();

    return result;
}



ui.date.getNoOfDaysInAMonth = function(monthValue)
{
    var dd = new Date((new Date()).getFullYear(), monthValue, 0);
    return dd.getDate();
} 

ui.date.getMonthRange = function(showCurrentMonth)
{
    var currentDate = new Date();
    var result = new Array(2);
    var currentMonth = showCurrentMonth ? (currentDate.getMonth() + 1) : currentDate.getMonth();
    var lastDayOfTheMonth = ui.date.getNoOfDaysInAMonth(currentMonth);

    result[0] = "1" + " " + ui.date.getShortMonthName(currentMonth) + " " + currentDate.getFullYear();
    result[1] = lastDayOfTheMonth + " " + ui.date.getShortMonthName(currentMonth) + " " + currentDate.getFullYear();

    return result;
}

ui.date.getNextMonthRange = function() {
    var currentDate = new Date();
    var result = new Array(2);
    var currentMonth = (currentDate.getMonth() + 2);
    var lastDayOfTheMonth = ui.date.getNoOfDaysInAMonth(currentMonth);

    result[0] = "1" + " " + ui.date.getShortMonthName(currentMonth) + " " + currentDate.getFullYear();
    result[1] = lastDayOfTheMonth + " " + ui.date.getShortMonthName(currentMonth) + " " + currentDate.getFullYear();

    return result;
}

ui.date.getYearRange = function(showCurrentYear) {
    var currentDate = new Date();
    var result = new Array(2);
    var yearValue = showCurrentYear ? currentDate.getFullYear() : (currentDate.getFullYear() - 1);
    //var lastDayOfTheYear = new Date(currentDate.getDate + " " + ui.date.getShortMonthName(currentDate.getMonth() + 1) + " " + currentDate.getFullYear());
    var lastDayOfTheYear = new Date("31 Dec " + currentDate.getFullYear());

    //check if it is the last day of the year
    //if (currentDate != lastDayOfTheYear) { lastDayOfTheYear = currentDate; }
    //if (showCurrentYear) { result[0] = "1 Jan " + yearValue; }
    //else { result[0] = lastDayOfTheYear.getDate() + " " + ui.date.getShortMonthName(lastDayOfTheYear.getMonth() + 1) + " " + yearValue; }
    //result[1] = lastDayOfTheYear.getDate() + " " + ui.date.getShortMonthName(lastDayOfTheYear.getMonth() + 1) + " " + lastDayOfTheYear.getFullYear();

    result[0] = "1 Jan " + yearValue;
    result[1] = "31 Dec " + yearValue;

    return result;
}




