﻿/*=================================================================
*  文件：logindialog.js
*  创建者：田真
*  创建日期：2010-2-15
*  最后修改：（楼下请注意保持队形）
*  ##############################################################
*  时间          修改人                      备注
*  ##############################################################
* ================================================================*/

var log_insts = {};
var LoginDialog = function () {

    this.isInitialized = false;

    $.extend(this, {
        load: function (e) {
            if (!this.isInitialized) {
                this.dialog = e.dialog;
                this.trigger = e.tigger;
                this.template = this.dialog.template;

                this.__init__();
                this.isInitialized = true;
            }
        },
        __init__: function () {
            this.error = this.template.container.find('.Tips-FormTips');
            this.error.hide();

            this.errorDiv = this.template.container.find('#Tips-Div');
            this.errorDiv.hide();

            this.closer = this.template.container.find('.cancel');
            this.closer.bind('click', { handle: this }, this._close);

            this.submit = this.template.container.find('.submit');
            this.submit.bind('click', { handle: this }, this._submit);

            this.uname = this.template.container.find('#uname');
            this.upwd = this.template.container.find('#upwd');
        },
        showError: function (html) {
            this.error.show();
            this.errorDiv.show();
            this.error.html(html);
        },
        hideError: function () {
            this.error.hide();
            this.errorDiv.hide();
            this.error.html('');
        },
        _close: function (e) {
            e.data.handle.dialog.close();
        },
        _submit: function (e) {
            e.data.handle._submitForm();
        },
        _submitForm: function () {
            //            if (this.uname.val() == '') {
            //                return false;
            //            }
            //            if (this.upwd.val() == '') {
            //                return false;
            //            }

            this.hideError();

            var url = location.href.toLowerCase();
            var handle = this;
            $.post('/Asmx/Login/Login.ashx?cmd=login', { uname: this.uname.val(), upwd: this.upwd.val() }, function (e) {
                if (e != 'true') {
                    handle.showError(e);
                } else {
                    //登录成功，刷新一下页面
                    if (url.indexOf('/manage/') == -1) {
                        // 在管理中心之外使用本组件登录，刷新页面
                        location.reload(true);
                    } else {
                        // 关闭对话框
                        // 否则不刷新
                        handle.dialog.close();
                    }
                }
            }, 'html');
        }
    });
};

// extend logindialog template
LoginDialog.Template = function (dialog) {
    this.dialog = dialog;
    $.extend(this, new Dialog.Template(dialog));
    this.container = $('<div class="popWin" id="logindialog" style="position:absolute;left:0;top:0;width:340px;display:none;">\
	                                            <div class="head">\
		                                            <span class="title">登录或免费注册</span>\
		                                            <a class="close"></a>\
	                                            </div>\
	                                            <div class="body">\
		                                            <div class="ts1">\
			                                            <div class="tsTit">\
				                                            <div class="fl _dic_login">登录</div>\
				                                            <div class="fr"><a href="/Join/JoinStepOne.aspx" class="_dic_reg">免费注册</a></div>\
			                                            </div>\
			                                            <div class="tsCnt">\
				                                            <table><tbody>\
				                                            <tr><th><span class="req">*</span><font class="_dic_uname">用户名</font>:</th><td><input type="text" id="uname" class="txt" /></td></tr>\
				                                            <tr><th><span class="req">*</span><font class="_dic_upwd">密码</font>:</th><td><input type="password" id="upwd" class="txt" />\
					                                            <div id="Tips-Div" style="display:none"><span class="Tips-FormTips err">用户名密码错误!</span></div>\
					                                            <a href="/Pages/User/FindPassword.aspx" class="fgtpas _dic_getpwd">忘记密码?</a>\
				                                            </td></tr>\
				                                            </tbody></table> \
			                                            </div>\
		                                            </div>\
	                                            </div>\
	                                            <div class="foot">\
		                                            <a class="btn submit" href="javascript:;"><span class="ico"></span><span class="label _ok">OK</span><span class="r"></span></a>\
		                                            <a class="btn cancel" href="javascript:;" style="display:none;"><span class="ico"></span><span class="label _cancel">Cancel</span><span class="r"></span></a>\
	                                            </div>\
                                            </div>');
    var handle = this;
    this.container.find('.txt').keydown(function (e) {
        if (e.keyCode == 13) {
            handle.container.find('.submit').click();
        }
    });
};

/*
    使用说明：
    $('input').login();
    $('a').login();
    $('.login').login();
*/
(function ($) {

    var instances = [], rawInstances = [];
    var logindialog = false;
    // 登录对象
    function Login(rawTrigger, conf) {
        var self = this,
        // 获取触发对象
            trigger = $(rawTrigger),
        // 超链接事件托管
            href = trigger.attr('href'),
        // 控件的单击事件托管
            click = trigger.attr('onclick'),
            submit = null,
        // 是否是form标签，
            isForm = trigger.attr('tagName') == 'FORM',
        // 是否是input标签，对于input标签要特殊处理（当input是.NET服务端控件时）
            isInput = trigger.attr('tagName') == 'INPUT',
        // 获取时间
            evtName = isForm ? 'submit' : 'click',
        // 提取绑定事件
            bind = resloveBindEvents(rawTrigger, evtName);

        // 清除并托管事件
        if (href) {
            trigger.attr('href', 'javascript:;');
        }
        if (click) {
            trigger.attr('onclick', 'return false;');
        }
        if (isInput) {
            trigger.bind('click', empty);
        }
        if (isForm) {
            trigger.submit(function () {
                alert('submit');
                //self.load(e);
                return false;
            });
        } else {
            trigger.click(function (e) {
                self.load(e);
            });
        }

        $.extend(self, {
            // 触发原始事件
            fireRawEvents: function () {
                if (isInput) {
                    // 如果是input控件需要特殊处理
                    trigger.unbind('click');
                } else if (isForm) {
                    trigger.unbind('submit');
                }
                if (click) {
                    click();
                } else if (href) {
                    if (href.indexOf('javascript:') > -1) {
                        eval(href);
                    } else {
                        location.href = href;
                    }
                } else if (isInput) {
                    trigger.click();
                } else if (isForm) {
                    trigger.submit();
                }
                if (bind) {
                    // 托管的绑定有效
                    for (var i in bind)
                        bind[i]();
                }
            },
            load: function (e) {
                $.post('/asmx/user/Checkuserinfo.ashx', { tp: 'stat' }, function (text) {
                    //alert('text = ' + text);
                    if (text == '1') {
                        // 已登录
                        // 触发原始事件
                        self.fireRawEvents();
                    }else if(text=="2"){                    
                        //提示未审核    
                                    ShowMsgTip({ tip: g_lang_User_Notapproved_notice2,
                icon: "diWarning",
                title: g_lang_OP_1,
                okayBtn: { show: true, text: g_lang_28, disabled: false }
            });
                    } 
                    else {
                        // 未登录
                        // 创建登录框
                        createLoginDialog(conf);
                        // 激活登录框
                        trigger.data('overlay').load()
                    }
                });
            }
        });

    };

    // 提取对象中绑定的事件
    // @elem 必须是原始的DOM对象
    function resloveBindEvents(elem, evt) {
        evt = evt || 'click';
        var elemData = jQuery.data(elem);
        // 只处理绑定的click事件
        if (elemData && elemData.events && elemData.events[evt]) {
            var handlers = [];
            var events = elemData.events[evt];
            if (events && events.length > 0) {
                for (var index in events) {
                    handlers.push(events[index].handler);
                }
                // 移除事件绑定，由本对象托管
                $(elem).unbind(evt);
                // 返回托管的函数
                return handlers;
            }
        }
        return false;
    };

    function createLoginDialog(conf) {
        // 已经初始化过了
        if (logindialog) {
            return;
        }

        conf = conf || {};

        logindialog = new Dialog(rawInstances, {
            templateObj: LoginDialog.Template,
            texts: conf.texts || {}
        });
    };

    // 表示一个空处理
    function empty() {
        return false;
    };

    $.fn.login = function (conf) {

        var el = this.data('login');
        if (el) {
            return el;
        }

        this.each(function () {
            var self = $(this);

            // 设置登录所需的标签属性
            self.attr('rel', '#logindialog');
            self.attr('external', 'LoginDialog');

            // 实例化Login对象
            el = new Login(this, conf);
            // 缓存该实例
            self.data('login', el);
            // 添加到实例集合中
            instances.push(el);
            rawInstances.push(this);
        });

        return this;

    };


})(jQuery);
