﻿/// <reference path="jquery.js" />
/// <reference path="Utility.js" />
var Membership =
    {
        _isLoggedIn: false,
        _logoutUrl: '',
        _redirectToPrevious: false,
        _vsu: null,
        _vsi: null,
        _vfp: null,

        get_isLoggedIn: function() {
            return Membership._isLoggedIn;
        },
        set_isLoggedIn: function(value) {
            Membership._isLoggedIn = value;
        },
        set_logoutUrl: function(value) {
            Membership._logoutUrl = value;
        },
        init: function() {
            $('#lnkSignin').click(function() {
                Membership.showSignin(false);
            });
            $('#lnkSignup').click(function() {
                Membership.showSignup(false);
            });
            $('#lnkSignout').click(function() {
                Membership.signout();
            });
            $('#lnkSigninSignup').click(function() {
                Membership.showSignup(false);
            });
            $('#lnkForgotSignup').click(function() {
                Membership.showSignup(false);
            });
            $('#lnkSignupSignin').click(function() {
                Membership.showSignin(false);
            });
            $('#lnkForgotPassword').click(function() {
                Membership.showForgotPwd(false);
            });
            $('#membershipBox').keydown(function(e) {
                if (e.keyCode === 27) // EscapeKey
                {
                    Membership._hide(false);
                }
            });
            $('#membershipClose').click(function() { Membership._hide(false); });
            $('#signinCancel').click(function() { Membership._hide(false); });
            $('#signupCancel').click(function() { Membership._hide(false); });
            $('#forgotPwdCancel').click(function() { Membership._hide(false); });
            $('#forgotPwdContinue').click(function() { Membership._hide(false); });


//            Membership._vsu = $('#frmSignup').validate(
//                                    {
//                                        rules: {
//                                            fullName: 'required',
//                                            email: 'required',
//                                            password: 'required',
//                                            bday: 'required',
//                                            bmonth: 'required',
//                                            byear: 'required',
//                                            gender: 'required',
//                                            agreed: 'required'
//                                        },
//                                        messages: {

//                                            fullName: 'نام و نام خانوادگی خود را وارد کنید',
//                                            email: 'ایمیل خود را وارد کنید',
//                                            password: 'رمز عبور مورد نظر خود را وارد کنید',
//                                            bday: 'روز تولد',
//                                            bmonth: 'ماه تولد',
//                                            byear: 'سال تولد',
//                                            gender: 'جنسیت خود را تعیین کنید',
//                                            agreed: 'توافق خود با قوانین سایت را تایید کنید'
//                                        },
//                                        submitHandler: function(form) {
//                                            var options = {
//                                                dataType: 'json',
//                                                data: '__MVCASYNCPOST=true',
//                                                beforeSubmit: function() {
//                                                    $('#signupMessage').hide().text('در حال ثبت نام...').css('color', '');

//                                                    $U.disableInputs('#signupSection', true);
//                                                    $U.showProgress('در حال ثبت نام...');
//                                                },
//                                                success: function(result) {
//                                                    $U.disableInputs('#signupSection', false);
//                                                    $U.hideProgress();

//                                                    if (result.isSuccessful) {
//                                                        $U.messageBox('حساب شما ایجاد شد', 'حساب شما با موفقیت ایجاد شد. لطفا برای تکمیل فرآیند ثبت نام بر روی لینک موجود در ایمیل ارسالی کلیک کنید.', false, function() {
//                                                            Membership._hide(true);
//                                                            window.location.reload();
//                                                        });
//                                                    }
//                                                    else {
//                                                        $('#signUpErrorsContainer').text(result.errorMessage).css({ color: '#ff0000', display: 'block' });
//                                                    }
//                                                }
//                                            };

//                                            $(form).ajaxSubmit(options);
//                                            return false;
//                                        }
//                                    }
//                                );
//            Membership._vsi = $('#frmSignin').validate(
//                                    {
//                                        rules: {
//                                            useremail: 'required',
//                                            password: 'required'
//                                        },
//                                        messages:
//                                                {
//                                                    email: 'ایمیل خود را وارد کنید',
//                                                    password: 'رمز عبور خود را وارد کنید'
//                                                },
//                                        submitHandler: function(form) {
//                                            var options = {
//                                                dataType: 'json',
//                                                data: '__MVCASYNCPOST=true',
//                                                beforeSubmit: function() {
//                                                    $('#loginMessage').hide().text('').css('color', '');

//                                                    $U.disableInputs('#loginSection', true);
//                                                    $U.showProgress('در حال کنترل حساب...', '#chkLoginRememberMe');
//                                                },
//                                                success: function(result) {
//                                                    $U.disableInputs('#loginSection', false);
//                                                    $U.hideProgress();

//                                                    if (result.isSuccessful) {
//                                                        Membership._hide(true);
//                                                        window.location.reload();
//                                                    }
//                                                    else {
//                                                        alert(result.errorMessage);
//                                                        $('#signinErrorsContainer').text(result.errorMessage).css({ color: '#ff0000', display: 'block' });
//                                                        $U.focus('txtSigninUserEmail');
//                                                    }
//                                                }
//                                            };

//                                            $(form).ajaxSubmit(options);
//                                            return false;
//                                        }
//                                    }
//                                );
//            Membership._vfp = $('#frmFogot').validate(
//                                    {
//                                        rules: {
//                                            email: {
//                                                required: true,
//                                                email: true
//                                            }
//                                        },
//                                        messages: {
//                                            email: {
//                                                required: 'ایمیل خود را وارد کنید',
//                                                email: 'ساختار ایمیل صحیح نیست'
//                                            }
//                                        },
//                                        submitHandler: function(form) {
//                                            var options = {
//                                                dataType: 'json',
//                                                data: '__MVCASYNCPOST=true',
//                                                beforeSubmit: function() {
//                                                    $('#forgotPwdErrorsContainer').hide().text('').css('color', '');

//                                                    $U.disableInputs('#forgotPwdSection', true);
//                                                    $U.showProgress('در حال دریافت اطلاعات...');
//                                                },
//                                                success: function(result) {
//                                                    $U.disableInputs('#forgotPwdSection', false);
//                                                    $U.hideProgress();

//                                                    if (result.isSuccessful) {
//                                                        alert("رمز عبور به آدرس ایمیلتان ارسال شد");
//                                                        Membership._hide(true);
//                                                    }
//                                                    else {
//                                                        alert(result.errorMessage);
//                                                        $('#forgotPwdErrorsContainer').text(result.errorMessage).css({ color: '#ff0000', display: 'block' });
//                                                        $U.focus('forgotPwdEmail');
//                                                    }
//                                                }
//                                            };

//                                            $(form).ajaxSubmit(options);
//                                            return false;
//                                        }
//                                    }
//                                );

        },
        dispose: function() {
            Membership._clearCenterMeTimer();

            $('#membershipBox').unbind();
            $('#membershipClose').unbind();
            $('#lnkSignin').unbind();
            $('#lnkSignup').unbind();
        },
//        showSignin: function(redirectToPreviuos) {
//            Membership._redirectToPrevious = redirectToPreviuos;
//            $('#signupSection').hide();
//            $('#forgotPwdSection').hide();
//            $('#signinSection').show();
//            $('#signinMessage').text('');
//            $(':input', '#frmSignin')
//                 .not(':button, :submit, :reset, :hidden')
//                 .val('');
//            Membership._vsi.prepareForm();
//            Membership._vsi.hideErrors();
//            Membership._show();
//            $U.focus('txtSigninUserEmail');
//        },
//        showSignup: function() {
//            Membership._redirectToPrevious = false;
//            $('#signinSection').hide();
//            $('#forgotPwdSection').hide();
//            $('#signupSection').show();
//            $('#signupMessage').text('');
//            $(':input', '#frmSignup')
//                 .not(':button, :submit, :reset, :hidden')
//                 .val('')
//                 .removeAttr('checked')
//                 .removeAttr('selected');
//            Membership._vsu.prepareForm();
//            Membership._vsu.hideErrors();

//            Membership._show();
//            $U.focus('txtSignupFullName');
//        },
//        showForgotPwd: function(redirectToPreviuos) {
//            Membership._redirectToPrevious = redirectToPreviuos;
//            $('#signupSection').hide();
//            $('#signinSection').hide();
//            $('#forgotPwdSection').show();

//            Membership._vfp.prepareForm();
//            Membership._vfp.hideErrors();

//            Membership._show();
//            $U.focus('forgotPwdEmail');
//        },
        signout: function() {
            $.ajax(
                    {
                        url: Membership._logoutUrl,
                        type: 'POST',
                        dataType: 'json',
                        data: '__MVCASYNCPOST=true', // a fake param to fool iis for content-lenth
                        success: function(result) {
                            if (result.isSuccessful) {
                                window.location.reload();
                            }
                            else {
                                $U.alert('Error', result.errorMessage, true);
                            }
                        }
                    }
                );
        },
        _show: function() {
            $U.showModal();
            var modal = $('#membershipBox');
            $U.center(modal);
            modal.fadeIn();

            Membership._centerMe();

            modal.find('input').each(
                                        function() {
                                            var input = $(this)[0];
                                            var type = input.type.toLowerCase();

                                            if ((type == 'text') || (type == 'file') || (type == 'password')) {
                                                input.value = '';
                                            }
                                            else if ((type == 'checkbox') || (type == 'radio')) {
                                                input.checked = false;
                                            }
                                        }
                                    );

            $('span.error').hide();
            $('span.message').hide();
        },
        _hide: function(isSuccessful) {
            $U.disableInputs('#membershipBox', false);
            $U.hideProgress();
            Membership._clearCenterMeTimer();

            $('#membershipBox').fadeOut('normal', function() {
                $U.hideModal();

                if ((!isSuccessful) && (Membership._redirectToPrevious)) {
                    window.location = (document.referrer.length > 0) ? document.referrer : '/';
                }
            });
        },
        _centerMe: function() {
            var e = $('#membershipBox');

            $U.center(e);
            Membership._clearCenterMeTimer();
            Membership._centerMeTimer = setInterval(
                                                    function() {
                                                        Membership._centerMe();
                                                    },
                                                    2000
                                                );
        },
        _clearCenterMeTimer: function() {
            if (Membership._centerMeTimer != null) {
                clearInterval(Membership._centerMeTimer);
                Membership._centerMeTimer = null;
            }
        }
    };
