//MILAD
;(function($) {
    $.fn.login = function(conf) {
        
        var defaultConf = {
            formDivId: 'loginForm',
            recoveryFormDivId: 'recoveryForm',
            messagesDivId: 'loginMessages',
            loadingDivClass: 'loginLoading',
            url:    '/login/login',
            toggle: true
        };
        $.extend(defaultConf, conf);
        
        
        $('#' + defaultConf.formDivId).find("form").submit(function() {
            $('#' + defaultConf.messagesDivId).empty();
            $(this).find('.' + defaultConf.loadingDivClass + ' > img').show();
            
            var formData = $(this).serialize();
            
            var elmenet = this;
            $.post($(this).attr('action'), formData, function(data) { loginReponse(data, elmenet) }, 'json');
            
            return false;
        });
        
        $('#' + defaultConf.recoveryFormDivId).find("form").submit(function() {
            $('#' + defaultConf.messagesDivId).empty();
            $(this).find('.' + defaultConf.loadingDivClass + ' > img').show();
            
            var formData = {};
            formData.email = $(this).find('input[name=email]').val();
            
            var elmenet = this;
            $.post($(this).attr('action'), formData, function(data) { recoveryReponse(data, elmenet) }, 'json');
            
            return false;
        });
        
        function loginReponse(data, elmenet)
        {
            $(elmenet).find('.' + defaultConf.loadingDivClass + ' > img').hide();
            
            if(data.success) {
//                window.location = data.url;
                window.location.reload();
            } else {
                if(typeof(data.message) == 'string') {
                    $('#' + defaultConf.messagesDivId).append(data.message);
                } else {
                    $(data.message).each(function() {
                        $('#' + defaultConf.messagesDivId).append(this.badCombo + ', ');
                    });
                }
                
                
                if(defaultConf.toggle) {
                    $('#' + defaultConf.messagesDivId).append('<a href="#" id="reloadLoginForm" style="color:white; text-decoration:underline; margin-left:50px;">try again</a>');
                    
                    $('#' + defaultConf.formDivId).slideUp('fast', function() {
                        $('#' + defaultConf.messagesDivId).slideDown('fast');
                    });
                } else {
                    $('#' + defaultConf.messagesDivId).slideDown('fast');
                }
            }
        }
        
        function recoveryReponse(data, element)
        {
            $(element).find('.' + defaultConf.loadingDivClass + ' > img').hide();
            
            if(typeof(data.message) == 'string') {
                $('#' + defaultConf.messagesDivId).append(data.message);
            } else {
                $(data.message).each(function() {
                    $('#' + defaultConf.messagesDivId).append(this.badCombo + ', ');
                });
            }
            
            
            if(defaultConf.toggle) {
                $('#' + defaultConf.messagesDivId).append('<a href="#" id="reloadLoginForm" style="color:white; text-decoration:underline;  margin-left:50px;">' + backToLogin + '</a>');

                $('#' + defaultConf.recoveryFormDivId).slideUp('fast', function() {
                    $('#' + defaultConf.messagesDivId).slideDown('fast');
                });
            } else {
                $('#' + defaultConf.messagesDivId).slideDown('fast');
            }
        }
        
        $('#reloadLoginForm').live('click', function() {
            $('#' + defaultConf.messagesDivId).slideUp('fast', function() {
                $('#' + defaultConf.formDivId).slideDown('fast');
            });
            
            return false;
        });
        
        $('#reloadLoginFormFromRecovery').live('click', function() {
            $('#' + defaultConf.recoveryFormDivId).slideUp('fast', function() {
                $('#' + defaultConf.formDivId).slideDown('fast');
            });
            
            return false;
        });
        
        $('#recoveryLink').live('click', function() {
            $('#' + defaultConf.formDivId).slideUp('fast', function() {
                $('#' + defaultConf.recoveryFormDivId).slideDown('fast');
            });
            
            return false;
        });

    };
 })(jQuery);
//EOF