锘?//
///
/*
* Function: Login
* Parameters: userName--username
* Pass--password
* Author: Li Jianfeng
* Time: 2016-3-18
*/
function FastLogin(userName, pass) {
/*
* Get username
*/
this.getUserName = function () {
return userName;
}
/*
* Get username
*/
this.getPass = function () {
return pass;
}
var _message = [];
/*
* Get tips
*/
this.getMessage = function () {
return _message;
}
/*
* log in
* Parameters: callbacks--callback function collection
* {
* vakidateFaild:function(message){}
* beginSignIn:function(){},
* signInSuccess:function(argument){},
* signInFaild:function(message){}
* }
* Argument--callback success parameter
*/
this.signIn = function (callbacks, argument) {
var success = validate();
if (!success) {
callbacks.validateFaild(_message);
return false;
}
callbacks.beginSignIn();
$.ajax({
url: "/UserProfile/MemberLogin.ashx",
data: { userName: userName, password: pass },
type: "Post",
dataType: "json",
success: function (data) {
if (data.status == true) {
callbacks.signInSuccess(argument);
}
else {
if (data.code == 0) {
//callbacks.signInFaild("Login failed, user name or password error");
callbacks.signInFaild("Incorrect user name or password. Please try again.");
} else if (data.code == -1) {
callbacks.signInFaild("Login failed, account status anomaly!");
}
}
},
error: function () {
callbacks.signInFaild("Login failed, login exception!");
}
});
return true;
}
/*
* verification
*/
validate = function () {
var success = true;
_message = [];
$("li[data-field='errormsg']").remove();
if (!userName) {
if (_message.length == 0) {
_message.push("user name cannot be empty");
}
$("#dv_login").find("input[data-field='username']").addClass("error");
success = false;
}
else {
$("#dv_login").find("input[data-field='username']").removeClass("error");
}
if (!pass) {
if (_message.length == 0) {
_message.push("password cannot be empty");
}
$("#dv_login").find("input[data-field='pass']").addClass("error");
success = false;
}
else {
$("#dv_login").find("input[data-field='pass']").removeClass("error");
}
return success;
}
}
/*
* Function: login view
* Parameters: $element--Login view parent element
* Author: Li Jianfeng
* Time: 2016-3-18
*/
function LoginView($element) {
var _callBack
/*
* log in
*Parameters: callBack--callback function
* Argument - the parameters of the callback function
*/
this.signIn = function (callBack, argument) {
var userName = $element.find(":text[data-field='username']").val();
var pass = $element.find(":password[data-field='pass']").val();
var login = new FastLogin(userName, pass);
_callBack = callBack;
login.signIn({ validateFaild: validateFaild, beginSignIn: beginSignIn, signInSuccess: signInSuccess, signInFaild: signInFaild }, argument);
}
/*
* Automatically populate username and password
*/
this.autoFill = function (userName, pass) {
$element.find(":text[data-field='username']").val(userName);
$element.find(":password[data-field='pass']").val(pass);
}
/*
* initialization
*/
this.init = function () {
$element.dialog({
modal: true,
width: "620px",
dialogClass: "noneframe",
open: function () {
$element.attr("class", "popbuy");
}
});
}
/*
* shut down
*/
this.close = function () {
var $ul = $element.find("ul[data-field='message']");
$ul.find("li").remove();
$element.dialog("close");
$("input[data-submit='true']").attr("disabled", false);
$("input[data-submit='true']").attr("style", "background:#e84e2b");
}
/*
* Set the callback function after successful login
* Parameters: argument - the parameters of the callback function
*/
signInSuccess = function (argument) {
var $ul = $element.find("ul[data-field='message']");
$ul.find("li").remove();
$element.dialog("close");
argument["isSigIn"] = true;
//Force refresh login token
$("[data-sigin]").attr("data-sigin", true);
if (_callBack) {
if (typeof (_callBack) == "function") {
_callBack(argument);
}
else {
if (Object.prototype.toString.call(_callBack) == "[object Array]") {
var len = _callBack.length;
for (var i = 0; i < len; i++) {
_callBack[i](argument);
}
}
}
}
}
/*
* verification failed
* Parameters: message--prompt information, array
*/
validateFaild = function (message) {
var shtml = '
!' + message.join("") + '
';
$("li[data-field='li_login']").before(shtml);
}
/*
* Start signing in
*/
beginSignIn = function () {
var $ul = $element.find("ul[data-field='message']");
$ul.find("li").remove();
//$ul.append("Login, please wait...");
$element.find(":button[data-field='submit']").prop("disabled", true);
}
/*
* Login failed
*/
//signInFaild = function (msg) {
// $("li[data-field='errormsg']").remove();
// var shtml = '!' + msg + '
';
// $("li[data-field='li_login']").before(shtml);
// $element.find(":button[data-field='submit']").prop("disabled", false);
//}
signInFaild = function (msg) {
$("li[data-field='errormsg']").remove();
$(".lop").remove();
var shtml = '' + msg + '
';
$("ul[data-field='ul_login']").before(shtml);
$element.find(":button[data-field='submit']").prop("disabled", false);
}
}
/*
* Generate a login view object
* Parameters: $element---Login view parent element
* callBack--callback function after successful login
* Argument--parameters of the tuning function after successful login
*/
function buildLoginView($element, callBack, argument) {
var loginView = new LoginView($element);
var $sender = $element.find(":button[data-field='submit']");
$sender.unbind("click");
//Bind login event
$sender.click(function () {
loginView.signIn(callBack, argument);
});
//Bind login close event
var $close = $element.find("b[data-field='close']");
$close.unbind("click");
$close.click(function () {
loginView.close();
});
var $register = $element.find("a[data-field='fast-register']");
$register.unbind("click");
$register.click(function () {
var fastRegisterView = new buildRegisterView($("#dv_register"), null, null);
fastRegisterView.init([loginView.signIn, loginView.autoFill], { callBack: callBack, arguments: argument });
});
return loginView;
}