﻿function getFormattedDate() {
    var date = new Date();
    var day = date.getDate();
    var month = date.getMonth() + 1;
    var year = date.getFullYear();

    return month + "/" + day + "/" + year;
}

function getDay(date) {
    var day = 0;

    day = getDateDiff(date) % 1000;

    return day;
}

function getCycle(date) {
    var cycle = 0;

    cycle = Math.floor(getDateDiff(date) / 1000);

    return cycle;
}

function getWeekNumber(date) {
    var inputDate = new Date(date);
    var year = inputDate.getFullYear();
    var jan1 = new Date(year, 0, 1);
    var jan1DayOfWeek = jan1.getDay();  // Sunday = 0, Saturday = 6
    var jan1Week = 0;

    if (jan1DayOfWeek < 5)
        jan1Week = 1;
    else
        jan1Week = 0;

    var firstSaturday = new Date(year, 0, 1 + (6 - jan1DayOfWeek));
    var dateDiff = getDateDiff2Dates(firstSaturday, inputDate);

    if (dateDiff < 1) {
        if (jan1Week == 0)
            return getWeekNumber('12/31/' + (year - 1));
        else
            return 1;
    }

    var addWeeks = Math.ceil(dateDiff / 7);

    return jan1Week + addWeeks;
}

function showCalculatedDay() {
    var date = $('#dateToConvert').val();

    if (date == "")
        return false;

    $('#calculated').removeClass('hide');
    $('#calculated').addClass('show');

    $('.calcThousandDay').text(getDay(date));
    $('.calcWeek').text(getWeekNumber(date));
    $('.calcCycle').text(getCycle(date));
}

function getWeeksInYear(year) {
    var weeks = 52;
    var lastDayInYear = new Date(year, 11, 31);
    var dayOfWeekOfLastDay = lastDayInYear.getDay();

    if (dayOfWeekOfLastDay < 5)
        weeks = 53;

    return weeks;
}

function getDateDiff(date) {
    var diff = 0;
    var jsDate = new Date(date);
    var startTime = _startDate.getTime();
    var thisTime = jsDate.getTime();
    var timeDiff = thisTime - startTime;
    var dayDiff = Math.floor(timeDiff / _dayInMilliseconds);

    return dayDiff;
}

function getDateDiff2Dates(earlierDate, laterDate) {
    var diff = 0;
    var startTime = earlierDate.getTime();
    var endTime = laterDate.getTime();
    var timeDiff = endTime - startTime;
    var dayDiff = Math.floor(timeDiff / _dayInMilliseconds);

    return dayDiff;
}
