﻿/// <summary>
/// FileName : Default.aspx.js
/// Author : 
/// Description : Default.aspx页面的后台Ajax脚本
/// </summary>

/// <summary>
/// 将各种控件生命为全局变量，方便调用
/// </summary>
var tbUserName;//用户名文本框
var tbPassword;//密码文本框
var tbSafeCode;//验证码文本框
var btnLogin;//登录按钮
var btnClose;//取消按钮
var loginResult;//显示登录操作结果的信息面板
var lbLogin;//登录操作面板
var mask;//模态窗体

/// <summary>
/// 其他全局变量
/// </summary>
var currentUser;//记录当前登录用户的用户实体类

/// <summary>
/// 页面加载时执行
/// </summary>
Sys.Application.add_init(onPageInit);

function onPageInit() {
    /// <summary>
    /// 图片预加载
    /// </summary>
    var imgLoginHead = new Image();
    var imgLoadingSmall = new Image();
    var imgSafeCode = new Image();
    imgLoginHead.src = "Images/head_login.gif";
    imgLoadingSmall.src = "Icons/loading_small.gif";
    
    /// <summary>
    /// 创建客户端控件
    /// </summary>
    tbUserName=$create(Sys.Preview.UI.TextBox,null,null,null,$get("tbUserName"));
    tbPassword=$create(Sys.Preview.UI.TextBox,null,null,null,$get("tbPassword"));
    tbSafeCode=$create(Sys.Preview.UI.TextBox,null,null,null,$get("tbSafeCode")); 
    btnLogin=$create(Sys.Preview.UI.HyperLink,null,null,null,$get("btnLogin"));
    btnClose=$create(Sys.Preview.UI.HyperLink,null,null,null,$get("btnClose"));
    loginResult=$create(NBBS.CustomControl.InformationPanel,{loadingIcon: "Icons/loading_small.gif"},null,null,$get("loginResult"));
    lbLogin=$create(Sys.Preview.UI.Label,null,null,null,$get("login"));
    mask=$create(NBBS.CustomControl.MaskWindow,{windowElement: $get("loginWindow"),windowWidth: 350,windowHeight: 250},null,null,$get("mask"));
    $create(NBBS.CustomBehavior.DragBehavior,{dragElement: $get("loginWindow")},null,null,$get("loginWindowHead"));
    
    /// <summary>
    /// 创建事件监听
    /// </summary>
    btnLogin.add_click(btnLogin_onClick);
    btnClose.add_click(btnClose_onClick);
    $addHandler($get("imgSafeCode"),"mousedown",imgSafeCode_onMouseDown);
    
    /// <summary>
    /// 根据Session信息，获取当前登录的用户信息
    /// </summary>
    UserPL.GetCurrentUserInfo(onGetCurrentUserInfoSucceeded);
}

/// <summary>
/// hlLogin单击处理函数
/// 显示登录窗口
/// </summary>
function hlLogin_onClick() {
    mask.show();
}

/// <summary>
/// hlLogout单击处理函数
/// 注销登录
/// </summary>
function hlLogout_onClick() {
    UserPL.Logout(onLogoutSucceeded);
}

/// <summary>
/// btnLogin单击处理函数
/// 用户登录
/// </summary>
function btnLogin_onClick() {
    loginResult.showProcess();
    UserPL.Login(tbUserName.get_text(),tbPassword.get_text(),tbSafeCode.get_text(),onLoginSucceeded,onLoginFailed);
}

/// <summary>
/// btnClose单击处理函数
/// 关闭登录窗口
/// </summary>
function btnClose_onClick() {
    mask.hide();
    loginWindowReset();
}

/// <summary>
/// imgSafeCode单击处理函数
/// 更新验证码
/// </summary>
function imgSafeCode_onMouseDown() {
    $get("imgSafeCode").src = "SafeCode.aspx?stamp=" + new Date().getTime();
}

/// <summary>
/// 取得当前用户信息完成后的回调函数
/// </summary>
function onGetCurrentUserInfoSucceeded(response) {
    if(response == null)
    {
        showUnlogined();
    }
    else
    {
        currentUser = response;
        showLogined();
    }
}

/// <summary>
/// 登录操作完成后的回调函数
/// </summary>
function onLoginSucceeded(response) {
    var user = response;
    if(user == null)
    {
        loginResult.set_errorMessage("用户不存在或密码不正确，登录失败");
        loginResult.showError();
    }
    else if(response.Name == null)
    {
        loginResult.set_errorMessage("验证码错误，请检查");
        loginResult.showError();
    }
    else
    {
        currentUser = user;
        showLogined();
        mask.hide();
        loginWindowReset();
    }
}

/// <summary>
/// 登录操作异常处理
/// </summary>
function onLoginFailed(error) {
    loginResult.set_errorMessage("登录失败，发生内部错误，请与管理员联系");
    loginResult.showError();
}

/// <summary>
/// 注销操作完成后的回调函数
/// </summary>
function onLogoutSucceeded(response) {
    Sys.UI.DomElement.removeCssClass(lbLogin.get_element(), "login_logined");
    Sys.UI.DomElement.addCssClass(lbLogin.get_element(), "login_unlogined");
    lbLogin.get_element().innerHTML = "<a id=\"hlLogin\" href=\"javascript:void(0);\">您当前的身份是游客，请点击这里登录</a>";
    $addHandler($get("hlLogin"),"click",hlLogin_onClick);
}

/// <summary>
/// 将登录信息面板设置为未登录状态
/// </summary>
function showUnlogined() {
    Sys.UI.DomElement.removeCssClass(lbLogin.get_element(), "login_logined");
    Sys.UI.DomElement.addCssClass(lbLogin.get_element(), "login_unlogined");
    lbLogin.set_text("<a id=\"hlLogin\" href=\"javascript:void(0);\">您当前的身份是游客，请点击这里登录</a>");
    $addHandler($get("hlLogin"),"click",hlLogin_onClick);
}

/// <summary>
/// 将登录信息面板设置为已登录状态
/// </summary>
function showLogined() {
    Sys.UI.DomElement.removeCssClass(lbLogin.get_element(), "login_unlogined");
    Sys.UI.DomElement.addCssClass(lbLogin.get_element(), "login_logined");
    var stringBuilder = new Sys.StringBuilder();
    stringBuilder.append("已登录&nbsp;&nbsp;&nbsp;&nbsp;");
    stringBuilder.append("<font color=\"#006699\">");
    stringBuilder.append(currentUser.Name);
    stringBuilder.append("</font>");
    stringBuilder.append("&nbsp;&nbsp;&nbsp;&nbsp;");
    stringBuilder.append("身份：");
    stringBuilder.append(currentUser.Status);
    stringBuilder.append("&nbsp;&nbsp;&nbsp;&nbsp;");
    stringBuilder.append("状态：");
    stringBuilder.append(currentUser.State);
    stringBuilder.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
    stringBuilder.append("<a id=\"hlLogout\" href=\"javascript:void(0);\">");
    stringBuilder.append("退出登录");
    stringBuilder.append("</a>");
    lbLogin.set_text(stringBuilder.toString());
    $addHandler($get("hlLogout"),"click",hlLogout_onClick);
}

/// <summary>
/// 登录窗口初始化
/// </summary>
function loginWindowReset() {
    loginResult.hide();
    tbUserName.set_text("");
    tbPassword.set_text("");
    tbSafeCode.set_text("");
}

if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();