﻿$(document).ready(function () {
    $('#divPayFrequency').hide();
    $('#divWeekly').hide();
    $('#divBiWeekly').hide();
    $('#divSemiMonthly').hide();
    $('#divMonthly').hide();
    $('#divDueDate').hide();
    $('#divPayDatesWeekly').hide();
    $('#twoSpecific').hide();
    $('#twoWeeks').hide();
    $('#divPayDatesMonthly').hide();
    $('#specificDay').hide();
    $('#specificWeek').hide();

    if ($.browser.msie && $.browser.version < 8) {
        $('input[type=radio]').live('click', function () {
            $(this).trigger('change');
            $(this).attr('checked', true);
        });
    }

    $('input').click(function () {
        
    });

    $('#rdoBefore').change(function () {
        var val = $(this).val();
        $('#hdnBuisness').val(val);
        ClearAll();
        $('#divPayFrequency').show();
        $('#ddlPayFrequency').val('');
        $('#rdoAfter').attr('checked', false);
        $('#rdoFirstDate').attr('checked', false);
        $('#rdoSecondDate').attr('checked', false);
    });
    $('#rdoAfter').change(function () {
        var val = $(this).val();
        $('#hdnBuisness').val(val);
        ClearAll();
        $('#divPayFrequency').show();
        $('#ddlPayFrequency').val('');
        $('#rdoBefore').attr('checked', false);
        $('#rdoFirstDate').attr('checked', false);
        $('#rdoSecondDate').attr('checked', false);
    });

    $('#ddlPayFrequency').change(function () {
        var val = $(this).val();
        $('#divWeekly').hide();
        $('#divBiWeekly').hide();
        $('#divSemiMonthly').hide();
        $('#divMonthly').hide();
        $('#divDueDate').hide();
        $('#divPayDatesWeekly').hide();
        $('#twoSpecific').hide();
        $('#twoWeeks').hide();
        $('#hdnFrequency').val(val);
        $('#divPayDatesMonthly').hide();
        $('#ddlWeekly').val('');
        $('#ddlBiWeekly').val('');
        $('#ddlSemiMonthly').val('');
        $('#ddlMonthly').val('');
        $('#txtDueDate').val('');
        switch (val) {
            case 'W':
                $('#divWeekly').show();
                break;
            case 'B':
                $('#divBiWeekly').show();
                break;
            case 'S':
                $('#divSemiMonthly').show();
                break;
            case 'M':
                $('#divMonthly').show();
                break;
        }
    });
    $('#ddlWeekly').change(function () {
        var val = $(this).val();
        $('#divPayDatesWeekly').hide();
        $('#divDueDate').hide();
        $('#rdoFirstDate').attr('checked', false);
        $('#rdoSecondDate').attr('checked', false);
        $('#txtDueDate').val('');
        GetPreviousPayDatesWeekly(val, 'W');

    });
    $('#ddlBiWeekly').change(function () {
        var val = $(this).val();
        $('#divPayDatesWeekly').hide();
        $('#divDueDate').hide();
        $('#rdoFirstDate').attr('checked', false);
        $('#rdoSecondDate').attr('checked', false);
        $('#txtDueDate').val('');
        GetPreviousPayDatesWeekly(val, 'B');
    });
    $('#ddlSemiMonthly').change(function () {
        var val = $(this).val();
        $('#divPayDatesMonthly').hide();
        $('#ddlFirstSpecific').val('');
        $('#ddlFirstWeek').val('');
        $('#twoSpecific').hide();
        $('#twoWeeks').hide();
        $('#txtDueDate').val('');
        switch (val) {
            case '1':
                $('#twoSpecific').show();
                $('#trSecondSpecific').hide();
                $('#twoWeeks').hide();
                break;
            case '2':
                $('#twoSpecific').hide();
                $('.trFirstDay').hide();
                $('.trSecondDay').hide();
                $('.trSecondWeek').hide();
                $('#twoWeeks').show();
                break;
        }
    });
    $('#ddlFirstSpecific').change(function () {
        var val = $(this).val();
        $('#divPayDatesMonthly').hide();
        $('#ddlSecondSpecific').empty();
        $('#txtDueDate').val('');
        if (val != '') {
            $('#trSecondSpecific').show();
            PopulateSecondPayDay(val);
        }
    });
    $('#ddlSecondSpecific').change(function () {
        var val = $(this).val();
        var firstDay = $('#ddlFirstSpecific').val();
        $('#divPayDatesMonthly').hide();
        $('#txtDueDate').val('');
        CalculatePayDatesSemiMonthlyBySpecificDays(firstDay, val)
    });
    $('#ddlFirstWeek').change(function () {
        var val = $(this).val();
        $('.trFirstDay').hide();
        $('.trSecondWeek').hide();
        $('.trSecondDay').hide();
        $('#ddlFirstDay').val('');
        $('#ddlSecondWeek').val('');
        $('#ddlSecondDay').val('');
        $('#txtDueDate').val('');
        if (val != '') {
            $('.trFirstDay').show();
        }
    });
    $('#ddlFirstDay').change(function () {
        var val = $(this).val();
        $('.trSecondWeek').hide();
        $('.trSecondDay').hide();
        $('#ddlSecondWeek').val('');
        $('#ddlSecondDay').val('');
        $('#txtDueDate').val('');
        if (val != '') {
            $('.trSecondWeek').show();
        }
    });
    $('#ddlSecondWeek').change(function () {
        var val = $(this).val();
        $('.trSecondDay').hide();
        $('#ddlSecondDay').val('');
        $('#txtDueDate').val('');
        if (val != '') {
            $('.trSecondDay').show();
        }
    });
    $('#ddlSecondDay').change(function () {
        var firstWeek = $('#ddlFirstWeek').val();
        var firstDay = $('#ddlFirstDay').val();
        var secondWeek = $('#ddlSecondWeek').val();
        var secondDay = $(this).val();
        var nonBuisness = $('#hdnBuisness').val();
        $('#txtDueDate').val('');
        $('#divDueDate').hide();
        CalculatePayDatesSemiMonthlyBySpecificWeeks(firstWeek, firstDay, secondWeek, secondDay);
        GetNextPayDateSemiMonthlyBySpecificWeeks(firstWeek, firstDay, secondWeek, secondDay, nonBuisness)
    });
    $('#ddlMonthly').change(function () {
        var val = $(this).val();
        $('#divPayDatesMonthly').hide();
        $('#ddlSpecificDay').val('');
        $('#ddlSpecificWeek').val('');
        $('#twoSpecific').hide();
        $('#twoWeeks').hide();
        $('#txtDueDate').val('');
        switch (val) {
            case '1':
                $('#specificDay').show();
                $('#specificWeek').hide();
                break;
            case '2':
                $('#trPayDay').hide();
                $('#specificDay').hide();
                $('#specificWeek').show();
                break;
        }
    });
    $('#ddlSpecificDay').change(function () {
        var day = $(this).val();
        $('#divDueDate').hide();
        $('#txtDueDate').val('');
        CalculatePayDatesMonthlyBySpecificDay(day);
    });
    $('#ddlSpecificWeek').change(function () {
        var val = $(this).val();
        $('#trPayDay').hide();
        $('#ddlSpecificWeekDay').val('');
        $('#txtDueDate').val('');
        if (val != '') {
            $('#trPayDay').show();
        }
    });
    $('#ddlSpecificWeekDay').change(function () {
        var day = $(this).val();
        var week = $('#ddlSpecificWeek').val();
        var nonBuisness = $('#hdnBuisness').val();
        $('#txtDueDate').val('');
        $('#divDueDate').hide();
        CalculatePayDatesMonthlyBySpecificWeeks(week, day);
        GetNextPayDateMonthlyBySpecificWeeks(week, day, nonBuisness);
    });
    $('#rdoFirstDate').change(function () {
        var val = $(this).val();
        var nonBuisness = $('#hdnBuisness').val();
        var frequency = $('#hdnFrequency').val();
        $('#txtDueDate').val('');
        $('#rdoSecondDate').attr('checked', false);
        $('#divDueDate').hide();
        GetNextPayDateWeekly(val, nonBuisness, frequency);

    });
    $('#rdoSecondDate').change(function () {
        var val = $(this).val();
        var nonBuisness = $('#hdnBuisness').val();
        var frequency = $('#hdnFrequency').val();
        $('#txtDueDate').val('');
        $('#rdoFirstDate').attr('checked', false);
        $('#divDueDate').hide();
        GetNextPayDateWeekly(val, nonBuisness, frequency);
    });
});

function ClearAll() {
    $('#divPayFrequency').hide();
    $('#divWeekly').hide();
    $('#divBiWeekly').hide();
    $('#divSemiMonthly').hide();
    $('#divMonthly').hide();
    $('#divDueDate').hide();
    $('#divPayDatesWeekly').hide();
    $('#twoSpecific').hide();
    $('#twoWeeks').hide();
    $('#divPayDatesMonthly').hide();
    $('#specificDay').hide();
    $('#specificWeek').hide();
    $('#txtDueDate').val('');
}

function PopulateSecondPayDay(FirstDay) {
    var days = 1;
    var startDay = 12;
    var dropdown = $('#ddlSecondSpecific');
    dropdown.append($(document.createElement("option")).attr("value", "").text("-- select --"));
    if (FirstDay >= startDay) {
        days += parseInt(FirstDay);
    }
    else {
        days = startDay;
    }

    for (var i = days; i <= 30; i++) {
        dropdown.append($(document.createElement("option")).attr("value", i).text(i));
    }

    dropdown.append($(document.createElement("option")).attr("value", "EOM").text("EOM"));
}

function GetPreviousPayDatesWeekly(Day, Frequency) {
    $.ajax({
        type: "POST",
        data: '{day: "' + Day + '",frequency: "' + Frequency + '"}',
        url: "/Services/PayrollService.asmx/GetPreviousPayDatesWeekly",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            var data = response.d;
            var dataArray = new Array();
            dataArray = data.split(',');
            switch (Frequency) {
                case 'W':
                    $('#hdnLastPayDate').val(dataArray[0]);
                    $('#divPayDatesWeekly').show();
                    $('#rdoFirstDate').val(dataArray[0]);
                    $('#lblFirstDate').text(dataArray[0]);
                    $('#rdoSecondDate').hide();
                    $('#lblSecondDate').text('');
                    break;
                case 'B':
                    $('#hdnLastPayDate').val(dataArray[0]);
                    $('#hdnLastPayDateBiWeekly').val(dataArray[1]);
                    $('#divPayDatesWeekly').show();
                    $('#rdoFirstDate').val(dataArray[0]);
                    $('#lblFirstDate').text(dataArray[0]);
                    $('#rdoSecondDate').show();
                    $('#rdoSecondDate').val(dataArray[1]);
                    $('#lblSecondDate').text(dataArray[1]);
                    break;
            }

        },
        failure: function (msg) {
            $('#result').empty().append(msg);
        }
    });
}

function GetNextPayDateWeekly(Date, NonBuisness, Frequency) {
    $.ajax({
        type: "POST",
        data: '{date: "' + Date + '",nonBuisness: "' + NonBuisness + '",frequency: "' + Frequency + '"}',
        url: "/Services/PayrollService.asmx/GetNextPayDateWeekly",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            var data = response.d;
            $('#hdnDueDate').val(data);
            $('#divDueDate').show();
            $('#txtDueDate').val(data);
        },
        failure: function (msg) {
            $('#result').empty().append(msg);
        }
    });
}

function CalculatePayDatesSemiMonthlyBySpecificDays(FirstDay, SecondDay) {
    $.ajax({
        type: "POST",
        data: '{firstDay: "' + FirstDay + '",secondDay: "' + SecondDay + '"}',
        url: "/Services/PayrollService.asmx/CalculatePayDatesSemiMonthlyBySpecificDays",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            var data = response.d;
            var dataArray = new Array();
            dataArray = data.split(',');
            $('#hdnLastPayDate').val(dataArray[0]);
            $('#hdnNextPayDate').val(dataArray[1]);
            $('#divPayDatesMonthly').show();
            $('#lblDateMonthly').text(dataArray[0]);
            var nonBuisness = $('#hdnBuisness').val();
            var endOfMonth = $('#ddlSecondSpecific').val();
            GetNextPayDateSemiMonthlyBySpecificDays(dataArray[0], dataArray[1], dataArray[2], endOfMonth, nonBuisness);
        },
        failure: function (msg) {
            $('#result').empty().append(msg);
        }
    });
}


function GetNextPayDateSemiMonthlyBySpecificDays(FirstDate, SecondDate, IsSecondDate, EndOfMonth, NonBuisness) {
    $.ajax({
        type: "POST",
        data: '{firstDate: "' + FirstDate + '",secondDate: "' + SecondDate + '",isSecondDate: "' + IsSecondDate + '",endOfMonth: "' + EndOfMonth + '",nonBuisness: "' + NonBuisness + '"}',
        url: "/Services/PayrollService.asmx/GetNextPayDateSemiMonthlyBySpecificDays",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            var data = response.d;
            $('#hdnDueDate').val(data);
            $('#divDueDate').show();
            $('#txtDueDate').val(data);
        },
        failure: function (msg) {
            $('#result').empty().append(msg);
        }
    });
}

function CalculatePayDatesSemiMonthlyBySpecificWeeks(FirstWeek, FirstDay, SecondWeek, SecondDay) {
    $.ajax({
        type: "POST",
        data: '{firstWeek: "' + FirstWeek + '",firstDay: "' + FirstDay + '",secondWeek: "' + SecondWeek + '",secondDay: "' + SecondDay + '"}',
        url: "/Services/PayrollService.asmx/CalculatePayDatesSemiMonthlyBySpecificWeeks",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            var data = response.d;
            var dataArray = new Array();
            dataArray = data.split(',');
            $('#hdnLastPayDate').val(dataArray[0]);
            $('#hdnNextPayDate').val(dataArray[2]);
            $('#divPayDatesMonthly').show();
            $('#lblDateMonthly').text(dataArray[0]);
        },
        failure: function (msg) {
            $('#result').empty().append(msg);
        }
    });
}

function GetNextPayDateSemiMonthlyBySpecificWeeks(FirstWeek, FirstDay, SecondWeek, SecondDay, NonBuisness) {
    $.ajax({
        type: "POST",
        data: '{firstWeek: "' + FirstWeek + '",firstDay: "' + FirstDay + '",secondWeek: "' + SecondWeek + '",secondDay: "' + SecondDay + '",nonBuisness: "' + NonBuisness + '"}',
        url: "/Services/PayrollService.asmx/GetNextPayDateSemiMonthlyBySpecificWeeks",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            var data = response.d;
            $('#hdnDueDate').val(data);
            $('#divDueDate').show();
            $('#txtDueDate').val(data);
        },
        failure: function (msg) {
            $('#result').empty().append(msg);
        }
    });
}

function CalculatePayDatesMonthlyBySpecificDay(Day) {
    $.ajax({
        type: "POST",
        data: '{day: "' + Day + '"}',
        url: "/Services/PayrollService.asmx/CalculatePayDatesMonthlyBySpecificDays",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            var data = response.d;
            var dataArray = new Array();
            dataArray = data.split(',');
            $('#hdnLastPayDate').val(dataArray[0]);
            $('#hdnNextPayDate').val(dataArray[1]);
            $('#divPayDatesMonthly').show();
            $('#lblDateMonthly').text(dataArray[0]);
            var nonBuisness = $('#hdnBuisness').val();
            var endOfMonth = $('#ddlSpecificDay').val();
            GetNextPayDateSemiMonthlyBySpecificDay(dataArray[0], endOfMonth, nonBuisness);
        },
        failure: function (msg) {
            $('#result').empty().append(msg);
        }
    });
}


function GetNextPayDateSemiMonthlyBySpecificDay(Date, EndOfMonth, NonBuisness) {
    $.ajax({
        type: "POST",
        data: '{date: "' + Date + '",endOfMonth: "' + EndOfMonth + '",nonBuisness: "' + NonBuisness + '"}',
        url: "/Services/PayrollService.asmx/GetNextPayDateMonthlyBySpecificDays",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            var data = response.d;
            $('#hdnDueDate').val(data);
            $('#divDueDate').show();
            $('#txtDueDate').val(data);
        },
        failure: function (msg) {
            $('#result').empty().append(msg);
        }
    });
}

function CalculatePayDatesMonthlyBySpecificWeeks(Week, Day) {
    $.ajax({
        type: "POST",
        data: '{week: "' + Week + '",day: "' + Day + '"}',
        url: "/Services/PayrollService.asmx/CalculatePayDatesMonthlyBySpecificWeeks",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            var data = response.d;
            var dataArray = new Array();
            dataArray = data.split(',');
            $('#hdnLastPayDate').val(dataArray[0]);
            $('#hdnNextPayDate').val(dataArray[1]);
            $('#divPayDatesMonthly').show();
            $('#lblDateMonthly').text(dataArray[0]);
        },
        failure: function (msg) {
            $('#result').empty().append(msg);
        }
    });
}

function GetNextPayDateMonthlyBySpecificWeeks(Week, Day, NonBuisness) {
    $.ajax({
        type: "POST",
        data: '{week: "' + Week + '",day: "' + Day + '",nonBuisness: "' + NonBuisness + '"}',
        url: "/Services/PayrollService.asmx/GetNextPayDateMonthlyBySpecificWeeks",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            var data = response.d;
            $('#hdnDueDate').val(data);
            $('#divDueDate').show();
            $('#txtDueDate').val(data);
        },
        failure: function (msg) {
            $('#result').empty().append(msg);
        }
    });
}
