/*
 * Copyright (C) 2007 - 2011 MagicWeb.org. All rights reserved.
 *
 * @name    popup
 * @author   vativa
 * @version  1.1
 */

(function($) {

    $.fn.slideLoginModule = function(options) {
    	
        /**
		 * Default configuration properties
		 */
        var defaults = {
            closeTxt: 'Close'
        };

        /**
		 * Override defaults with options
		 */
        var opt = $.extend(defaults, options);
        
        /**
		 * Return the set of matched elements to maintain chainablilty
		 */
        return this.each(function(ind) {
            
            var $login = $(this);
            
            function initLoginModule() {
                
                // Add close button
                var $closeBtn = $('<a class="close_btn" href="/">' + opt.closeTxt + '</a>');
                $login.prepend($closeBtn);
                // Add button to trigger the animation
                var label = $login.find('div.purpose').text();
                var $triggerContainer = $('<div class="trigger_container"></div>');
                var $triggerBtn = $('<a class="trigger_btn" href="/login">' + label + '</a>');
                $triggerBtn.appendTo($triggerContainer);
                $login.after($triggerContainer);

                // Set event handlers to open/close the login slide
                $triggerBtn.click(function(e) {
                    e.preventDefault();
                    openLoginModule();
                });
                $closeBtn.click(function(e) {
                    e.preventDefault();
                    closeLoginModule();
                });
                
                function openLoginModule()
                {
                    $login.animate({
                        top: 0
                    }, 1000, function() {
                        $(this).find('input:text:first').focus();
                    }).focus();
                    $('a.trigger_btn').animate({
                        opacity: 0
                    }, 1000);
                    return false;
                }

                function closeLoginModule()
                {
                    $login.animate({
                        top: -($login.outerWidth() * 1.9)
                    }, 1000);
                    $('a.trigger_btn').animate({
                        opacity: 1
                    }, 1000);
                }
                
                var $submit = $login.find('input:submit');
                $submit.click(function(e) {
                    var $form = $(this).closest('form');
                    var url = $form.attr('action');
                    d(url);
                    $.ajax({
                        url: url + '/layout/ajax',
                        type: 'post',
                        data: $form.serializeArray(),
                        success: function(html) {
                            var pattern = /<\!DOCTYPE/i;
                            if (pattern.test(html)) {
                                window.location.reload(true);
                            } else {
                                $login.html(html);
                                // Initialize after AJAX loaded
                                initLoginModule();
                                $('a.trigger_btn').css({opacity: 0});
                            }
                        }
                    });
                    return false;
                });
            }
            
            // Initialize first time
            initLoginModule();
            
            // Set CSS
            $login.css({
                position: 'absolute',
                top: -($login.height() + 100)
            });

        });
        
    };

})(jQuery);
