// scripts for user interface ///////////////////////////////
$(document).ready(function() {

$('#view_sample_btn').click(function(){
// change value
$('#report_mode').attr("value","sample");
// submit form
$("#myForm").submit();
})

    // ppk cookie script
    function createCookie(name, value, days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            var expires = "; expires=" + date.toGMTString();
        }
        else var expires = "";
        document.cookie = name + "=" + value + expires + "; path=/";
    }

    function readCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for (var i = 0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') c = c.substring(1, c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
        }
        return null;
    }

    function eraseCookie(name) {
        createCookie(name, "", -1);
    }

    // end ppk cookie script	

    // settings tooltips
    $('.tool_tip_btn').tooltip({
        track: true,
        delay: 0,
        showURL: false,
        // showBody: " - ", 
        fade: 250,
        extraClass: "settings_tooltip"
    });

    populate_settings = function() {

        // move settings from one dialog form to main
        hours_per_day_setting = $("#todo_list_settings_dialog .hours_per_dayx").attr("value");
        $("#todo_list_settings .hours_per_dayx").attr("value", hours_per_day_setting);
        hours_today_setting = $("#todo_list_settings_dialog .hours_today").attr("value");
        $("#todo_list_settings .hours_today").attr("value", hours_today_setting);
        Monday_setting = $("#todo_list_settings_dialog .Monday").attr("checked");
        $("#todo_list_settings .Monday").attr("checked", Monday_setting);
        Tuesday_setting = $("#todo_list_settings_dialog .Tuesday").attr("checked");
        $("#todo_list_settings .Tuesday").attr("checked", Tuesday_setting);
        Wednesday_setting = $("#todo_list_settings_dialog .Wednesday").attr("checked");
        $("#todo_list_settings .Wednesday").attr("checked", Wednesday_setting);
        Thursday_setting = $("#todo_list_settings_dialog .Thursday").attr("checked");
        $("#todo_list_settings .Thursday").attr("checked", Thursday_setting);
        Friday_setting = $("#todo_list_settings_dialog .Friday").attr("checked");
        $("#todo_list_settings .Friday").attr("checked", Friday_setting);
        Saturday_setting = $("#todo_list_settings_dialog .Saturday").attr("checked");
        $("#todo_list_settings .Saturday").attr("checked", Saturday_setting);
        Sunday_setting = $("#todo_list_settings_dialog .Sunday").attr("checked");
        $("#todo_list_settings .Sunday").attr("checked", Sunday_setting);
        vacation_list_setting = $("#todo_list_settings_dialog .vacation_list").attr("value");
        $("#todo_list_settings .vacation_list").attr("value", vacation_list_setting);
        skip_lines_setting = $("#todo_list_settings_dialog .skip_lines").attr("value");
        $("#todo_list_settings .skip_lines").attr("value", skip_lines_setting);
    } // function
    populate_settings();

    // for dialog box
    $("#todo_list_settings_dialog").dialog({
        buttons: {
            'Save Settings': function() {
                if ($("#todo_list_settings_dialog_form").valid() == true) {
                    populate_settings();
                    var settings_info = hours_per_day_setting + "|" + hours_today_setting + "|" + Monday_setting + "|" + Tuesday_setting + "|" + Wednesday_setting + "|" + Thursday_setting + "|" + Friday_setting + "|" + Saturday_setting + "|" + Sunday_setting + "|" + vacation_list_setting + "|" + skip_lines_setting;
                    createCookie('5bossescookie', settings_info, 28);
                    dialog_button_allow();
                    $('#todo_list_settings_dialog').dialog('close');
                }; // if						 
                // return false;
            },
            // save settings button
            'View Reports': function() {
                if ($("#todo_list_settings_dialog_form").valid() == true && $("#myForm").valid() == true) {
                    createCookie('ppkcookie', 'testcookie', 7);
                    populate_settings();
                    var settings_info = hours_per_day_setting + "|" + hours_today_setting + "|" + Monday_setting + "|" + Tuesday_setting + "|" + Wednesday_setting + "|" + Thursday_setting + "|" + Friday_setting + "|" + Saturday_setting + "|" + Sunday_setting + "|" + vacation_list_setting + "|" + skip_lines_setting;
                    createCookie('5bossescookie', settings_info, 28);
                    $('#todo_list_settings_dialog').dialog('close');
                    dialog_button_allow();
                    $("#myForm").submit();
                }; // if
                // return false;
            } // save settings and view reports
        },
        // buttons
        close: function() {
            if ($("#todo_list_settings_dialog_form").valid() == false) {
                var fix_settings_message = "<div id='fix_settings_message'>Adjust Settings before viewing reports</div>";
                if ($(".step_2 #fix_settings_message").length < 1) {
                    $(".step_2").append(fix_settings_message);
                } else {
                    $("#fix_settings_message").text("Adjust Settings before viewing reports");
                } // inner if
            } // if
            else {
                fix_settings_message_exists = $("#fix_settings_message").text();
                if (fix_settings_message_exists == "Adjust Settings before viewing reports") {
                    $("#fix_settings_message").html("<span style='color: green;'>Settings are OK</span>");
                } // inner if
            } // if
        },
        // close
        modal: true,
        title: "Adjust Settings",
        autoOpen: false,
        height: "336px",
        width: "415px",
        overlay: {
            opacity: 0.75,
            background: "black"
        }
    });

    $('#adjust_settings').bind('click',
    function() {
        $('#todo_list_settings_dialog').dialog('open');
        $('#todo_list_settings_dialog').css("display", "block");
        dialog_button_allow();
        return false;
    });

    //custom validation rule - csv only
    $.validator.addMethod("csv_format",
    function(value, element) {
        return /([a-zA-Z]:(\\w+)*\\[a-zA-Z0_9]+)?.csv/.test(value);
    },
    "use csv format");

    //custom validation rule - at least one checkbox must be checked
    $.validator.addMethod("greaterThanZero",
    function(value, element) {
        var work_days_array = $("#todo_list_settings_dialog_form .work_day:checked");
        return work_days_array.length > 0;
    },
    "* Check at least one checkbox");

    // custom validation rule - hours remaining must be less than hours worked per day
    $.validator.addMethod("lt_hours_per_day",
    function(value, element, param) {
        return value <= $(param).val();
    },
    "* Enter less than hrs/day");

    $.validator.addMethod("comma_separated_dates",
    function(value, element) {
        if (value == "") {
            return true;
        }
        else {
            var vacation_days_array = value.split(",");
            test_my_vacation = true;
            i = 0;
           while (i < vacation_days_array.length) {
                test_my_vacation = /^(?:(?:0?[13578]|1[02])|(?:0?[469]|11)(?!\/31)|(?:0?2)(?:(?!\/3[01]|\/29\/(?:(?:0[^48]|[13579][^26]|[2468][^048])00|(?:\d{2}(?:0[^48]|[13579][^26]|[2468][^048]))))))\/(?:0?[1-9]|[12][0-9]|3[01])\/\d{4}$/.test(vacation_days_array[i]);
                if(test_my_vacation == false){
					return false;
					break;
				} else {
					return true;
				}
				i++;
            } 
            return test_my_vacation;
        } // if
    },
    "* Use format: mm/dd/yyyy,mm/dd/yyyy");

    $.validator.addMethod("comma_separated_integers",
    function(value, element) {
        if (value == "") {
            return true
        }
        else {
            var skip_lines_array = value.split(",");
            test_skip_lines = true;
            i = 0;
            while (i < skip_lines_array.length) {
                test_skip_lines = /^-?\d+$/.test(skip_lines_array[i]);
                i++;
            }
            return test_skip_lines;
        }
    },
    "* Use format: 1,2,4");

    //validation implementation
    $("#myForm").validate({
        rules: {
            file: {
                required: true,
                csv_format: true
            }
        },
        messages: {
            file: {
                required: "Browse to your Todo list",
                csv_format: "Todo List must be in csv format"
            }
        }
    });

    $("#todo_list_settings_dialog_form").validate({
        rules: {
            work_day: {
                greaterThanZero: true
            },
            // work_day
            hours_per_day: {
                required: true,
                number: true
            },
            vacation_list: {
                comma_separated_dates: true
            },
            skip_lines: {
                comma_separated_integers: true
            }

        },
        // rules
        messages: {
            hours_per_day: {
                required: "* Enter a number",
                number: "* Must be a number"
            },
            hours_today: {
                required: "* Enter a number",
                number: "* Must be a number"
            }
        }
    });

    $("#todo_list_settings_dialog_form").validate();

    step_3_button_allow = function() {
        myForm_valid_check = $("#myForm").valid();
        todo_list_settings_dialog_form_valid_check = $("#todo_list_settings_dialog_form").valid();
        if (myForm_valid_check == true && todo_list_settings_dialog_form_valid_check == true) {
            $('#view_reports').removeAttr("disabled");
        } else {
            $('#view_reports').attr("disabled", "disabled");
        } // if
    } // function
    step_3_button_allow();

    $("#file").change(function() {
        step_3_button_allow();
    });

    dialog_button_allow = function() {
        myDialog_valid_check = $("#todo_list_settings_dialog_form").valid();
        myForm_valid_check = $("#myForm").valid();
       
	if (myForm_valid_check == true && myDialog_valid_check == true) {
//main form view reports enabled
$('#view_reports').removeAttr("disabled");
//dialog view reports enabled
$("#todo_list_settings_dialog").parent("div").next("div").children("button:eq(1)").removeAttr("disabled");
//save settings enabled
$("#todo_list_settings_dialog").parent("div").next("div").children("button:eq(0)").removeAttr("disabled");
} 

else if (myForm_valid_check == false && myDialog_valid_check == false) {
//main form view reports disabled;
$('#view_reports').attr("disabled", "disabled");
//dialog view reports disabled;
$("#todo_list_settings_dialog").parent("div").next("div").children("button:eq(1)").attr("disabled", "disabled");
//save settings disabled;
$("#todo_list_settings_dialog").parent("div").next("div").children("button:eq(0)").attr("disabled", "disabled");

}

else if (myForm_valid_check == true && myDialog_valid_check == false) {
//main form view reports disabled;
$('#view_reports').attr("disabled", "disabled");
//dialog view reports disabled;

$("#todo_list_settings_dialog").parent("div").next("div").children("button:eq(1)").attr("disabled", "disabled");

//save settings disabled;
$("#todo_list_settings_dialog").parent("div").next("div").children("button:eq(0)").attr("disabled", "disabled");

}

else if (myForm_valid_check == false && myDialog_valid_check == true) {
//main form view reports disabled;
$('#view_reports').attr("disabled", "disabled");
//dialog view reports disabled;
$("#todo_list_settings_dialog").parent("div").next("div").children("button:eq(1)").attr("disabled", "disabled");
//save settings enabled;
$("#todo_list_settings_dialog").parent("div").next("div").children("button:eq(0)").removeAttr("disabled");
}

	   

    } // function
    dialog_button_allow();
    never_submitted = 0;
	
	    $("#todo_list_settings_dialog_form textarea").keyup(function() {
        dialog_button_allow();
        if (never_submitted == 1) {
            $("#submit_message").html("<span id='submit_modified_message'>Settings Modified - Update Reports</span>").css("color", "orange");
        } // if
    });
	
    $("#todo_list_settings_dialog_form input").change(function() {
        dialog_button_allow();
        if (never_submitted == 1) {
            $("#submit_message").html("<span id='submit_modified_message'>Settings Modified - Update Reports</span>").css("color", "orange");
        } // if
    });

    $("#todo_list_settings_dialog_form input").keyup(function() {
        dialog_button_allow();
    });

    // misc adjustments
    var settings_array = readCookie('5bossescookie')
    if (settings_array) {
        settings_array = settings_array.split('|');
        for (i = 0; i < settings_array.length; i++) {
            if (settings_array[i] == "true") {
                settings_array[i] = true;
            } else if (settings_array[i] == "false") {
                settings_array[i] = false;
            }
        } // for
        $("#todo_list_settings_dialog .hours_per_dayx").attr("value", settings_array[0]);
        $("#todo_list_settings_dialog .hours_today").attr("value", settings_array[1]);
        $("#todo_list_settings_dialog .Monday").attr("checked", settings_array[2]);
        $("#todo_list_settings_dialog .Tuesday").attr("checked", settings_array[3]);
        $("#todo_list_settings_dialog .Wednesday").attr("checked", settings_array[4]);
        $("#todo_list_settings_dialog .Thursday").attr("checked", settings_array[5]);
        $("#todo_list_settings_dialog .Friday").attr("checked", settings_array[6]);
        $("#todo_list_settings_dialog .Saturday").attr("checked", settings_array[7]);
        $("#todo_list_settings_dialog .Sunday").attr("checked", settings_array[8]);
        $("#todo_list_settings_dialog .vacation_list").attr("value", settings_array[9]);
        $("#todo_list_settings_dialog .skip_lines").attr("value", settings_array[10]);
        populate_settings();
    }
    else {
        $("#todo_list_settings_dialog .hours_per_dayx").attr("value", "8");
        $("#todo_list_settings_dialog .hours_today").attr("value", "8");
        $("#todo_list_settings_dialog .Monday").attr("checked", true);
        $("#todo_list_settings_dialog .Tuesday").attr("checked", true);
        $("#todo_list_settings_dialog .Wednesday").attr("checked", true);
        $("#todo_list_settings_dialog .Thursday").attr("checked", true);
        $("#todo_list_settings_dialog .Friday").attr("checked", true);
        $("#todo_list_settings_dialog .Saturday").attr("checked", false);
        $("#todo_list_settings_dialog .Sunday").attr("checked", false);
        $("#todo_list_settings_dialog .vacation_list").attr("value", "01/01/2010");
        $("#todo_list_settings_dialog .skip_lines").attr("value", "1");
        populate_settings();
    }
    $("#todo_list_settings_dialog .hours_per_dayx, #todo_list_settings_dialog .hours_today").focus(function() {
        //$(this).attr("value", "");
    });
    $("#todo_list_settings_dialog .hours_per_dayx, #todo_list_settings_dialog .hours_today").blur(function() {
        hours_per_day_setting = $("#todo_list_settings_dialog .hours_per_dayx").attr("value");
        hours_per_day_setting = parseFloat(hours_per_day_setting);
        hours_today_setting = $("#todo_list_settings_dialog .hours_today").attr("value");
        hours_today_setting = parseFloat(hours_today_setting);
        if (hours_today_setting > hours_per_day_setting) {
            $("#todo_list_settings_dialog .hours_today").attr("value", hours_per_day_setting);
        } // if
    });

});