﻿/// <reference path="jquery-1.3.2-vsdoc.js />

var Schedule =
{
    ShowSelectedSessions: function() {
        var selectedSessions = $('#SelectedSessions');

        // if (selectedsessions.html() == '') {
        $.post('/Appointment/SelectedSessions', {},
            function(data) {
                selectedSessions.html(data.message);
                $('#Step3').show();
            }, "json");
        //}
    },
    Init: function() {
        //  $('.date').datepick({ dateFormat: Date.CultureInfo.formatPatterns.shortDate.replace(/M/g, 'm').replace(/yy/g, 'y') });
        $('#ScheduleAppointment').validate();
        InitQTips($('#SessionTimes'));

        function LoadSessionTimes(calendarID, prefDate) {
            if (Date.parse(prefDate) == null) {
                alert('Unable to load sessions. Date is not valid.');
            } else {
                Step2();
                $('#SessionTimes').html('<div class="loading"/>');
                $.post('/Appointment/SessionTimes', { CalendarID: calendarID, weekStarting: prefDate },
                function(data) {
                    if (data.errors != '') {
                        jQuery.noticeAdd({ text: data.errors, stay: false });
                        prefDate = data.weekStarting;
                    }
                    var sessionTimes = $('#SessionTimes');
                    sessionTimes.html(data.message);
                    $('#sa-WeekStarting').val(prefDate);
                    SetDDLDate('', prefDate)
                    InitQTips($('#SessionTimes'));
                }, "json");
            }
        }

        function SetDDLDate(e, date) {
            var d = Date.parse(date, 'yyyy-MMM-d');
            $('#' + e + 'Days').val(d.toString('d'));
            $('#' + e + 'Months').val(d.toString('MMM'));
            $('#' + e + 'Years').val(d.toString('yyyy'));
        }

        function GetDDLDate(e) {
            return $('#' + e + 'Years').val() + "." + $('#' + e + 'Months').val() + '.' + $('#' + e + 'Days').val();
        }

        function LoadFormFields() {
            $.post('/Appointment/FormFields', {},
                    function(data) {
                        Schedule.ShowSelectedSessions();
                        $('#AppointmentForm').children('tbody').append(data.message);
                        Step3();
                    }, "json");
        }

        function Step1() {
            $('#Step1Container').slideDown('normal');
            $('#Step2').slideUp(0);
            $('#Step3').slideUp(0);
        }
        function Step2() {
            if ($('#CalendarID').val() == '') {
                Step1();
            }
            $('#Step1Container').slideUp(0);
            $('#Step2').slideDown('normal', function() {
                $('#Step2Container').slideDown('normal');
            });
            $('#Step3').slideUp(0);
        }
        function Step3() {
            if ($('#SelectedSessions').children('.selected-date').size() == 0) {
                Step2();
            }
            $('#Step1Container').slideUp(0);
            $('#Step2Container').slideUp(0);
            $('#Step3').slideDown('normal', function() {
                $('#Step3Container').slideDown('normal');
                if (location.href.indexOf('http://demo.appointmentmemo.com') != -1) {
                    if ($('#Name').val() == '') {
                        $('#Name').val('John Doe');
                    }
                    if ($('#Email').val() == '') {
                        $('#Email').val('mail@domain.com');
                    }
                    if ($('#Phone').val() == '') {
                        $('#Phone').val('(123) 123-1234');
                    }
                }
                $("#Name").focus();
            });
        }


        // resource links click event
        // - show step 2 (select preferred date)
        // - set hidden input CalendarID
        $('.calendar').bind("click", (function(e) {
            var link = $(this);
            var calendarID = link.attr('rel');
            $('#CalendarID, #sa-CalendarID').val(calendarID);
            $('.calendar').removeClass('selected');
            link.addClass('selected');

            var weekStarting = $('WeekStarting');
            $.post('/Appointment/DaysInAdvance', { CalendarID: calendarID },
                function(data) {

                    var defaultPrefDate = Date.today().toString('yyyy-MMM-d');
                    if (data.message != 0) {
                        defaultPrefDate = (parseInt(data.message)).days().fromNow().toString('yyyy-MMM-d');
                    }
                    SetDDLDate('', defaultPrefDate);

                    //$('#WeekStarting, #sa-WeekStarting').val(defaultPrefDate.toString('yyyy-MMM-d'));
                    //          weekStarting.datepick({ dateFormat: Date.CultureInfo.formatPatterns.shortDate.replace(/M/g, 'm').replace(/yy/g, 'y'), minDate: defaultPrefDate, defaultDate: defaultPrefDate });
                    /*$("#ViewSessionTimes").validate();
                    */
                    LoadSessionTimes(calendarID, defaultPrefDate);

                    $('#Step1Result').text(link.children(".header").text());
                }, "json");
            return false;
        }));

        // ViewSessionTimes form submit event
        $('#ViewSessionTimes').bind('submit', function() {
            LoadSessionTimes($('#CalendarID').val(), GetDDLDate(''));
            return false;
        });

        $('.session-select').live('click', function() {
            $('.stip', '#SessionTimes').qtip('hide');
            var link = $(this);
            var calendarID = $('#CalendarID').val();
            var startDTS = link.attr('rel').split('|')[0];
            var endDTS = link.attr('rel').split('|')[1];
            $.post('/Appointment/SelectSession', { CalendarID: calendarID, StartDTS: startDTS, EndDTS: endDTS },
                    function(data) {
                        if (data.message.indexOf('pass') != -1) {
                            Schedule.ShowSelectedSessions();
                            //   $('#d-step4').effect('highlight', { color: '#ffed8c' }, 1500);
                            link.parent().addClass("selected");
                            $('#step2-result').text(data.message.replace(/.*?<\/div>(.*?)<\/div>/g, "$1"));
                            if ($('#FormFieldsLoaded').val() == '0') {
                                LoadFormFields();
                                $('#FormFieldsLoaded').val('1');
                            }
                            Step3();
                        }
                        jQuery.noticeAdd({ text: data.message, stay: false });

                    }, "json");
            return false;
        });

        $('.remove-session').live('click', function() {
            var link = $(this);
            var removeSessionAttr = link.attr('rel').split('|');
            var selectedSessionID = removeSessionAttr[0];
            var calendarID = removeSessionAttr[1];
            var startDTS = removeSessionAttr[2];
            var parent = link.parents('.selected-date');
            /* parent.animate({ 'backgroundColor': '#ff8282' }, 300);*/
            $.post('/Appointment/RemoveSession', { SelectedSessionID: selectedSessionID },
                    function(data) {
                        parent.slideUp(300, function() {
                            parent.remove();
                        });
                        jQuery.noticeAdd({ text: data.message, stay: false });
                        if ($('#CalendarID').val() == calendarID) {
                            $('#' + startDTS).removeClass('selected');
                            if ($('#SelectedSessions').children('.selected-date').size() == 1) {
                                Step1();
                            }
                        }
                    }, "json");
            return false;
        });

        $('#Prev').bind('click', function() {
            var calendarID = $('#CalendarID').val();

            var prefDate = Date.parse($('#sa-WeekStarting').val()).add(-7).days().toString('yyyy-MMM-d');

            LoadSessionTimes(calendarID, prefDate);
            return false;
        });

        $('#Next').bind('click', function() {
            var calendarID = $('#CalendarID').val();
            var prefDate = Date.parse($('#sa-WeekStarting').val()).add(7).days().toString('yyyy-MMM-d');
            LoadSessionTimes(calendarID, prefDate);
            return false;
        });

        $('#Step1Header').bind('click', function() {
            Step1();
            return false;
        });
        $('#Step2Header').bind('click', function() {
            Step2();
            return false;
        });
        $('#Step3Header').bind('click', function() {
            Step3();
            return false;
        });
    }
};
