var registerType = 0; function FastRegister(userName, pass, confirPass, companyName, nameOfPerson, mobile, email) { /* * Get username */ this.setUserName = 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.save = function (callbacks, argument) { var success = validate(); if (!success) { callbacks.validateFaild(_message); return false; } callbacks.beginRegister(); $.ajax({ url: "/UserProfile/PurchaseHelper/Tools/FasetRegisterGlobal.ashx", data: { userName: userName, password: pass,companyName:companyName,nameOfPerson:nameOfPerson,mobile:mobile,email:email,registertype:registerType }, type: "Post", dataType: "text", success: function (data) { if (data == "Success") { argument.arguments["userName"] = userName; argument.arguments["pass"] = pass; callbacks.registerInSuccess(argument); } else if (data == "Repeater") { if (registerType==0) { callbacks.registerInFaild("Sorry, the mailbox is registered."); } else { callbacks.registerInFaild("Sorry, the phone is registered."); } } else { callbacks.registerInFaild(data); } }, error: function () { callbacks.registerInFaild("Registration failed, please try later."); } }); return true; } /* * verification */ validate = function () { $("li[data-field='errormsg']").remove(); _message = []; var success = true; if (registerType==0) { if (!userName) { if (_message.length == 0) { _message.push("Please fill in the username."); } $("#dv_register").find("input[data-field='email']").addClass("error"); success = false; } else { var emailPatter = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i; if (!emailPatter.test(userName)) { if (_message.length == 0) { _message.push("Incorrect username format."); } $("#dv_register").find("input[data-field='email']").addClass("error"); success = false; } else { $("#dv_register").find("input[data-field='email']").removeClass("error"); } } } else { if (!userName) { if (_message.length == 0) { _message.push("Please fill in the username."); } $("#dv_register").find("input[data-field='contect-mibile']").addClass("error"); success = false; } else { $("#dv_register").find("input[data-field='contect-mibile']").removeClass("error"); } } if (!pass) { success = false; $("#dv_register").find("input[data-field='password']").addClass("error"); if (_message.length == 0) { _message.push("Please fill in the password."); } } else { //6-20 characters (a-z, 0-9, underline) var passPatter = /^[a-zA-Z0-9_]{6,20}$/; if (!passPatter.test(pass)) { $("#dv_register").find("input[data-field='password']").addClass("error"); if (_message.length == 0) { _message.push("Password consists of 6-20 characters (A-Z, 0-9, underline)."); } success = false; } else { if (!confirPass) { $("#dv_register").find("input[data-field='confirm-password']").addClass("error"); if (_message.length == 0) { _message.push("Please fill in the confirmation password."); } success = false; } else { if (confirPass != pass) { $("#dv_register").find("input[data-field='confirm-password']").addClass("error"); if (_message.length == 0) { _message.push("Passwords don't match."); } success = false; } else { $("#dv_register").find("input[data-field='password']").removeClass("error"); $("#dv_register").find("input[data-field='confirm-password']").removeClass("error"); } } } } if (!companyName) { $("#dv_register").find("input[data-field='company-name']").addClass("error"); if (_message.length == 0) { _message.push("Please fill in the name of the company."); } success = false; } else { $("#dv_register").find("input[data-field='company-name']").removeClass("error"); } if (!nameOfPerson) { success = false; $("#dv_register").find("input[data-field='contect-name']").addClass("error"); if (_message.length == 0) { _message.push("Please fill in the contact."); } } else { $("#dv_register").find("input[data-field='contect-name']").removeClass("error"); } if (registerType==0) { if (!mobile) { success = false; $("#dv_register").find("input[data-field='contect-mibile']").addClass("error"); if (_message.length == 0) { _message.push("Please fill in the phone."); } } else { if (mobile.length == 0) { $("#dv_register").find("input[data-field='contect-mibile']").addClass("error"); if (_message.length == 0) { _message.push("Phone number can not be empty."); } success = false; } else { $("#dv_register").find("input[data-field='contect-mibile']").removeClass("error"); } if (mobile.length > 20) { $("#dv_register").find("input[data-field='contect-mibile']").addClass("error"); if (_message.length == 0) { _message.push("Invalid phone number.");; } success = false; } else { $("#dv_register").find("input[data-field='contect-mibile']").removeClass("error"); } } } else { if (!email) { if (_message.length == 0) { _message.push("Please fill in the mailbox."); } $("#dv_register").find("input[data-field='email']").addClass("error"); success = false; } else { var emailPatter = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i; if (!emailPatter.test(email)) { if (_message.length == 0) { _message.push("Incorrect mailbox format."); } $("#dv_register").find("input[data-field='email']").addClass("error"); success = false; } else { $("#dv_register").find("input[data-field='email']").removeClass("error"); } } } return success; } } function FastRegisterView($element) { var _callBack; var _argument; /* * registered *Parameters: callBack--callback function * Argument - the parameters of the callback function */ this.register = function () { var userName = ""; if (registerType===0) { userName = $element.find(":text[data-field='email']").val(); } else { userName = $element.find(":text[data-field='contect-mibile']").val(); } var pass = $element.find(":password[data-field='password']").val(); var passConfig = $element.find(":password[data-field='confirm-password']").val(); var companyName = $element.find(":text[data-field='company-name']").val(); var contactName = $element.find(":text[data-field='contect-name']").val(); var contactMobile = $element.find(":text[data-field='contect-mibile']").val(); var email = $element.find(":text[data-field='email']").val(); var register = new FastRegister(userName, pass, passConfig, companyName, contactName, contactMobile,email); register.save({ validateFaild: validateFaild, beginRegister: beginRegister, registerInSuccess: registerInSuccess, registerInFaild: registerInFaild }, _argument); } /* * initialization */ this.init = function (callBack, argument) { _callBack = callBack; _argument = argument; $element.dialog({ modal: true, width: "620px", dialogClass: "noneframe", open: function () { $element.attr("class", "popbuy"); } }); $element.find("a[data-field='sigin']").click(function () { $element.dialog("close"); }); } /* * shut down */ this.close = function () { var $ul = $element.find("ul[data-field='message']"); $ul.find("li").remove(); $element.dialog("close"); } /* * Set the callback function after successful registration * Parameters: argument - the parameters of the callback function */ registerInSuccess = function (argument) { var $ul = $element.find("ul[data-field='message']"); $ul.find("li").remove(); $element.dialog("close"); if (_callBack) { if (typeof (_callBack) == "function") { _callBack(argument); } else { if (Object.prototype.toString.call(_callBack) == "[object Array]") { var len = _callBack.length if(len==2) { _callBack[1](argument.arguments.userName, argument.arguments.pass); _callBack[0](argument.callBack, argument.arguments); } } } } } /* * verification failed * Parameters: message--prompt information, array */ validateFaild = function (message) { var shtml = '
  • !' + message.join("") + '
  • '; $("#li_register").before(shtml); } /* * Start registration */ beginRegister = function () { var $ul = $element.find("ul[data-field='message']"); $ul.find("li").remove(); $ul.append("
  • To register, please wait...
  • "); $element.find(":button[data-field='regisiter']").prop("disabled", true); } /* * registration failed */ registerInFaild = function (message) { var $ul = $element.find("ul[data-field='message']"); $ul.find("li").remove(); $ul.append("
  • " + message + "
  • "); $element.find(":button[data-field='regisiter']").prop("disabled", false); } } /* * Generate a registration view object * Parameters: $element---Login view parent element * callBack--callback function after successful login * Argument--parameters of the tuning function after successful login */ function buildRegisterView($element, callBack, argument) { var fastRegisterView = new FastRegisterView($element); var $sender = $element.find(":button[data-field='regisiter']"); $sender.unbind("click"); //Bind login event $sender.click(function () { fastRegisterView.register(callBack, argument); }); //Bind registration close event var $close = $element.find("b[data-field='close']"); $close.unbind("click"); $close.click(function () { fastRegisterView.close(); }); $element.find("a[data-field='switch']").unbind("click"); $element.find("a[data-field='switch']").click(function () { if (registerType == 0) { $("li[data-field='password']").before($("li[data-field='phone']")); $("li[data-field='name']").after($("li[data-field='email']")); $("span[data-field='phone_title']").text("UserName:"); $("span[data-field='email_title']").text("Email:"); registerType = 1; $("a[data-field='switch']").text("Email"); $("div[data-field='email_tip']").hide(); $("div[data-field='mobile_tip']").show(); } else { $("li[data-field='password']").before($("li[data-field='email']")); $("li[data-field='name']").after($("li[data-field='phone']")); $("span[data-field='email_title").text("UserName:"); $("span[data-field='phone_title']").text("Mobile phone:"); registerType = 0; $("a[data-field='switch']").text("Phone"); $("div[data-field='email_tip']").show(); $("div[data-field='mobile_tip']").hide(); } }); return fastRegisterView; }