{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./js/hao_base.js","webpack:///./js/hao_enum.js","webpack:///./js/hao_htmlmaker.js","webpack:///./js/hao_ui.js","webpack:///./js/hao_bi.js","webpack:///./js/hao_countdown.js","webpack:///./js/hao_search.js","webpack:///./js/hao_slide.js","webpack:///./js/hao_scrollnumber.js","webpack:///./js/hao_isact.js","webpack:///./js/hao_getsingleicon.js","webpack:///./js/hao_giftlist.js","webpack:///./js/hao_notelist.js","webpack:///./js/hao_clipboard.js","webpack:///./js/hao_user.js","webpack:///./js/hao_dialog.js","webpack:///./js/hao_tip.js","webpack:///./js/hao_msg.js","webpack:///./js/hao_pop_wx.js","webpack:///./js/hao_validator.js","webpack:///./js/hao_subscribe.js","webpack:///./js/hao_questionnaire.js","webpack:///./js/hao_userform.js","webpack:///./js/hao_captcha.js","webpack:///./js/captcha/cn.js","webpack:///./js/captcha/en.js","webpack:///./js/captcha/sms.js","webpack:///./js/captcha/tencent.js","webpack:///./js/captcha/upsms.js","webpack:///./js/captcha/voice.js","webpack:///./js/hao_digger.js","webpack:///./js/hao_supply.js","webpack:///./js/hao_processer.js","webpack:///./js/hao_sender.js","webpack:///./js/sender/direct.js","webpack:///./js/sender/egg.js","webpack:///./js/sender/lottery.js","webpack:///./js/sender/unloginLottery.js","webpack:///./js/sender/yao.js","webpack:///./js/hao_exchange.js","webpack:///./js/hao_trackevents.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","$","window","haoInitialized","ua","hao","extend","apply","this","arguments","util","uuid","chars","split","Array","rnd","Math","random","join","getByteLen","val","len","length","charAt","match","round","loadCss","css","id","head","document","getElementsByTagName","style","createElement","setAttribute","type","styleSheet","cssText","appendChild","createTextNode","link","rel","href","loadScript","scripts","callback","HEAD","documentElement","last","recursiveLoad","onload","onreadystatechange","all","readyState","parentNode","removeChild","checkOpen","cb","_clickTime","Date","intHandle","_count","setInterval","elsTime","clearInterval","hidden","webkitHidden","check","getTinyLink","url","templateId","dtd","Deferred","ajax","dataType","data","template","done","status","resolve","tinylinkUrl","fail","promise","getUrlParams","location","search","indexOf","strs","substr","item","decodeURIComponent","isFromQr","qr","isPC","navigator","userAgent","toLowerCase","agents","flag","isAndroid","test","isWexinQQBrowser","isInApp","cookie","setCookie","expires","domain","cookieString","escape","date","setTime","getTime","toGMTString","getCookie","arr","reg","RegExp","unescape","initializing","fnTest","xyz","Class","subClassName","prop","firstLetter","toUpperCase","Error","base","fn","tmp","ret","_Class","init","constructor","callee","jQuery","_hao","ENUM_VAR","PCGAME_CLASS_ID","SHOUYOU_CLASS_ID","YEYOU_CLASS_ID","DIRECT_SEND_KIND","LOTTERY_SEND_KIND","EGG_SEND_KIND","YAO_SEND_KIND","UNLOGIN_LOTTERY_SEND_KIND","THIRD_PARTY_SEND_KIND","TENCENT_CAPTCHA_TYPE","SMS_CAPTCHA_TYPE","CN_CAPTCHA_TYPE","EN_CAPTCHA_TYPE","UPSMS_CAPTCHA_TYPE","VOICE_CAPTCHA_TYPE","ZERO_CLIPBOARD_SWF","GEETEST_CAPTCHA_JS","GEETEST_CAPTCHA_ID","YEYOU_GEETEST_CAPTCHA_ID","TENCENT_CAPTCHA_ID","TENCENT_CAPTCHA_JS","SMS_COOLDOWN","VOICE_COOLDOWN","UPSMS_COOLDOWN","MOBILE_BIND_URL","CHANGE_MOBILE_BIND","EMAIL_BIND_URL","CHANGE_EMAIL_BIND","UPSMS_STATUS_UPDATE_STEP","MY_GIFT_URL","MY_SCHE_URL","MY_ACT_URL","APP_LOGIN_URL","ENUM_PROXY","SCROLL_STATUS","SITE_LOGIN","SITE_LOGOUT","IS_LOGIN","SEARCH_SC","CHECK_HAO","GRAB_HAO","TAO_HAO","SUPPLY_HAO","SUPPLY_EMAIL","EN_CAPTCHA","SMS_CAPTCHA","SMS_BIND_CAPTCHA","VOICE_CAPTCHA","UPSMS_CAPTCHA","IS_UPSMS_RECEIVED","SCHE_GAME","SCHE_BIND_EMAIL","YAO_TAKEPART_LIST","YAO_AWARD_LIST","LOTTERY_TAKEPART_LIST","LOTTERY_AWARD_LIST","SAVE_USER_INFO","EXCHANGE_GIFT_INFO","EXCHANGE_USER_INFO","EXCHANGE_SAVE_USER_INFO","EXCHANGE_GIFT","ENUM_MSG","COPY_SUCCESS","COPY_NOT_ALLOWED","MOBILE_HAS_BOUND","CAPTCHA_ERROR","SMS_CAPTCHA_SENT","VOICE_CAPTCHA_SENT","UPSMS_NOT_RECEIVED","UPSMS_RECEIVED","CAPTCHA_EXPIRED","CAPTCHA_WRONG","UPSMS_CAPTCHA_COUNT_DOWN","PC_INVALID","GRAB_SUCCESS_SUB","GRAB_SUCCESS_SUB2","YAO_SUCCESS","YAO_FAIL","YAO_NOT_PREPARE","YAO_NOT_OPEN","YAO_SUCCESS_TODAY","YAO_SUCCESS_TOMORROW","YAO_FAIL_TODAY","YAO_FAIL_TOMORROW","YAO_SUCCESS_SUB","ACCOUNT_FROZEN_TITLE","ACCOUNT_FROZEN","ACCOUNT_FROZEN_SUB","ACT_SUCCESS_TITLE","ACT_SUCCESS","ACT_ALREADY_TITLE","ACT_ALREADY","ACT_ALREADY_TODAY","ACT_SUCCESS_SUB","UNLOGIN_LOTTERY_SUCCESS_SUB","SCHE_TIP_WITH_EMAIL","SCHE_TIP_WITHOUT_EMAIL","HAO_INVALID","HAO_NOT_START_YET","HAO_EMPTY","HAO_EMPTY_SUB","HAO_END","HAO_END_THIS_TURN","HAO_WAIT_NEXT_TURN","WAIT_TIME_SUB","WAIT_SECOND_SUB","TOO_FREQ","NO_CHANCE","IP_NO_CHANCE","SUBSCRIBE_GAMECODE_INVALID","SUBSCRIBE_SUCCESS","SUBSCRIBE_SUCCESS_SUB","SUBSCRIBE_SUCCESS_SUB_NO_EMAIL","SUBSCRIBE_ERROR","SUBSCRIBE_FAIL","CANCEL_SUBSCRIBE","CANCEL_SUBSCRIBE_SUB","SUBSCRIBE_CANCEL_SUCCESS","SUBSCRIBE_CANCEL_FAIL","NOT_SUBSCRIBE_YET","BIND_EMAIL_SUCCESS","BIND_EMAIL_SUCCESS_SUB","BIND_INFO_SUCCESS","BIND_INFO_SUCCESS_SUB","BIND_INFO_FAIL","BIND_EMAIL_FAIL","GAME_INVALID","USER_INFO_TITLE","USER_INFO_TITLE_SUB","HAS_EMPTY_FIELD","SAVE_USER_INFO_SUCCESS","SAVE_USER_INFO_FAIL","QUESTION_NOT_FINISH","QUESTION_NOT_PASS","WAIT_REGAIN","TAO_SUCCESS","NO_TAO_STOCK","TAO_TOO_FREQ","EXCHANGE_SUCCESS_SUB","EXCHANGE_SUCCESS_SUB2","EXCHANGE_CODE_EMPTY","EXCHANGE_CODE_INVALID","EXCHANGE_CODE_USED","EXCHANGE_CODE_USED_SUB","EXCHANGE_CODE_EXPIRED","EXCHANGE_LIMIT","SUPPLY_SUCCESS","SUPPLY_SUCCESS_SUB","SUPPLY_SUCCESS_SUB_NOEMAIL","SUPPLY_REPEAT","SUPPLY_FAIL_SUB","NOT_LOGIN_YET","SUBMIT_SUCCESS","OPER_EXC","registENUM","htmlMaker","tpl","replace","findUI","uiAttr","attrValue","selector","find","role","roleName","uiData","attr","processAll","rootElement","each","control","controlInstance","push","instance","initRole","me","element","add","el","options","el_options","instanceId","argType","isPlainObject","opt","destroy","getBIData","ued","pingjs","addBIParams","params","trackBiClick","gameCode","action","remark","foo","_jc_ping","UI","timer","Countdown","defaultOptions","second","run","self","finishHandler","hour","floor","min","text","mTemplate","Search","keyword","defaultKeyword","$associate","showKeyword","bindEvents","param","paramName","paramValue","showAssociate","getJSON","game_classid","host","result","html","num","max","gameClassName","pcGame","syGame","yyGame","Mustache","render","empty","append","show","hide","on","trim","addClass","setTimeout","removeClass","$keyword","locked","Slide","slideNum","currentIndex","initIndex","initContainer","showDesc","initAnchor","auto","autoPlay","remove","index","elem","fakeItems","clone","prepend","width","left","eq","anchorActiveClass","slideTo","showSlide","next","cycle","prev","waitSecond","updateAnchor","desc","filter","step","stop","animate","parseInt","defaultView","getComputedStyle","oldCurCSS","curCSS","force","currentStyle","oldAnim","toArray","strg","res","parseFloat","backgroundPosition","fx","bgPosReady","start","end","unit","nowPosX","pos","inventory","fakeScrollingTimer","sendScrollTimer","ScrollNumber","refresh","numAnimate","numstring","numlen","String","$container","backgroundPositionY","numImgHeight","paddingZero","toString","autonum","total","receive","stockPlace","sendPlace","totalPlace","interval","minSend","maxSend","isAct","haoInfo","getSingleIcon","taoStock","iconText","iconShortText","iconLink","tipText","iconClass","taoDecimal","ceil","loading","itemTemplate","mItemTemplate","GiftList","getList","page","renderList","giftList","renderMList","pageLastDate","prevDate","game_name","other_gamename","thisDate","add_time","thisMonth","getMonth","thisDay","getDate","thisDateStr","picHeight","itemHtml","pageSize","picWidth","NoteList","list","log_time","clipBoard","copyAttribte","elements","clickHandler","event","textArea","position","top","body","select","execCommand","alert","err","haoConfig","user","isLogin","App","checkLogin","loginCallback","logoutCallback","login","redirectURL","logout","siteLogin","gold","then","loginStatus","userInfo","portrait","passport","getUserPortrait","sPortrait","trigger","EVENTS","siteLoginSuccess","loginOnce","f","one","siteLogout","success","siteLogoutSuccess","logoutOnce","loginChain","Dialog","setHTML","setMask","setStyle","mask","setContent","contentHTML","setTitle","title","setFooter","footer","setButtons","buttons","btnHTML","onClick","content","share","pandora","use","Share","size","shape","shareList","showLabel","shTitle","shareTitle","wrapClass","height","setCenterPosition","close","e","keyCode","open","onClose","setPosition","$mask","Tip","msg","msgInfo","subMsg","msgDialog","errorMsg","pop_wx","win","doc","weixinOverlayTip","zIndex","background","currentTarget","validator","ENUM","PHONE_PATTERN","PHONE_MSG","MAIL_PATTERN","MAIL_MSG","CN_PATTERN","CN_MSG","DIGIT_PATTERN","DIGIT_MSG","QQ_PATTERN","QQ_MSG","ADDR_PATTERN","ADDR_MSG","ACCOUNT_PATTERN","ACCOUNT_MSG","NOTEMPTY_MSG","isEmpty","notEmpty","maxLength","minLength","getMessage","fieldName","validate","field","types","checkResult","errMsg","valid","pattern","getInvalid","fields","errorField","subscribe","lock","checkSchema","sche_type","game_code","submit","email","mobile","cancel","gameName","dialog","fakeNumber","reload","haoDialog","errorPop","dialogOption","emailInput","mobileInput","validatOption","invalidFields","bindEmail","subTitle","removeAttr","number","subscribeGame","$this","questionsHTML","questions","renderQuestion","questionData","exClass","componentHTML","items","required","answers","dialogOptions","getAnswer","isFinish","getScore","pass_score","successHandler","$question","answer","$input","score","rightContent","Questionnaire","UserForm","getFormContent","fieldsConfig","renderField","qq","address","game_account","game_server","game_role","fieldKey","fieldValue","isFormValid","postData","submitUrl","submitType","submitHandler","isValid","$item","inputValue","fieldCfg","showError","blur","real_name","captchaFactory","captcha","captchaType","TencentCaptcha","SMSCaptcha","CNCaptcha","ENCaptcha","UpSMSCaptcha","VoiceCaptcha","over","captchaInvalid","sudoku","so","opts","feature","cHtml","chartIndex","refreshCaptcha","isRefresh","captchaUrl","clearInput","cache","async","loadCaptcha","hash1","hash2","is","not","captchaImageUrl","renderCaptcha","unbind","pop","code","Captcha","ajaxValidata","captchaCode","verifyCode","verifyType","setup","getCaptcha","focus","hash","captchaHash","h","charCodeAt","gift_id","giftId","captchaData","MSG","SENT","SMS_REGAIN","remainTime","tmpInput","trigger2","showBindDialog","off","bindURL","inputMobile","buttonText","time","submitData","phoneInput","isFormVaild","showMsg","smsCountDown","message","isBindPhone","Passport","showMobileBinder","validateResult","captchaId","obj","ready","getScript","initCaptchaObj","product","tx_appid","appid","tx_ticket","ticket","tx_randstr","randstr","containerClass","NOT_RECEIVED","RECEIVED","EXPIRED","WRONG","COUNT_DOWN","COOLDOWN","CHECK_STATUS_STEP","uplinkSmsData","upsmsData","countDown","checkReceived","stopCount","minute","btnText","dig","getCountdownHtml","taoSuccess","cardInfo","card_number","card_pwd","taoSuccessDialog","countdown","remaTime","responseJSON","password","Digger","Supply","clickCookieName","clickCookie","emailCookieName","emailCookie","supply","supplySuccess","is_fill","hasAskSupplyBefore","askSupplyEmail","isRepeat","saveCookie","successDialog","supplyChangeEmail","steps","nowStep","addStep","stepFunc","Processer","senderFactory","sender","sendKind","DirectSender","LotterySender","EggSender","YaoSender","UnloginLotterySender","questionnaire","processer","checkHao","grabFail","initCaptcha","initQuestionnaire","question","initUserForm","userForm","_random_license","randomLicense","reqUrl","constructProcesser","needUserInfo","question_detail","verify_code_kind","grabSuccess","_grabTrack","taoHour","taoMin","taoTime","taoTimeStr","scheResult","hasSubscribe","leftEmail","leftMobile","giftName","showSubscribe","subscribeTitle","subscribeTip","showGrabSuccessDialog","grabSuccessDialog","$dialog","click","bindResult","showCodeDialog","showYouliDialog","youliDialog","youliDlUrl","newGameCode","newgameCode","uid","youliUrlParams","Qrcode","preventDefault","opend","failData","lefttime","expireTime","chance","count","gamecode","giftid","suv","Sender","smash","order","isWinner","grabResult","showShare","spreadUrl","rawUrl","pathname","breakEgg","endTimeStr","nickName","importStyle","shUrl","logoutSuccess","hover","$targetEgg","endTime","yaohao","periodInfo","end_time","yaoResult","is_takepart","isTakpartIn","today","todayLast","getFullYear","Exchange","exchangeCode","exchangeFail","getGift","submitUserInfo","prevAll","parent","exchangeSuccess","timeStr","giftDescrib","account","pwd","failStatus","TrackEvents","TDAPP","onEvent","trackId"],"mappings":"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","file":"js/hao.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"//ue.17173cdn.com/a/hao/index/v4.6.1/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","(function ($, window) {\r\n\tif (window.haoInitialized) {\r\n\t\treturn;\r\n\t}\r\n\twindow.haoInitialized = true;\r\n\tvar hao = {\r\n\t\textend: function () {\r\n\t\t\t$.extend.apply(this, arguments);\r\n\t\t},\r\n\t\tutil: {\r\n\t\t\tuuid: function() { \r\n\t\t\t\tvar CHARS = 'abcdefghijklmnopqrstuvwxyz'.split(''); \r\n\t\t\t\tvar chars = CHARS, uuid = new Array(36), rnd = 0, r;\r\n\t\t\t\tfor (var i = 0; i < 16; i++) {\r\n\t\t\t\t\tif (rnd <= 0x02) {\r\n\t\t\t\t\t\trnd = 0x2000000 + (Math.random()*0x1000000)|0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tr = rnd & 0xf;\r\n\t\t\t\t\trnd = rnd >> 4;\r\n\t\t\t\t\tuuid[i] = chars[r];\r\n\t\t\t\t}\r\n\t\t\t\treturn uuid.join('');\r\n\t\t\t},\r\n\t\t\t/**\r\n\t\t\t * 校验字符串长度,中文和全角字符算2个,其余算1个\r\n\t\t\t * @param {string} val 需要校验的字符串\r\n\t\t\t * @return {int} 字符串长度\r\n\t\t\t */\r\n\t\t\tgetByteLen: function (val) {\r\n\t\t\t\tvar len = 0; \r\n\t\t\t\tfor (var i = 0; i < val.length; i++) {\r\n\t\t\t\t\tvar ch = val[i]?val[i]:val.charAt(i);\r\n\t\t\t\t\tif (ch.match(/[^\\x00-\\xff]/ig) !== null){\r\n\t\t\t\t\t\tlen += 2;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tlen += 1;\r\n\t\t\t\t\t} \r\n\t\t\t\t}\r\n\t\t\t\treturn Math.round(len/2);\r\n\t\t\t},\r\n\t\t\tloadCss: function(css, id) {\r\n\t\t\t\tvar head = document.head || document.getElementsByTagName('head')[0];\r\n\t if (typeof css == 'string') {\r\n\t \tvar style = document.createElement('style');\r\n\t \tstyle.setAttribute('hao-ui-component', id);\r\n\t \tstyle.type = 'text/css',\r\n\t\t\t style.styleSheet ? style.styleSheet.cssText = css : style.appendChild(document.createTextNode(css)),\r\n\t\t\t head.appendChild(style);\r\n\t } else {\r\n\t for (var i = 0; i < css.length; i++) {\r\n\t \tvar link = document.createElement('link');\r\n\t \tlink.rel = 'stylesheet';\r\n\t \tlink.type = 'text/css';\r\n\t \tlink.href = css[i];\r\n\t \thead.appendChild(link);\r\n\t }\r\n\t }\r\n\t },\r\n\t\t\tloadScript: function(scripts, callback) {\r\n\t\t\t\tif(typeof(scripts) != 'object') {\r\n\t\t\t\t\tscripts = [scripts];\r\n\t\t\t\t}\r\n\t\t\t\tvar HEAD = document.getElementsByTagName('head')[0] || document.documentElement;\r\n\t\t\t\tvar s = [], last = scripts.length - 1, recursiveLoad = function(i) {\r\n\t\t\t\t\ts[i] = document.createElement('script');\r\n\t\t\t\t\ts[i].setAttribute('type','text/javascript');\r\n\t\t\t\t\ts[i].setAttribute('charset','utf-8');\r\n\t\t\t\t\ts[i].onload = s[i].onreadystatechange = function() {\r\n\t\t\t\t\t\tif(!document.all || this.readyState == 'loaded' || this.readyState == 'complete') {\r\n\t\t\t\t\t\t\tthis.onload = this.onreadystatechange = null; this.parentNode.removeChild(this); \r\n\t\t\t\t\t\t\tif(i != last) {\r\n\t\t\t\t\t\t\t\trecursiveLoad(i + 1); \r\n\t\t\t\t\t\t\t}else if(typeof(callback) == 'function') {\r\n\t\t\t\t\t\t\t\tcallback();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\ts[i].setAttribute('src',scripts[i]);\r\n\t\t\t\t\tHEAD.appendChild(s[i]);\r\n\t\t\t\t};\r\n\t\t\t\trecursiveLoad(0);\r\n\t\t\t},\r\n\t\t\tcheckOpen: function(cb) {\r\n\t\t\t\tvar _clickTime = +(new Date());\r\n\t\t\t function check(elsTime) {\r\n\t\t\t if (elsTime > 3000 || document.hidden || document.webkitHidden) {\r\n\t\t\t cb(1);\r\n\t\t\t } else {\r\n\t\t\t cb(0);\r\n\t\t\t }\r\n\t\t\t }\r\n\t\t\t //启动间隔20ms运行的定时器,并检测累计消耗时间是否超过3000ms,超过则结束\r\n\t\t\t var _count = 0, intHandle;\r\n\t\t\t intHandle = setInterval(function () {\r\n\t\t\t _count++;\r\n\t\t\t var elsTime = +(new Date()) - _clickTime;\r\n\t\t\t if (_count >= 100 || elsTime > 3000) {\r\n\t\t\t clearInterval(intHandle);\r\n\t\t\t check(elsTime);\r\n\t\t\t }\r\n\t\t\t }, 20);\r\n\t\t\t},\r\n\t\t\t// 获取短链接\r\n\t\t\tgetTinyLink: function (url, templateId) {\r\n\t\t var dtd = $.Deferred();\r\n\r\n\t\t $.ajax({\r\n\t\t type: 'GET',\r\n\t\t url:'http://newgame.17173.com/api-GetTinyLink.html',\r\n\t\t dataType: 'jsonp',\r\n\t\t data: {\r\n\t\t url: url,\r\n\t\t template: templateId\r\n\t\t }\r\n\t\t })\r\n\t\t .done(function(data){\r\n\t\t if (data.status == 1) {\r\n\t\t dtd.resolve(data.tinylinkUrl);\r\n\t\t } else {\r\n\t\t dtd.resolve(false);\r\n\t\t }\r\n\t\t })\r\n\t\t .fail(function(){\r\n\t\t dtd.resolve(false);\r\n\t\t })\r\n\r\n\t\t return dtd.promise();\r\n\t\t\t},\r\n\t\t\t// 获取 url 参数\r\n\t\t\tgetUrlParams: function() {\r\n\t\t\t\tvar url = location.search\r\n\t\t\t\tvar o = {}\r\n\t\t\t\tif (url.indexOf('?') != -1) {\r\n\t\t\t\t\tvar strs = url.substr(1)\r\n\t\t\t\t\tstrs = strs.split('&')\r\n\t\t\t\t\tfor (var i = 0; i < strs.length; i++) {\r\n\t\t\t\t\t\tvar item = strs[i].split('=')\r\n\t\t\t\t\t\tif (item[1]) {\r\n\t\t\t\t\t\t\to[item[0]] = decodeURIComponent(item[1])\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn o\r\n\t\t\t},\r\n\t\t\t// url带参数qr\r\n\t\t\tisFromQr: function() {\r\n\t\t\t\tvar params = this.getUrlParams()\r\n\t\t\t\treturn params.qr == '1';\r\n\t\t\t},\r\n\t\t\tisPC: (function() {\r\n\t\t\t\tvar ua = navigator.userAgent.toLowerCase(), \r\n\t\t\t\t\tagents = ['android', 'iphone', 'symbianOS', 'windows phone', 'ipod', '17173_', '17173gl', 'appjiaoyi'],\r\n\t\t\t\t\tflag = true; \r\n\t\t\t\tfor (var i = 0; i < agents.length; i++) {\r\n\t\t\t\t\tif (ua.indexOf(agents[i]) > 0) {\r\n\t\t\t\t\t\tflag = false;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t} \r\n\t\t\t\treturn flag;\r\n\t\t\t})(),\r\n\t\t\tisAndroid: (function() {\r\n\t\t var ua = navigator.userAgent;\r\n\t\t return /Android/i.test(ua)\r\n\t\t })(),\r\n\t\t isWexinQQBrowser: (function() {\r\n\t\t var ua = navigator.userAgent.toLowerCase();\r\n\t\t return /(micromessenger|QQ\\/)/i.test(ua)\r\n\t\t })(),\r\n\t\t\tisInApp: navigator.userAgent.indexOf('17173_') !== -1 || navigator.userAgent.indexOf('17173gl') !== -1 || navigator.userAgent.indexOf('appjiaoyi') !== -1,\r\n\t\t\tcookie: {\r\n\t\t\t\tsetCookie: function (name, value, expires, domain) {\r\n\t\t\t\t\tvar cookieString = name + '=' + escape(value);\r\n\t\t\t\t\t//判断是否设置过期时间 \r\n\t\t\t\t\tif (expires) {\r\n\t\t\t\t\t\tvar date = new Date();\r\n\t\t\t\t\t\tdate.setTime(date.getTime() + expires);\r\n\t\t\t\t\t\tcookieString += '; expires=' + date.toGMTString();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (domain) {\r\n\t\t\t\t\t\tcookieString += '; domain=' + domain;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdocument.cookie = cookieString;\r\n\t\t\t\t},\r\n\t\t\t\tgetCookie: function (name) {\r\n\t\t\t\t\tvar arr, reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)');\r\n\t\t\t\t\tarr = document.cookie.match(reg);\r\n\t\t\t\t\tif (arr) {\r\n\t\t\t\t\t\treturn unescape(arr[2]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tvar initializing = false, fnTest = /xyz/.test(function () { xyz; }) ? /\\bbase\\b/ : /.*/;\r\n\t//Class基础类\r\n\tvar Class = function () {};\r\n\t//继承方法\r\n\tClass.extend = function (subClassName, prop) {\r\n\t\t// 扩展子类\r\n\t\tif (arguments.length == 2) {\r\n\t\t\t// 子类名首字母大写\r\n\t\t\tvar firstLetter = subClassName.split('')[0];\r\n\t\t\tif (firstLetter.toUpperCase() != firstLetter) {\r\n\t\t\t\tthrow new Error('Class must begin with Uppercase letters:' + subClassName);\r\n\t\t\t}\r\n\t\t\t// 扩展子类上增加type属性注明类型名称\r\n\t\t\tprop.type = subClassName;\r\n\t\t\thao[subClassName] = this.extend(prop);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// 扩展子类具体逻辑\r\n\t\tvar base = this.prototype, prop = arguments[0];\r\n\r\n\t\tinitializing = true;\r\n\t\tvar prototype = new this();\r\n\t\tinitializing = false;\r\n\r\n\t\tfor (var name in prop) {\r\n\t\t\tif (typeof prop[name] == 'function' && typeof base[name] == 'function' && fnTest.test(prop[name])) {\r\n\t\t\t\tprototype[name] = (function (name, fn) {\r\n\t\t\t\t\treturn function () {\r\n\t\t\t\t\t\tvar tmp = this.base;\r\n\t\t\t\t\t\tthis.base = base[name];\r\n\t\t\t\t\t\tvar ret = fn.apply(this, arguments);\r\n\t\t\t\t\t\tthis.base = tmp;\r\n\t\t\t\t\t\treturn ret;\r\n\t\t\t\t\t};\r\n\t\t\t\t})(name, prop[name]);\r\n\t\t\t} else {\r\n\t\t\t\tprototype[name] = prop[name];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction _Class() {\r\n\t\t\tif (!initializing && this.init) {\r\n\t\t\t\tthis.init.apply(this, arguments);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t_Class.prototype = prototype;\r\n\t\t_Class.prototype.constructor = _Class;\r\n\t\t_Class.extend = arguments.callee;\r\n\r\n\t\treturn _Class;\r\n\t};\r\n\thao.Class = Class;\r\n\twindow.hao = hao;\r\n})(jQuery, window);","(function ($, _hao) {\r\n\t_hao.extend({\r\n\t\t// 系统常量\r\n\t\tENUM_VAR: {\r\n\t\t\t// 端游游戏类型\r\n\t\t\tPCGAME_CLASS_ID: '1',\r\n\t\t\t// 手游游戏类型\r\n\t\t\tSHOUYOU_CLASS_ID: '6',\r\n\t\t\t// 页游游戏类型\r\n\t\t\tYEYOU_CLASS_ID: '2',\r\n\t\t\t// 直接领号类型\r\n\t\t\tDIRECT_SEND_KIND: '1',\r\n\t\t\t// 抽奖发号类型\r\n\t\t\tLOTTERY_SEND_KIND: '11',\r\n\t\t\t// 砸蛋发号类型\r\n\t\t\tEGG_SEND_KIND: '13',\r\n\t\t\t// 摇号发号类型\r\n\t\t\tYAO_SEND_KIND: '14',\r\n\t\t\t// 不登录抽奖发号类型\r\n\t\t\tUNLOGIN_LOTTERY_SEND_KIND: '15',\r\n\t\t\t// 第三方发放平台\r\n\t\t\tTHIRD_PARTY_SEND_KIND: '16',\r\n\t\t\t// 极验验证码类型\r\n\t\t\t// GEETEST_CAPTCHA_TYPE: '1',\r\n\t\t\t// 腾讯验验证码类型\r\n\t\t\tTENCENT_CAPTCHA_TYPE: '1',\r\n\t\t\t// 下行短信验证码类型\r\n\t\t\tSMS_CAPTCHA_TYPE: '2',\r\n\t\t\t// 中文验证码类型\r\n\t\t\tCN_CAPTCHA_TYPE: '3',\r\n\t\t\t// 英文图片验证码类型\r\n\t\t\tEN_CAPTCHA_TYPE: '4',\r\n\t\t\t// 上行短信验证码类型\r\n\t\t\tUPSMS_CAPTCHA_TYPE: '5',\r\n\t\t\t// 极验验证码类型\r\n\t\t\tVOICE_CAPTCHA_TYPE: '6',\r\n\t\t\t// ZeroClipboard swf文件地址\r\n\t\t\tZERO_CLIPBOARD_SWF: '//ue.17173cdn.com/cache/hao/index/2013/js/zeroclipboard/ZeroClipboard.swf',\r\n\t\t\t// 极验证官方js外链\r\n\t\t\tGEETEST_CAPTCHA_JS: 'http://static.geetest.com/static/tools/gt.js',//'http://api.geetest.com/get.php?gt=94cf4ec5d71cb4eeb94d2f44ba9b1086&product=popup&popupbtnid=geetestSubmitBtn'\r\n\t\t\t// 极验证id\r\n\t\t\tGEETEST_CAPTCHA_ID: '94cf4ec5d71cb4eeb94d2f44ba9b1086',\r\n\t\t\t// 页游极验id\r\n\t\t\tYEYOU_GEETEST_CAPTCHA_ID: 'fbb0f3b3db9894c7d9e3175699de532a',\r\n\t\t\t// 腾讯验证id\r\n\t\t\tTENCENT_CAPTCHA_ID: '2077890395',\r\n\t\t\t// 腾讯验证官方js外链\r\n\t\t\tTENCENT_CAPTCHA_JS: 'https://ssl.captcha.qq.com/TCaptcha.js',\r\n\t\t\t// 下行短信间隔时间(s)\r\n\t\t\tSMS_COOLDOWN: 120,\r\n\t\t\t// 下行语音间隔时间(s)\r\n\t\t\tVOICE_COOLDOWN: 120,\r\n\t\t\t// 上行短信有效期(s)\r\n\t\t\tUPSMS_COOLDOWN: 300,\r\n\t\t\t// 绑定手机页面URL\r\n\t\t\tMOBILE_BIND_URL: 'https://passport.17173.com/safe/mobile/index',\r\n\t\t\t// 变更绑定手机页面URL\r\n\t\t\tCHANGE_MOBILE_BIND: 'https://passport.17173.com/safe/mobile/oldConfirm',\r\n\t\t\t// 绑定邮箱页面URL\r\n\t\t\tEMAIL_BIND_URL: 'https://passport.17173.com/safe/email/bind',\r\n\t\t\t// 变更绑定邮箱页面URL\r\n\t\t\tCHANGE_EMAIL_BIND: 'https://passport.17173.com/safe/email/old',\r\n\t\t\t// 上行短信状态刷新间隔(s)\r\n\t\t\tUPSMS_STATUS_UPDATE_STEP: 3,\r\n\t\t\t// 我的领号-地址\r\n\t\t\tMY_GIFT_URL: '/my-giftlist.html',\r\n\t\t\t// 我的预订-地址\r\n\t\t\tMY_SCHE_URL: '/my-schelist.html',\r\n\t\t\t// 我的活动-地址\r\n\t\t\tMY_ACT_URL: '/my-actlist.html',\r\n\t\t\t// APP手机跳链\r\n\t\t\tAPP_LOGIN_URL: 'app.17173://passport/login?rediretUrl='\r\n\t\t}\r\n\t});\r\n\t_hao.extend({\r\n\t\t// 接口地址列表\r\n\t\tENUM_PROXY: {\r\n\t\t\t// 平台发放数据\r\n\t\t\tSCROLL_STATUS: '/gift-getScrollStat.html',\r\n\t\t\t// 站内登录接口,如果已登录,返回用户信息\r\n\t\t\tSITE_LOGIN: '/site-login.html',\r\n\t\t\t// 站内注销\r\n\t\t\tSITE_LOGOUT: '/site-logout.html',\r\n\t\t\t// 校验用户是否登录\r\n\t\t\tIS_LOGIN: '/ecp/checkUserLogin.html',\r\n\t\t\t// 搜索模糊匹配接口\r\n\t\t\tSEARCH_SC: '/search-sc.html',\r\n\t\t\t// 检查发号状态\r\n\t\t\tCHECK_HAO: '/gift-checkhao-${giftId}.html',\r\n\t\t\t// 领号接口\r\n\t\t\tGRAB_HAO: '/gift-qiang-${giftId}.html',\r\n\t\t\t// 淘号接口\r\n\t\t\tTAO_HAO: '/gift-tao-${giftId}.html',\r\n\t\t\t// 求补号接口\r\n\t\t\tSUPPLY_HAO: '/gift-UserRstatus',\r\n\t\t\t// 求补号邮箱更改\r\n\t\t\tSUPPLY_EMAIL: '/gift-fill.html',\r\n\t\t\t// 获取图形英文验证码\r\n\t\t\tEN_CAPTCHA: '/gift-captcha.html?refresh=1',\r\n\t\t\t// 获取SMS验证码\r\n\t\t\tSMS_CAPTCHA: '/gift-MobileYzm-${giftId}.html',\r\n\t\t\t// 未绑定手机情况下获取SMS验证码接口\r\n\t\t\tSMS_BIND_CAPTCHA: '/gift-MobileCaptcha-${giftId}.html',\r\n\t\t\t// 获取语音验证码\r\n\t\t\tVOICE_CAPTCHA: '/gift-voiceCaptcha-${giftId}.html',\r\n\t\t\t// 获取上行短信验证码(共用chekchao接口)\r\n\t\t\tUPSMS_CAPTCHA: '/gift-checkhao-${giftId}.html',\r\n\t\t\t// 获取上行短信接收状态(共用领号接口)\r\n\t\t\tIS_UPSMS_RECEIVED: '/gift-checkuplink-${giftId}.html',\r\n\t\t\t// 预订游戏接口,包括预订查询和预订\r\n\t\t\tSCHE_GAME: '/my-schegame.html',\r\n\t\t\t// 预订游戏-绑定邮箱\r\n\t\t\tSCHE_BIND_EMAIL: '/gift-UScheEmail.html',\r\n\t\t\t// 摇号活动参与列表\r\n\t\t\tYAO_TAKEPART_LIST: '/gift-takepart-${giftId}.html',\r\n\t\t\t// 抽奖中奖列表\r\n\t\t\tYAO_AWARD_LIST: '/gift-award-${giftId}.html',\r\n\t\t\t// 抽奖活动参与列表\r\n\t\t\tLOTTERY_TAKEPART_LIST: '/gift-takepartLottery-${giftId}.html',\r\n\t\t\t// 摇号中奖列表\r\n\t\t\tLOTTERY_AWARD_LIST: '/gift-awardlottery-${giftId}.html',\r\n\t\t\t// 领号保存用户信息\r\n\t\t\tSAVE_USER_INFO: '/gift-CUserInfo-${giftId}.html',\r\n\t\t\t// 获取兑换中心奖品信息\r\n\t\t\tEXCHANGE_GIFT_INFO: '/ecp-getGiftInfo.html',\r\n\t\t\t// 兑换中心获取用户信息\r\n\t\t\tEXCHANGE_USER_INFO: '/ecp-getUserInfo.html',\r\n\t\t\t// 兑换中心保存用户信息\r\n\t\t\tEXCHANGE_SAVE_USER_INFO: '/ecp-updateUserInfo.html',\r\n\t\t\t// 兑换中心兑换奖品接口\r\n\t\t\tEXCHANGE_GIFT: '/ecp-exchange.html'\r\n\t\t}\r\n\t});\r\n\t_hao.extend({\r\n\t\t// 提示消息文本\r\n\t\tENUM_MSG: {\r\n\t\t\t// 复制成功\r\n\t\t\tCOPY_SUCCESS: '复制成功!',\r\n\t\t\t// 浏览器不支持复制\r\n\t\t\tCOPY_NOT_ALLOWED: '您的浏览器不支持在线复制,请手动复制!',\r\n\t\t\t// 该手机已经绑定\r\n\t\t\tMOBILE_HAS_BOUND: '该手机号已经被绑定',\r\n\t\t\t// 验证码异常\r\n\t\t\tCAPTCHA_ERROR: '验证码错误或超时,请重新操作。',\r\n\t\t\t// 下行短信验证码已发送\r\n\t\t\tSMS_CAPTCHA_SENT: '验证码已下发,请注意查收短信。',\r\n\t\t\t// 语音验证码已发送\r\n\t\t\tVOICE_CAPTCHA_SENT: '验证码已下发,请注意接听来电。',\r\n\t\t\t// 上行短信验证码接收状态\r\n\t\t\tUPSMS_NOT_RECEIVED: '未接收',\r\n\t\t\tUPSMS_RECEIVED: '验证成功,正在返回抢号结果。',\r\n\t\t\tCAPTCHA_EXPIRED: '验证码已过期',\r\n\t\t\tCAPTCHA_WRONG: '验证码错误',\r\n\t\t\t// 上行短信验证码倒计时提示\r\n\t\t\tUPSMS_CAPTCHA_COUNT_DOWN: '${step} 秒后自动刷新,${minute} 分 ${second} 秒后验证码过期',\r\n\t\t\t// 活动于PC端不可用提示\r\n\t\t\tPC_INVALID: '本活动只能在移动端参与。',\r\n\t\t\t// 抢号提示\r\n\t\t\tGRAB_SUCCESS_SUB: '该号 ${time} 后将进入淘号库,请尽快使用。
',\r\n\t\t\t// 抢号提示2\r\n\t\t\tGRAB_SUCCESS_SUB2: '在 我的账号箱 中可查看抢号记录',\r\n\t\t\t// 摇号结果提示\r\n\t\t\tYAO_SUCCESS: '参与摇号成功',\r\n\t\t\tYAO_FAIL: '参与摇号失败',\r\n\t\t\tYAO_NOT_PREPARE: '摇号活动正在准备中~~',\r\n\t\t\tYAO_NOT_OPEN: '本期摇号活动还未开始~~',\r\n\t\t\tYAO_SUCCESS_TODAY: '参与摇号成功,请耐心等待开奖结果',\r\n\t\t\tYAO_SUCCESS_TOMORROW: '参与摇号成功,明天还能再次参与哟',\r\n\t\t\tYAO_FAIL_TODAY: '今日已经参与过本期活动,请等待开奖',\r\n\t\t\tYAO_FAIL_TOMORROW: '今日已经参与过本期活动,明日可再次参加',\r\n\t\t\t// 成功参与活动提示补充\r\n\t\t\tYAO_SUCCESS_SUB: '若您中奖,中奖结果将通过您所绑定的手机号进行发放
还可在 我的账号箱 中查看中奖记录',\r\n\t\t\t// 帐号冻结\r\n\t\t\tACCOUNT_FROZEN_TITLE: '帐号冻结',\r\n\t\t\t// 帐号冻结提示\r\n\t\t\tACCOUNT_FROZEN: '您的账号有恶意刷号嫌疑,已被冻结,无法继续抢号',\r\n\t\t\t// 帐号冻结提示补充\r\n\t\t\tACCOUNT_FROZEN_SUB: '若需申述,请联系发号中心管理员,QQ:2544396792',\r\n\t\t\t// 参与活动成功\r\n\t\t\tACT_SUCCESS_TITLE: '参与活动成功',\r\n\t\t\tACT_SUCCESS: '参与活动成功,请耐心等待开奖结果',\r\n\t\t\t// 已经参与,当日开奖\r\n\t\t\tACT_ALREADY_TITLE: '参与活动失败',\r\n\t\t\tACT_ALREADY: '您已参与过本期活动,请等待开奖结果',\r\n\t\t\tACT_ALREADY_TODAY: '今天您已参与过本期活动,请等待开奖结果',\r\n\t\t\t// 成功参与活动提示补充\r\n\t\t\tACT_SUCCESS_SUB: '若您中奖,中奖结果将通过您所填写的联系方式进行发放
还可在 我的账号箱 中查看中奖记录',\r\n\t\t\t// 成功参与不登录抽奖活动提示\r\n\t\t\tUNLOGIN_LOTTERY_SUCCESS_SUB: '若您中奖,中奖结果将通过您所填写的联系方式进行发放',\r\n\t\t\t// 预订提示信息,有绑定邮箱时\r\n\t\t\tSCHE_TIP_WITH_EMAIL: '您可以预订该游戏,新礼包到货后将第一时间发邮件通知您!',\r\n\t\t\t// 预订提示信息,没有绑定邮箱时\r\n\t\t\tSCHE_TIP_WITHOUT_EMAIL: '您可以留下联系方式,新礼包到货后将第一时间通知您!',\r\n\t\t\t// 礼包无效\r\n\t\t\tHAO_INVALID: '亲,该物品无效!',\r\n\t\t\t// 未开始\r\n\t\t\tHAO_NOT_START_YET: '亲,该物品还没开始发放!',\r\n\t\t\t// 号发完\r\n\t\t\tHAO_EMPTY: '您晚了一步,前面那位客官刚领走了最后一个',\r\n\t\t\t// 号发完补充\r\n\t\t\tHAO_EMPTY_SUB: '请试试淘号,没准能捞到宝',\r\n\t\t\t// 活动结束\r\n\t\t\tHAO_END: '您晚了一步,发号已经结束',\r\n\t\t\t// 本轮活动结束\r\n\t\t\tHAO_END_THIS_TURN: '您晚了一步,本轮发号已经结束',\r\n\t\t\tHAO_WAIT_NEXT_TURN: '下一个发号时段还未到,请耐心等待。',\r\n\t\t\t// 再次可用倒计时\r\n\t\t\tWAIT_TIME_SUB: '请在${time}后再来',\r\n\t\t\t// 再次可用倒计时\r\n\t\t\tWAIT_SECOND_SUB: '请在${second}秒后再来',\r\n\t\t\t// 频繁抢号\r\n\t\t\tTOO_FREQ: '亲,您抢号太频繁了,休息一会吧。',\r\n\t\t\t// 没有抢号机会\r\n\t\t\tNO_CHANCE: '您已经抢过${chance}次了,给其他小伙伴点机会吧',\r\n\t\t\t// 同IP没有抢号机会\r\n\t\t\tIP_NO_CHANCE: '与您同IP的用户已经抢过${chance}次了,给其他小伙伴点机会吧',\r\n\t\t\t// 订阅了非法的游戏\r\n\t\t\tSUBSCRIBE_GAMECODE_INVALID: '对不起!请选择要预订的游戏!',\r\n\t\t\t// 预订成功提示\r\n\t\t\tSUBSCRIBE_SUCCESS: '预订成功!礼包到货后将第一时间通知您',\r\n\t\t\t// 预订成功提示补充\r\n\t\t\tSUBSCRIBE_SUCCESS_SUB: '在 我的账号箱 中可查看到货通知
若您留下联系方式,17173还将通过邮件或短信通知您。',\r\n\t\t\t// 预订成功提示补充(无绑定邮箱)\r\n\t\t\tSUBSCRIBE_SUCCESS_SUB_NO_EMAIL: '在 我的账号箱 中可查看到货通知
若您留下联系方式,17173还将通过邮件或短信通知您。',\r\n\t\t\t// 预订异常\r\n\t\t\tSUBSCRIBE_ERROR: '系统出错,保存预订信息失败,请稍后再试!',\r\n\t\t\t// 预订失败\r\n\t\t\tSUBSCRIBE_FAIL: '预订游戏失败!',\r\n\t\t\t// 取消预订提示\r\n\t\t\tCANCEL_SUBSCRIBE: '您确定取消预订《${gameName}》?',\r\n\t\t\tCANCEL_SUBSCRIBE_SUB: '取消预订后,您将无法收到礼包到货通知',\r\n\t\t\t// 取消预订成功\r\n\t\t\tSUBSCRIBE_CANCEL_SUCCESS: '取消预订成功!',\r\n\t\t\t// 取消预订失败\r\n\t\t\tSUBSCRIBE_CANCEL_FAIL: '取消预订游戏失败!',\r\n\t\t\t// 未预订游戏\r\n\t\t\tNOT_SUBSCRIBE_YET: '对不起,您未预订该游戏!',\r\n\t\t\t// 邮箱绑定成功\r\n\t\t\tBIND_EMAIL_SUCCESS: '邮箱提交成功',\r\n\t\t\t// 邮箱绑定成功补充\r\n\t\t\tBIND_EMAIL_SUCCESS_SUB: '您已留下邮箱地址,礼包到货后将第一时间发送邮件通知您!',\r\n\t\t\t// BIND_EMAIL_SUCCESS_SUB: '为确保您能及时收到到货通知,已向您的邮箱: ${email} 发送了一封验证邮件
请点击邮件中的链接地址,完成邮箱验证',\r\n\t\t\t// 预订绑定联系方式成功\r\n\t\t\tBIND_INFO_SUCCESS: '联系方式提交成功',\r\n\t\t\tBIND_INFO_SUCCESS_SUB: '礼包到货后将第一时间通过邮件或短信通知您!',\r\n\t\t\tBIND_INFO_FAIL: '联系方式提交失败',\r\n\t\t\t// 邮箱绑定失败\r\n\t\t\tBIND_EMAIL_FAIL: '邮箱提交失败',\r\n\t\t\t// 游戏非法\r\n\t\t\tGAME_INVALID: '对不起!该游戏不存在!',\r\n\t\t\t// 收集个人信息提示\r\n\t\t\tUSER_INFO_TITLE: '请完善您的信息',\r\n\t\t\tUSER_INFO_TITLE_SUB: '请填写真实信息,中奖结果将可能通过所填写的联系方式进行发放',\r\n\t\t\t// 个人信息表单未填写完整\r\n\t\t\tHAS_EMPTY_FIELD: '资料不能为空,请填写完整的信息',\r\n\t\t\t// 保存个人信息成功\r\n\t\t\tSAVE_USER_INFO_SUCCESS: '提交个人信息成功!',\r\n\t\t\t// 保存个人信息失败\r\n\t\t\tSAVE_USER_INFO_FAIL: '提交个人信息失败!',\r\n\t\t\t// 问卷未完成\r\n\t\t\tQUESTION_NOT_FINISH: '还有必答题未完成',\r\n\t\t\t// 问卷分数不及格\r\n\t\t\tQUESTION_NOT_PASS: '回答错误,请修正答案',\r\n\t\t\t// 稍候再试,用于下发短信和语音\r\n\t\t\tWAIT_REGAIN: '重新获取(${time})',\r\n\t\t\t// 淘号成功\r\n\t\t\tTAO_SUCCESS: '该礼包已经被其他玩家领取,但很可能忘了激活,快去激活试试',\r\n\t\t\t// 没有号可以淘\r\n\t\t\tNO_TAO_STOCK: '亲,当前没有号可淘哦!',\r\n\t\t\t// 淘号太频繁\r\n\t\t\tTAO_TOO_FREQ: '您淘号太频繁了,休息一会吧!',\r\n\t\t\t// 兑换成功\r\n\t\t\tEXCHANGE_SUCCESS_SUB: '该号在兑换的 ${time} 后将进入淘号库,请尽快使用。',\r\n\t\t\tEXCHANGE_SUCCESS_SUB2: '在 我的兑换记录 中可查看兑换记录及修改联系方式。',\r\n\t\t\t// 兑换码为空\r\n\t\t\tEXCHANGE_CODE_EMPTY: '请输入验证码进行兑换!',\r\n\t\t\t// 兑换码不存在\r\n\t\t\tEXCHANGE_CODE_INVALID: '无效兑换码!请重新输入!',\r\n\t\t\t// 兑换码已经使用\r\n\t\t\tEXCHANGE_CODE_USED: '兑换码已被使用!',\r\n\t\t\tEXCHANGE_CODE_USED_SUB: '请确认兑换码是否正确,或至“我的兑换记录”查找',\r\n\t\t\t// 兑换码过期\r\n\t\t\tEXCHANGE_CODE_EXPIRED: '兑换码已过期!无法兑换!',\r\n\t\t\t// 超过兑换限制\r\n\t\t\tEXCHANGE_LIMIT: '本账号已经兑换过该奖品,不能重复获得,兑换码将被作废!',\r\n\t\t\t// 求补号成功\r\n\t\t\tSUPPLY_SUCCESS: '求补号成功!就等着好消息吧~',\r\n\t\t\t// 求补号成功副标题\r\n\t\t\tSUPPLY_SUCCESS_SUB: '您已留下邮箱地址,补号之后将第一时间发送邮件通知您!',\r\n\t\t\t// 求补号成功副标题(未绑定邮箱)\r\n\t\t\tSUPPLY_SUCCESS_SUB_NOEMAIL: '请留下您的邮箱,补号之后将第一时间通知您,建议您使用QQ邮箱',\r\n\t\t\t// 重复求补号\r\n\t\t\tSUPPLY_REPEAT: '亲,求太多次就不灵了,还请耐心等待~',\r\n\t\t\t// 求补号失败副标题\r\n\t\t\tSUPPLY_FAIL_SUB: '该奖品暂未开放求补号或是请求参数有误!请重试!',\r\n\t\t\t// 未登录\r\n\t\t\tNOT_LOGIN_YET: '亲,你还未登录,请登录后再操作!',\r\n\t\t\t// 提交成功\r\n\t\t\tSUBMIT_SUCCESS: '提交成功',\r\n\t\t\t// 操作异常\r\n\t\t\tOPER_EXC: '操作异常'\r\n\t\t},\r\n\t\t// 注册系统常量方法\r\n\t\tregistENUM: function(type, key, value) {\r\n\t\t\tif (typeof _hao['ENUM_' + type.toUpperCase()] != 'undefined') {\r\n\t\t\t\t_hao['ENUM_' + type.toUpperCase()][key] = value;\r\n\t\t\t} else {\r\n\t\t\t\tthrow new Error('invalid type:'+type+' attempted to regist.');\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n})(jQuery, hao);\r\n","(function ($, _hao) {\r\n\t_hao.extend({\r\n\t\t// 简易html字符串占位替换方法\r\n\t\thtmlMaker: function(tpl, data) {\r\n\t\t\treturn tpl.replace(/\\${([^}]+)}/g, function() {return data[arguments[1]]?data[arguments[1]]:'';});\r\n\t\t}\r\n\t});\r\n})(jQuery, hao);","(function ($, _hao) {\r\n $.fn.findUI = function (uiAttr, attrValue) {\r\n var selector = '[data-ui-' + uiAttr;\r\n if (attrValue) {\r\n selector += '=\"' + attrValue + '\"';\r\n }\r\n selector += ']';\r\n return this.find(selector);\r\n };\r\n $.findUI = function (uiAttr, attrValue) {\r\n var selector = '[data-ui-' + uiAttr;\r\n if (attrValue) {\r\n selector += '=\"' + attrValue + '\"';\r\n }\r\n selector += ']';\r\n return $(selector);\r\n };\r\n $.fn.role = function (roleName) {\r\n var selector = '[data-ui-role=\"' + roleName + '\"]';\r\n return this.find(selector);\r\n };\r\n $.role = function (roleName) {\r\n return this.findUI('role', roleName);\r\n };\r\n $.fn.uiData = function (attr) {\r\n return this.attr('data-ui-' + attr);\r\n };\r\n _hao.extend({\r\n processAll: function (rootElement) {\r\n var els = $(rootElement).find('[data-ui-control]').each(function () {\r\n var me = $(this), control = me.attr('data-ui-control');\r\n if (control && _hao[control]) {\r\n _hao.controlInstance[control] = _hao.controlInstance[control] || [];\r\n _hao.controlInstance[control].push(new _hao[control](this));\r\n }\r\n });\r\n },\r\n instance: {}\r\n });\r\n _hao.Class.extend('UI', {\r\n initRole: function () {\r\n var me = this;\r\n this.role = {};\r\n if (this.element) {\r\n this.element.findUI('role')\r\n .each(function () {\r\n \tvar name = $(this).uiData('role');\r\n me.role[name] = me.role[name]? me.role[name].add(this) : $(this);\r\n });\r\n }\r\n },\r\n init: function () {\r\n var el, options = el_options = {};\r\n this.instanceId = _hao.util.uuid();\r\n if (!arguments[1]) {\r\n // 如果参数是纯对象,则认为是options,否则则是UI的dom对象或JQ对象\r\n var argType = $.isPlainObject(arguments[0]);\r\n if (argType) {\r\n options = arguments[0];\r\n } else {\r\n el = arguments[0];\r\n }\r\n } else {\r\n el = arguments[0];\r\n options = arguments[1];\r\n }\r\n if (el) {\r\n this.element = $(el);\r\n this.element.attr('data-ui-instance-id', this.instanceId);\r\n //el_options = this.element.attr('data-ui-option');\r\n //el_options = $.parseJSON(el_options);\r\n }\r\n this.opt = $.extend({}, options, el_options);\r\n //存储实例对象用于全局控制\r\n //_hao.instance[this.instanceId] = this;\r\n },\r\n destroy: function() {\r\n //delete _hao.instance[this.instanceId];\r\n // console.log('instance destroy complete.');\r\n }\r\n });\r\n\r\n //$(function () {\r\n //_hao.processAll($(document));\r\n //});\r\n})(jQuery, hao);","// 获取BI流量分析参数\r\n(function ($, _hao) {\r\n\t_hao.extend({\r\n\t\tgetBIData: function() {\r\n\t\t\tif (!!ued && !!ued.pingjs) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\t//流量cookie ID\r\n\t\t\t\t\t'cookie': ued.pingjs.get('uv'),\r\n\t\t\t\t\t//流量会话ID\r\n\t\t\t\t\t'session_id': ued.pingjs.get('ssid'),\r\n\t\t\t\t\t//会话浏览次序\r\n\t\t\t\t\t'session_views': ued.pingjs.get('svn'),\r\n\t\t\t\t\t//流量随机数\r\n\t\t\t\t\t'random_str': ued.pingjs.get('uuid')\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\treturn {};\r\n\t\t},\r\n\t\taddBIParams: function(params) {\r\n\t\t\t$.extend(true, params, _hao.getBIData());\r\n\t\t},\r\n\t\ttrackBiClick: function (gameCode, action, remark) {\r\n\t\t\t\tvar remark = remark || null;\r\n\t\t\t\tvar version = 1;\r\n\t\t\t\tif (remark) {\r\n\t\t\t\t\tvar foo = 'g_'+version+'_'+gameCode+'_'+action+'_'+remark;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar foo = 'g_'+version+'_'+gameCode+'_'+action+'';\r\n\t\t\t\t}\r\n\t\t\t\t\r\n window._jc_ping = window._jc_ping || [];\r\n _jc_ping.push([ '_trackBiClick', foo]);\r\n }\r\n\t});\r\n})(jQuery, hao);","/**\r\n * 倒计时组件\r\n */\r\n(function ($, _hao) {\r\n\t_hao.UI.extend('Countdown', {\r\n\t\ttimer: null,\r\n\t\tinit: function(element, options) {\r\n\t\t\tvar self = this;\r\n\t\t\toptions = $.extend({}, _hao.Countdown.defaultOptions, options);\r\n\t\t\tself.base(element, options);\r\n\t\t\tself.second = self.opt.second;\r\n\t\t\tself.run();\r\n\t\t},\r\n\t\trun: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tself.timer = setInterval(function() {\r\n\t\t\t\tif (self.element.length == 0) {\r\n\t\t\t\t\tclearInterval(self.timer);\r\n\t\t\t\t\tself.timer = null;\r\n\t\t\t\t} else if (self.second <= 0) {\r\n\t\t\t\t\tclearInterval(self.timer);\r\n\t\t\t\t\tself.timer = null;\r\n\t\t\t\t\tself.opt.finishHandler.call(self);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tself.second--;\r\n\t\t\t\t\tvar hour = Math.floor(self.second/3600),\r\n\t\t\t\t\tmin = Math.floor((self.second - hour*3600)/60),\r\n\t\t\t\t\tsecond = Math.floor(self.second - hour*3600 - min*60);\r\n\t\t\t\t\tself.element.role('hour').text(hour);\r\n\t\t\t\t\tself.element.role('min').text(min<10?'0'+min: min);\r\n\t\t\t\t\tself.element.role('second').text(second<10?'0'+second: second);\r\n\t\t\t\t}\r\n\t\t\t}, 1000);\r\n\t\t}\r\n\t});\r\n\r\n\t_hao.Countdown.defaultOptions = {\r\n\t\tsecond: 0,// 倒计时秒数\r\n\t\tfinishHandler: function() {}// 倒计时成功后的回调\r\n\t};\r\n})(jQuery, hao);","/**\r\n * 全站头部搜索栏组件\r\n */\r\n(function ($, _hao) {\r\n\t_hao.UI.extend('Search', {\r\n\t\ttemplate: '{{#data}}\\\r\n\t\t\t\t\t
  • \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t\t{{#gift_count}}\\\r\n\t\t\t\t\t\t\t\t\t{{gift_count}}个礼包\\\r\n\t\t\t\t\t\t\t\t\t{{/gift_count}}\\\r\n\t\t\t\t\t\t\t\t\t{{^gift_count}}\\\r\n\t\t\t\t\t\t\t\t\t{{total_reserve}}人预订\\\r\n\t\t\t\t\t\t\t\t\t{{/gift_count}}\\\r\n\t\t\t\t\t\t\t\t\t>\\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t\t{{gameClassName}}|{{game_name}}\\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
  • \\\r\n\t\t\t\t\t{{/data}}',\r\n\t\tmTemplate: '{{#data}}\\\r\n\t\t\t\t\t\t
  • \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t\t{{#pcGame}}\\\r\n\t\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t\t{{/pcGame}}\\\r\n\t\t\t\t\t\t\t\t\t{{#yyGame}}\\\r\n\t\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t\t{{/yyGame}}\\\r\n\t\t\t\t\t\t\t\t\t{{#syGame}}\\\r\n\t\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t\t{{/syGame}}\\\r\n\t\t\t\t\t\t\t\t\t{{game_name}}\\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t\t{{#gift_count}}\\\r\n\t\t\t\t\t\t\t\t\t{{gift_count}}个礼包\\\r\n\t\t\t\t\t\t\t\t\t{{/gift_count}}\\\r\n\t\t\t\t\t\t\t\t\t{{^gift_count}}\\\r\n\t\t\t\t\t\t\t\t\t{{total_reserve}}人预订\\\r\n\t\t\t\t\t\t\t\t\t{{/gift_count}}\\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
  • \\\r\n\t\t\t\t\t{{/data}}',\r\n\t\tinit: function(element, options) {\r\n\t\t\tvar self = this;\r\n\t\t\toptions = $.extend({}, _hao.Search.defaultOptions, options);\r\n\t\t\tself.base(element, options);\r\n\t\t\tself.keyword = self.opt.defaultKeyword;\r\n\t\t\tself.$associate = self.element.role('associate');\r\n\t\t\tself.showKeyword();\r\n\t\t\t// 绑定事件\r\n\t\t\tself.bindEvents();\r\n\t\t},\r\n\t\t// 显示搜索栏初始值\r\n\t\tshowKeyword: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tif (!!location.search) {\r\n\t\t var params = location.search.replace(/^\\?/, '').split('&');\r\n\t\t for (var i = 0; i < params.length; i++) {\r\n\t\t var param = params[i],\r\n\t\t paramName = param.split('=')[0],\r\n\t\t paramValue = param.split('=').length >1?param.split('=')[1]:'';\r\n\t\t if (paramName == 'skey' && paramValue != '') {\r\n\t\t self.keyword = paramValue;\r\n\t\t }\r\n\t\t }\r\n\t\t }\r\n\t\t self.element.role('keyword').val(decodeURIComponent(self.keyword));\r\n\t\t},\r\n\t\t// 根据输入值获取模糊匹配\r\n\t\tshowAssociate: function(keyword) {\r\n\t\t\tvar self = this;\r\n\t\t\t$.getJSON(_hao.ENUM_PROXY.SEARCH_SC, {c: keyword, game_classid: (/yeyou/.test(window.location.host)?2:1)})\r\n\t\t .done(function(result) {\r\n\t\t \tif (result && result.length > 0) {\r\n\t var html = '', num;\r\n\t if (!_hao.util.isPC && result.length > self.opt.max) {\r\n\t num = self.opt.max;\r\n\t } else {\r\n\t num = result.length;\r\n\t }\r\n\t for (var i = 0; i < num; i++) {\r\n\t \tswitch (''+result[i].game_classid) {\r\n\t \t\tcase _hao.ENUM_VAR.PCGAME_CLASS_ID:\r\n\t \t\t\tresult[i].gameClassName = '端游';\r\n\t \t\t\tresult[i].gameClassName = '端游';\r\n\t \t\t\tresult[i].pcGame = true;\r\n\t \t\t\tbreak;\r\n\t \t\tcase _hao.ENUM_VAR.SHOUYOU_CLASS_ID:\r\n\t \t\t\tresult[i].gameClassName = '手游';\r\n\t \t\t\tresult[i].syGame = true;\r\n\t \t\t\tbreak;\r\n\t \t\tcase _hao.ENUM_VAR.YEYOU_CLASS_ID:\r\n\t \t\t\tresult[i].gameClassName = '页游';\r\n\t \t\t\tresult[i].yyGame = true;\r\n\t \t\t\tbreak;\r\n\t \t}\r\n\t }\r\n\t html = Mustache.render(!!_hao.util.isPC? self.template: self.mTemplate, {data: result});\r\n\t self.$associate.find('ul').empty().append(html);\r\n\t self.$associate.show();\r\n\t } else {\r\n\t self.$associate.hide();\r\n\t self.$associate.find('ul').empty();\r\n\t }\r\n\t\t });\r\n\t\t},\r\n\t\t// 绑定事件\r\n\t\tbindEvents: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 搜索按钮\r\n\t\t\tself.element.role('keyword')\r\n\t\t\t.on('click focus', function() {\r\n\t\t\t\tvar keyword = $.trim($(this).val());\r\n\t\t\t\tif (keyword == self.opt.defaultKeyword) {\r\n\t\t\t\t\t$(this).val('');\r\n\t\t\t\t}\r\n\t\t\t\tself.element.addClass('mod-search-focus');\r\n\t\t\t\tif (keyword!='') {\r\n\t\t\t self.showAssociate(keyword);\r\n\t\t\t }\r\n\t\t\t})\r\n\t\t\t.on('keyup', function() {\r\n\t\t\t var keyword = $.trim($(this).val());\r\n\t\t\t self.showAssociate(keyword);\r\n\t\t\t})\r\n\t\t\t.on('blur', function() {\r\n\t\t\t setTimeout(function() {\r\n\t\t\t self.$associate.hide();\r\n\t\t\t self.element.removeClass('mod-search-focus');\r\n\t\t\t }, 200);\r\n\t\t\t});\r\n\r\n\t\t\tself.element.find('form').on('submit', function() {\r\n\t\t\t\tvar $keyword = self.element.role('keyword');\r\n\t\t\t\tvar keyword = $.trim($keyword.val());\r\n\t\t\t\tif (keyword == '请输入游戏或礼包名称') {\r\n\t\t\t\t\t$keyword.val('');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\t_hao.Search.defaultOptions = {\r\n\t\tdefaultKeyword: '请输入游戏或礼包名称',\r\n\t\tmax: 8\r\n\t};\r\n})(jQuery, hao);","/**\r\n * 首页轮播图组件\r\n */\r\n(function ($, _hao) {\r\n\r\n\t_hao.UI.extend('Slide', {\r\n\t\ttimer: null,\r\n\t\tlocked: false,\r\n\t\tinit: function(element, options) {\r\n\t\t\tvar self = this;\r\n\t\t\toptions = $.extend({}, _hao.Slide.defaultOptions, options);\r\n\t\t\tself.base(element, options);\r\n\t\t\t// 轮播数\r\n\t\t\tself.slideNum = 0;\r\n\t\t\t// 当前项\r\n\t\t\tself.currentIndex = self.opt.initIndex;\r\n\t\t\t// 初始化滚动容器\r\n\t\t\tself.initContainer();\r\n\t\t\tself.showDesc();\r\n\t\t\t// 初始化滚动锚点\r\n\t\t\tself.initAnchor();\r\n\t\t\t// 绑定事件\r\n\t\t\tself.bindEvents();\r\n\t\t\tif (self.opt.auto) {\r\n\t\t\t\tself.autoPlay();\r\n\t\t\t}\r\n\t\t},\r\n\t\t// 初始化图片容器\r\n\t\tinitContainer: function() {\r\n\t\t\tvar self = this;\r\n\r\n\t\t\tself.element.role('fakeItems').remove();\r\n\r\n\t\t\t// 设置索引\r\n\t\t\tself.element.role('container').role('item').each(function(index, elem) {\r\n\t\t\t\t$(elem).attr('data-ui-index', index);\r\n\t\t\t});\r\n\r\n\t\t\t// 计算轮播总数\r\n\t\t\tself.slideNum = self.element.role('item').length;\r\n\r\n\t\t\t// 在前后复制两份完整的假滚动项,用于平滑过渡循环和跳跃\r\n\t\t\tvar fakeItems = self.element.role('item').clone();\r\n\t\t\tfakeItems.attr('data-ui-role', 'fakeItems');\r\n\t\t\tself.element.role('container').prepend(fakeItems);\r\n\t\t\tself.element.role('container').append(fakeItems.clone());\r\n\r\n\t\t\t// 初始化定位\r\n\t\t\tself.element.role('container').css({\r\n\t\t\t\twidth: self.slideNum*3*self.opt.width + 'px',\r\n\t\t\t\tleft: '-'+(self.slideNum + self.currentIndex)*self.opt.width+'px'\r\n\t\t\t});\r\n\t\t\tself.element.css({'overflow': 'inherit'});\r\n\t\t},\r\n\t\t// 初始化锚点\r\n\t\tinitAnchor: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar html = '';\r\n\t\t\tfor (var i = 0; i < self.slideNum; i++) {\r\n\t\t\t\thtml += '';\r\n\t\t\t}\r\n\t\t\tself.element.role('anchorContainer').empty().append(html);\r\n\t\t\tself.element.role('anchor').eq(self.currentIndex).addClass(self.opt.anchorActiveClass);\r\n\t\t},\r\n\t\t// 滚动到指定索引\r\n\t\tslideTo: function(index) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar tmp = self.currentIndex;\r\n\t\t\tself.currentIndex = index;\r\n\t\t\tself.showSlide(tmp - index);\r\n\t\t},\r\n\t\t// 滚动下一项\r\n\t\tnext: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 锁定状态 不执行滑动\r\n\t\t\tif (self.locked) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t// 非循环状态,当前已经到最后一项,不执行滑动\r\n\t\t\tif (!self.opt.cycle && self.currentIndex + 1 == self.slideNum) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tself.locked = true;\r\n\t\t\t// 更新当前项索引\r\n\t\t\tself.currentIndex = self.currentIndex + 1 == self.slideNum? 0: self.currentIndex + 1;\r\n\t\t\t\r\n\t\t\tself.showSlide(-1);\r\n\t\t},\r\n\t\t// 滚动上一项\r\n\t\tprev: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 锁定状态 不执行滑动\r\n\t\t\tif (self.locked) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t// 非循环状态,当前已经到第一项,不执行滑动\r\n\t\t\tif (!self.opt.cycle && self.currentIndex == 0) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tself.locked = true;\r\n\t\t\t// 更新当前项索引\r\n\t\t\tself.currentIndex = self.currentIndex == 0? self.slideNum - 1: self.currentIndex - 1;\r\n\t\t\t\r\n\t\t\tself.showSlide(1);\r\n\t\t},\r\n\t\t// 自动播放\r\n\t\tautoPlay: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tself.waitSecond = self.opt.waitSecond;\r\n\t\t\tself.timer = setInterval(function() {\r\n\t\t\t\tself.waitSecond--;\r\n\t\t\t\tif (self.waitSecond == 0) {\r\n\t\t\t\t\tself.next();\r\n\t\t\t\t}\r\n\t\t\t}, 1000);\r\n\t\t},\r\n\t\t// 更新锚点状态\r\n\t\tupdateAnchor: function() {\r\n\t\t\tvar self = this;\r\n\r\n\t\t\tself.element.role('anchor').removeClass(self.opt.anchorActiveClass);\r\n\t\t\tself.element.role('anchor').eq(self.currentIndex).addClass(self.opt.anchorActiveClass);\r\n\t\t},\r\n\t\t// 展示当前项说明文字\r\n\t\tshowDesc: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar desc = self.element.role('item').filter('[data-ui-index='+self.currentIndex+']').find('a').attr('title');\r\n\t\t\tself.element.role('desc').empty().append(desc);\r\n\t\t},\r\n\t\t// 滚动展示项\r\n\t\t// step 为整数,表示滚动的步数,正数为向右滚动,负数向左滚动\r\n\t\tshowSlide: function(step) {\r\n\t\t\tvar self = this, num = num || 1;\r\n\t\t\t// 显示项目描述\r\n\t\t\tself.showDesc();\r\n\t\t\t// 刷新锚点显示\r\n\t\t\tself.updateAnchor();\r\n\t\t\t// 播放动画滚动效果,step负数向左滚动,正数向右滚动\r\n\t\t\tself.element.role('container').stop().animate({\r\n\t\t\t\tleft: parseInt(self.element.role('container').css('left'), 10) + step*self.opt.width + 'px'\r\n\t\t\t}, 300, 'swing', function() {\r\n\t\t\t\t// 完成后恢复定位到真实items位置\r\n\t\t\t\tself.element.role('container').css({\r\n\t\t\t\t\tleft: '-'+(self.slideNum + self.currentIndex) * self.opt.width + 'px'\r\n\t\t\t\t});\r\n\t\t\t\t// 重置自动轮播冷却时间\r\n\t\t\t\tself.waitSecond = self.opt.waitSecond;\r\n\t\t\t\t// 解除锁定\r\n\t\t\t\tself.locked = false;\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 绑定事件\r\n\t\tbindEvents: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 上一项\r\n\t\t\tself.element.role('prevBtn').on('click', function() {\r\n\t\t\t\tself.prev();\r\n\t\t\t});\r\n\t\t\t// 下一项\r\n\t\t\tself.element.role('nextBtn').on('click', function() {\r\n\t\t\t\tself.next();\r\n\t\t\t});\r\n\t\t\t// 锚点跳转\r\n\t\t\tself.element.role('anchor').on('click', function() {\r\n\t\t\t\tvar index = parseInt($(this).uiData('index'), 10);\r\n\t\t\t\tself.slideTo(index);\r\n\t\t\t});\r\n\t\t\t// 鼠标移入,滚动锁定\r\n\t\t\tself.element.role('item').on('mouseover', function() {\r\n\t\t\t\tself.locked = true;\r\n\t\t\t});\r\n\t\t\t// 鼠标移出,滚动解锁\r\n\t\t\tself.element.role('item').on('mouseout', function() {\r\n\t\t\t\tself.locked = false;\r\n\t\t\t\tself.waitSecond = self.opt.waitSecond;\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\t_hao.Slide.defaultOptions = {\r\n\t\t// 初始位置\r\n\t\tinitIndex: 0,\r\n\t\t// 是否自动播放\r\n\t\tauto: true,\r\n\t\t// 自动播放每项间隔秒数\r\n\t\twaitSecond: 5,\r\n\t\t// 是否循环播放\r\n\t\tcycle: true,\r\n\t\t// 项目宽度\r\n\t\twidth: 700,\r\n\t\t// 锚点激活显示的css class\r\n\t\tanchorActiveClass: 'active'\r\n\t};\r\n})(jQuery, hao);","/**\r\n * 首页库存卡包、时段发卡滚动数字组件\r\n */\r\n(function ($, _hao) {\r\n\t// 增加jquery animate对backgroundPosition的支持\r\n\t(function($) {if(!document.defaultView || !document.defaultView.getComputedStyle){var oldCurCSS = $.curCSS;$.curCSS = function(elem, name, force){if(name === 'background-position'){name = 'backgroundPosition';}if(name !== 'backgroundPosition' || !elem.currentStyle || elem.currentStyle[ name ]){return oldCurCSS.apply(this, arguments);}var style = elem.style;if ( !force && style && style[ name ] ){return style[ name ];}return oldCurCSS(elem, 'backgroundPositionX', force) +' '+ oldCurCSS(elem, 'backgroundPositionY', force);};}var oldAnim = $.fn.animate;$.fn.animate = function(prop){if('background-position' in prop){prop.backgroundPosition = prop['background-position'];delete prop['background-position'];}if('backgroundPosition' in prop){prop.backgroundPosition = '('+ prop.backgroundPosition;}return oldAnim.apply(this, arguments);};function toArray(strg){strg = strg.replace(/left|top/g,'0px');strg = strg.replace(/right|bottom/g,'100%');strg = strg.replace(/([0-9\\.]+)(\\s|\\)|$)/g,\"$1px$2\");var res = strg.match(/(-?[0-9\\.]+)(px|\\%|em|pt)\\s(-?[0-9\\.]+)(px|\\%|em|pt)/);return [parseFloat(res[1],10),res[2],parseFloat(res[3],10),res[4]];}$.fx.step. backgroundPosition = function(fx) {if (!fx.bgPosReady) {var start = $.curCSS(fx.elem,'backgroundPosition');if(!start){start = '0px 0px';}start = toArray(start);fx.start = [start[0],start[2]];var end = toArray(fx.end);fx.end = [end[0],end[2]];fx.unit = [end[1],end[3]];fx.bgPosReady = true;}var nowPosX = [];nowPosX[0] = ((fx.end[0] - fx.start[0]) * fx.pos) + fx.start[0] + fx.unit[0];nowPosX[1] = ((fx.end[1] - fx.start[1]) * fx.pos) + fx.start[1] + fx.unit[1];fx.elem.style.backgroundPosition = nowPosX[0]+' '+nowPosX[1];};})(jQuery);\r\n\r\n\t_hao.UI.extend('ScrollNumber', {\r\n\t\tinventory: 0,\r\n\t\tfakeScrollingTimer: null,\r\n\t\tsendScrollTimer: null,\r\n\t\tinit: function(element, options) {\r\n\t\t\tvar self = this;\r\n\t\t\toptions = $.extend({}, _hao.ScrollNumber.defaultOptions, options);\r\n\t\t\tself.base(element, options);\r\n\t\t\tself.refresh();\r\n self.run();\r\n\t\t},\r\n\t\t// 模拟数字滚动动态\r\n\t\tnumAnimate: function(role, numstring) {\r\n\t\t\tvar self = this;\r\n\t var numlen = String(numstring).length,\r\n\t \t$container = self.element.role(role);\r\n\t for (var i = 0; i < numlen; i++) {\r\n\t $container.role('number').eq(i).animate({\r\n\t backgroundPositionY: '-' + (parseInt(String(numstring).charAt(i)) + 1) * self.opt.numImgHeight + 'px'\r\n\t }, 700, 'swing', function() {\r\n\t });\r\n\t }\r\n\t },\r\n\t // 把num左补0至n位数,返回num字符串\r\n\t paddingZero: function(num, n) {\r\n\t var len = num.toString().length;\r\n\t while (len < n) {\r\n\t num = '0' + num;\r\n\t len++;\r\n\t }\r\n\t return num;\r\n\t },\r\n\t // 刷新两个计数\r\n\t\trefresh: function() {\r\n\t\t\tvar self = this;\r\n $.ajax({\r\n url: _hao.ENUM_PROXY.SCROLL_STATUS,\r\n dataType: 'json'\r\n })\r\n .done(function(data) {\r\n clearInterval(self.fakeScrollingTimer);\r\n if (data.status) {\r\n var inventory = parseInt(data.data.inventory, 10);\r\n var autonum = parseInt(data.data.autonum, 10);\r\n var total = parseInt(data.data.receive, 10);\r\n setTimeout(function() {\r\n //random scrolling\r\n self.numAnimate('stock', self.paddingZero(inventory, self.opt.stockPlace));\r\n self.numAnimate('send', self.paddingZero(autonum, self.opt.sendPlace));\r\n self.numAnimate('total', self.paddingZero(total, self.opt.totalPlace));\r\n }, 1000);\r\n }\r\n });\r\n },\r\n // 间隔刷新时段领号数\r\n run: function() {\r\n var self = this;\r\n self.sendScrollTimer = setInterval(function() {\r\n \tself.refresh();\r\n }, self.opt.interval);\r\n }\r\n\t});\r\n\r\n\t_hao.ScrollNumber.defaultOptions = {\r\n\t\tstockPlace: 6,\r\n\t\tsendPlace: 6,\r\n\t\ttotalPlace: 8,\r\n\t\t// 数字图片高度\r\n\t\tnumImgHeight: 35,\r\n\t\t// 时段发卡数刷新周期(ms)\r\n\t\tinterval: 3600000,\r\n\t\t// 时段发卡数下限\r\n\t\tminSend: 10000,\r\n\t\t// 时段发卡数上限\r\n\t\tmaxSend: 20000\r\n\t};\r\n})(jQuery, hao);","(function ($, _hao) {\r\n _hao.extend({\r\n isAct: function (haoInfo) {\r\n if (typeof haoInfo['send_kind_set'] != 'undefined') {\r\n haoInfo['send_kind'] = haoInfo['send_kind_set']['send_kind'];\r\n }\r\n return haoInfo['send_kind'] == _hao.ENUM_VAR.YAO_SEND_KIND || haoInfo['send_kind'] == _hao.ENUM_VAR.LOTTERY_SEND_KIND;\r\n }\r\n });\r\n})(jQuery, hao);","(function ($, _hao) {\r\n _hao.extend({\r\n getSingleIcon: function (haoInfo) {\r\n if (typeof haoInfo.taoStock != 'undefined') {\r\n haoInfo['tao_stock'] = haoInfo['taoStock'];\r\n }\r\n if (typeof haoInfo['send_kind_set'] != 'undefined') {\r\n haoInfo['send_kind'] = haoInfo['send_kind_set']['send_kind'];\r\n }\r\n var iconText = '',\r\n iconShortText = '',\r\n iconLink = '/gift-info-'+haoInfo['gift_id']+'.html',\r\n tipText = '',\r\n iconClass = '';\r\n // 正常抢号和砸蛋\r\n if (haoInfo['send_kind'] == _hao.ENUM_VAR.DIRECT_SEND_KIND || haoInfo['send_kind'] == _hao.ENUM_VAR.EGG_SEND_KIND) {\r\n // 礼包过期or无效\r\n if (haoInfo['send_state'] == 0) {\r\n iconText = '预订';\r\n iconShortText = '预';\r\n if (!!haoInfo['stat_info'] && typeof haoInfo['stat_info']['request_num'] != 'undefined') {\r\n var num = parseInt(haoInfo['stat_info']['request_num'], 10) > 999? '>1千' : haoInfo['stat_info']['request_num'];\r\n tipText = num + '人求补号';\r\n }\r\n // 号未发完(剩余库存不为0)\r\n } else if (haoInfo['stock'] > 0) {\r\n iconText = '抢号';\r\n iconShortText = '抢';\r\n if (!!haoInfo['stat_info'] && haoInfo['stat_info']['fahao']) {\r\n var num = Math.floor(haoInfo['stock']*100/haoInfo['total_count']);\r\n tipText = '剩余'+(num > 0 && num < 1 ? '1': num)+'%';\r\n }\r\n } else if ( haoInfo['stock'] == 0 && haoInfo['tao_stock'] > 0) {// 号未入库或已发完(剩余库存为0),淘号库有号(淘号库存不为0)\r\n iconText = '淘号';\r\n iconShortText = '淘';\r\n if (!!haoInfo['stat_info'] && typeof haoInfo['stat_info']['taohao'] != 'undefined' && typeof haoInfo['tao_stock'] != 'undefined') {\r\n // 计算淘号百分比\r\n var taoDecimal = !!haoInfo['tao_stock'] ? (haoInfo['stat_info']['taohao']/(haoInfo['tao_stock']*10)) : 0;\r\n var taoPercent = 0;\r\n if (taoDecimal >= 1 || taoDecimal == 0) {\r\n taoPercent = 0;\r\n } else {\r\n taoPercent = Math.ceil((1-taoDecimal)*100);\r\n }\r\n tipText = taoPercent +'%号未淘过';\r\n }\r\n } else if ( haoInfo['stock'] == 0 && haoInfo['total_count'] > 0 && haoInfo['tao_stock'] == 0 && haoInfo['tao_state'] != '0') {// 号未入库或已发完(剩余库存为0),淘号库有号(淘号库存不为0)\r\n iconText = '淘号';\r\n iconShortText = '淘';\r\n tipText = '即将开放淘号';\r\n } else if ( haoInfo['stock'] == 0 && haoInfo['total_count'] == 0 && haoInfo['tao_stock'] == 0) {// 号未入库(剩余库存为0,且总号量为0),淘号库无号(淘号库存为0)\r\n iconText = '预订';\r\n iconShortText = '预';\r\n tipText = '礼包准备中';\r\n } else if ( haoInfo['stock'] == 0 && haoInfo['total_count'] > 0 && haoInfo['tao_stock'] == 0 && haoInfo['tao_state'] == '0') {// 号已发完(剩余库存为0,且总号量不为0),淘号库无号(淘号库存为0),没有设置淘号时间(淘号时间为0)\r\n iconText = '预订';\r\n iconShortText = '预';\r\n if (!!haoInfo['stat_info'] && typeof haoInfo['stat_info']['request_num'] != 'undefined') {\r\n var num = parseInt(haoInfo['stat_info']['request_num'], 10) > 999? '>1千' : haoInfo['stat_info']['request_num'];\r\n tipText = num + '人求补号';\r\n }\r\n } else {// 号已发完(剩余库存为0,且总号量不为0),淘号库无号(淘号库存为0),没有设置淘号时间(淘号时间为0)\r\n iconText = '预订';\r\n iconShortText = '预';\r\n if (!!haoInfo['stat_info'] && typeof haoInfo['stat_info']['request_num'] != 'undefined') {\r\n var num = parseInt(haoInfo['stat_info']['request_num'], 10) > 999? '>1千' : haoInfo['stat_info']['request_num'];\r\n tipText = num + '人求补号';\r\n }\r\n }\r\n }\r\n\r\n // 摇号活动、抽奖活动、不登录抽奖活动\r\n if (haoInfo['send_kind'] == _hao.ENUM_VAR.YAO_SEND_KIND || haoInfo['send_kind'] == _hao.ENUM_VAR.LOTTERY_SEND_KIND || haoInfo['send_kind'] == _hao.ENUM_VAR.UNLOGIN_LOTTERY_SEND_KIND) {\r\n // 礼包过期or无效\r\n if (haoInfo['send_state'] == 0) {\r\n iconText = '预订';\r\n iconShortText = '预';\r\n if (!!haoInfo['stat_info'] && typeof haoInfo['stat_info']['request_num'] != 'undefined') {\r\n var num = parseInt(haoInfo['stat_info']['request_num'], 10) > 999? '>1千' : haoInfo['stat_info']['request_num'];\r\n tipText = num + '人求补号';\r\n }\r\n // 活动状态为“准备中”\r\n } else if (haoInfo['yaohao_open'] == '1' || haoInfo['lottery_open'] == '1') {\r\n iconText = '预订';\r\n iconShortText = '预';\r\n tipText = '活动准备中';\r\n } else if ((haoInfo['yaohao_open'] == '2' || haoInfo['lottery_open'] == '2') && haoInfo['act_start'] == '1') {// 活动状态为“已开放”,还有进行中或未开始的活动期次\r\n iconText = '活动';\r\n iconShortText = '抢';\r\n if (typeof haoInfo['act_count'] != 'undefined') {\r\n tipText = haoInfo['act_count'] + '人参与';\r\n }\r\n } else if ((haoInfo['yaohao_open'] == '2' || haoInfo['lottery_open'] == '2') && haoInfo['act_start'] == '2' && haoInfo['tao_stock'] > 0) {// 活动状态为“已开放”,所有活动期次均已结束,淘号库有号(淘号库存不为0)\r\n iconText = '淘号';\r\n iconShortText = '淘';\r\n if (!!haoInfo['stat_info'] && typeof haoInfo['stat_info']['taohao'] != 'undefined' && typeof haoInfo['tao_stock'] != 'undefined') {\r\n tipText = (100 - parseInt(haoInfo['stat_info']['taohao']/(haoInfo['tao_stock']*10)))+'%号未淘过';\r\n }\r\n } else if ((haoInfo['yaohao_open'] == '2' || haoInfo['lottery_open'] == '2') && haoInfo['act_start'] == '2' && haoInfo['tao_stock'] == 0 && haoInfo['tao_state'] != '0') {// 活动状态为“已开放”,所有活动期次均已结束,淘号库无号(淘号库存为0),有设置淘号时间(淘号时间大于0)\r\n iconText = '淘号';\r\n iconShortText = '淘';\r\n tipText = '即将开放淘号';\r\n } else if ((haoInfo['yaohao_open'] == '2' || haoInfo['lottery_open'] == '2') && haoInfo['act_start'] == '2' && haoInfo['tao_stock'] == 0 && haoInfo['tao_state'] == '0') {// 活动状态为“已开放”,所有活动期次均已结束,淘号库无号(淘号库存为0),没有设置淘号时间(淘号时间为0)\r\n iconText = '预订';\r\n iconShortText = '预';\r\n if (typeof haoInfo['act_count'] != 'undefined') {\r\n tipText = haoInfo['act_count'] + '人参与';\r\n }\r\n } else {\r\n iconText = '预订';\r\n iconShortText = '预';\r\n if (!!haoInfo['stat_info'] && typeof haoInfo['stat_info']['request_num'] != 'undefined') {\r\n var num = parseInt(haoInfo['stat_info']['request_num'], 10) > 999? '>1千' : haoInfo['stat_info']['request_num'];\r\n tipText = num + '人求补号';\r\n }\r\n }\r\n }\r\n\r\n if (haoInfo['send_kind'] == _hao.ENUM_VAR.THIRD_PARTY_SEND_KIND) {\r\n iconText = '抢号';\r\n iconShortText = '抢';\r\n }\r\n\r\n switch (iconText) {\r\n case '抢号':\r\n iconClass = 'btn-hao-grab';\r\n break;\r\n case '预订':\r\n iconClass = 'btn-hao-book';\r\n break;\r\n case '淘号':\r\n iconClass = 'btn-hao-tao';\r\n break;\r\n case '活动':\r\n iconClass = 'btn-hao-act';\r\n break;\r\n default:\r\n iconClass = '';\r\n break;\r\n }\r\n return {\r\n 'iconText': iconText,\r\n 'iconShortText': iconShortText,\r\n 'iconClass': iconClass,\r\n 'iconLink': iconLink,\r\n 'tipText': tipText\r\n };\r\n }\r\n });\r\n})(jQuery, hao);","/**\r\n * 游戏列表下拉加载\r\n */\r\n(function ($, _hao) {\r\n _hao.UI.extend('GiftList', {\r\n loading: false,\r\n itemTemplate: '
  • \\\r\n
    \\\r\n \\\r\n \\\r\n {{#picRadius}}\"\"{{/picRadius}}\\\r\n {{^picRadius}}\"\"{{/picRadius}}\\\r\n \\\r\n \\\r\n {{{tipText}}}\\\r\n {{iconText}}\\\r\n \\\r\n \\\r\n {{game_name}}\\\r\n {{only_gift_name}}\\\r\n \\\r\n \\\r\n
    \\\r\n
  • ',\r\n mItemTemplate: '{{#data}}\\\r\n
  • \\\r\n \\\r\n {{#picRadius}}
    \"\"
    {{/picRadius}}\\\r\n {{^picRadius}}
    \"\"
    {{/picRadius}}\\\r\n
    \\\r\n

    {{game_name}}

    \\\r\n

    {{only_gift_name}}

    \\\r\n {{#isAct}}\\\r\n
    \\\r\n 余:\\\r\n \\\r\n {{stock_percent}}%\\\r\n
    \\\r\n {{/isAct}}\\\r\n
    \\\r\n
    \\\r\n {{iconText}}\\\r\n
    \\\r\n
    \\\r\n
  • \\\r\n {{/data}}',\r\n init: function(element, options) {\r\n options = $.extend({}, _hao.GiftList.defaultOptions, options);\r\n this.base(element, options);\r\n this.bindEvents();\r\n },\r\n // 加载列表\r\n getList: function() {\r\n var self = this;\r\n if (self.loading) {\r\n return false;\r\n }\r\n self.loading = true;\r\n $.getJSON(location.href.replace(/\\-\\d+\\./,'-'+self.opt.page+'.'), {})\r\n .done(function(result) {\r\n var html = '';\r\n if (!!_hao.util.isPC) {\r\n html = self.renderList(result.giftList);\r\n } else {\r\n html = self.renderMList(result.giftList);\r\n }\r\n self.element.append(html);\r\n if (result.total <= self.element.find('li').length) {\r\n $.role('more').remove();\r\n }\r\n self.opt.page++;\r\n self.loading = false;\r\n });\r\n },\r\n // 渲染PC端列表数据\r\n renderList: function(data) {\r\n var self = this, html = '';\r\n // 页面初始渲染的最后一个日期\r\n var pageLastDate = self.element.find('.title:last').text(),\r\n // 上一条数据的日期\r\n prevDate = '';\r\n for (var i = 0; i < data.length; i++) {\r\n var haoInfo = data[i];\r\n // 游戏名称\r\n haoInfo.game_name = !!haoInfo.other_gamename? haoInfo.other_gamename : haoInfo.game_name;\r\n haoInfo = $.extend(haoInfo, _hao.getSingleIcon(haoInfo));\r\n haoInfo['tipText'] = haoInfo['tipText'].replace(/(\\d+%?)/, '$1');\r\n\r\n var thisDate = new Date(haoInfo.add_time * 1000),\r\n thisMonth = thisDate.getMonth() + 1,\r\n thisDay = thisDate.getDate();\r\n thisDateStr = (thisMonth > 9? thisMonth: '0'+thisMonth) + '月' + (thisDay > 9? thisDay: '0'+thisDay) + '日';\r\n\r\n switch(haoInfo['game_classid']) {\r\n case _hao.ENUM_VAR.PCGAME_CLASS_ID:// 端游\r\n haoInfo['gameTypeClass'] = 'ico-hpc';\r\n break;\r\n case _hao.ENUM_VAR.YEYOU_CLASS_ID:// 页游\r\n haoInfo['gameTypeClass'] = 'ico-hyy';\r\n break;\r\n case _hao.ENUM_VAR.SHOUYOU_CLASS_ID:// 手游\r\n haoInfo['gameTypeClass'] = 'ico-hsy';\r\n break;\r\n default:\r\n break;\r\n }\r\n haoInfo['pic'] = (haoInfo['game_classid'] == _hao.ENUM_VAR.SHOUYOU_CLASS_ID || !haoInfo['gift_big_pic'])? haoInfo['gift_pic'] : haoInfo['gift_big_pic'];\r\n haoInfo['picRadius'] = (!!haoInfo['square'] && haoInfo['square'] == 1)? true : false;\r\n // console.log(haoInfo['picRadius'], !!haoInfo['square'])\r\n haoInfo['picHeight'] = self.opt.picHeight;\r\n if (thisDateStr == pageLastDate) {// 是上一组日期的数据,直接插入上一组日期中\r\n var itemHtml = Mustache.render(self.itemTemplate, haoInfo);\r\n self.element.find('.plist:last').append(itemHtml);\r\n } else {// 不是当前页面日期内的数据\r\n if (thisDateStr != prevDate) {// 和上一条数据日期不同\r\n // 如果内容html非空,则说明此项之前已经有组,补齐结束标签\r\n html += !!html? '' : '';\r\n html += '

    '+thisDateStr+'上架

    ';\r\n return html;\r\n },\r\n // 渲染移动端列表数据\r\n renderMList: function(data) {\r\n var self = this, html = '';\r\n for (var i = 0; i < data.length; i++) {\r\n var haoInfo = data[i];\r\n // 游戏名称\r\n haoInfo.game_name = !!haoInfo.other_gamename? haoInfo.other_gamename : haoInfo.game_name;\r\n haoInfo = $.extend(haoInfo, _hao.getSingleIcon(haoInfo));\r\n haoInfo['pic'] = !!haoInfo['gift_big_pic']?haoInfo['gift_big_pic']:haoInfo['gift_pic'];\r\n haoInfo['picHeight'] = self.opt.picHeight;\r\n haoInfo['stock_percent'] = !!haoInfo['stock_percent']? haoInfo['stock_percent']: 0;\r\n haoInfo['isAct'] = _hao.isAct(haoInfo);\r\n haoInfo['picRadius'] = (!!haoInfo['square'] && haoInfo['square'] == 1)? true : false;\r\n }\r\n return Mustache.render(self.mItemTemplate, {data: data});\r\n },\r\n // 绑定点击加载事件\r\n bindEvents: function() {\r\n var self = this;\r\n $.role('more').on('click', function() {\r\n self.getList();\r\n });\r\n }\r\n });\r\n _hao.GiftList.defaultOptions = {\r\n // 每页显示记录数\r\n pageSize: 30,\r\n // 初始页数(第一页在页面直接渲染)\r\n page: 2,\r\n picHeight: 120,\r\n picWidth: 160\r\n };\r\n})(jQuery, hao);","/**\r\n * 更新手记模块\r\n */\r\n(function ($, _hao) {\r\n\t_hao.UI.extend('NoteList', {\r\n\t\tloading: false,\r\n\t\ttemplate: '
  • \\\r\n \\\r\n \\\r\n {{note_content}}{{game_class_name}}{{gift_kind_name}}{{iconText}}\\\r\n \\\r\n \\\r\n {{game_name}}{{only_gift_name}}\\\r\n \\\r\n \\\r\n
  • ',\r\n mTemplate: '',\r\n\t\tinit: function(element, options) {\r\n\t\t\toptions = $.extend({}, _hao.NoteList.defaultOptions, options);\r\n\t\t\tthis.base(element, options);\r\n\t\t\tthis.bindEvents();\r\n\t\t},\r\n\t\t// 加载列表\r\n getList: function() {\r\n var self = this;\r\n if (self.loading) {\r\n \treturn false;\r\n }\r\n self.loading = true;\r\n $.getJSON(location.href.replace(/\\-\\d+\\./,'-'+self.opt.page+'.'), {})\r\n .done(function(result) {\r\n \r\n var html = '';\r\n if (_hao.util.isPC) {\r\n html = self.renderList(result);\r\n } else {\r\n html = self.renderMList(result);\r\n }\r\n self.element.append(html);\r\n if (result.total <= self.element.find('li').length) {\r\n $.role('more').remove();\r\n }\r\n self.opt.page++;\r\n self.loading = false;\r\n });\r\n },\r\n // 渲染PC端列表数据\r\n renderList: function(data) {\r\n var self = this,\r\n // 生成的html结构\r\n html = '',\r\n // 模版\r\n template = self.template,\r\n // 页面初始渲染的最后一个日期\r\n pageLastDate = self.element.find('.title:last').text(),\r\n // 上一条数据的日期\r\n prevDate = '';\r\n for (var i = 0; i < data.list.length; i++) {\r\n var haoInfo = data.list[i];\r\n // 游戏名称\r\n haoInfo.game_name = !!haoInfo.other_gamename? haoInfo.other_gamename : haoInfo.game_name;\r\n haoInfo = $.extend(haoInfo, _hao.getSingleIcon(haoInfo));\r\n\r\n var thisDate = new Date(haoInfo.log_time * 1000),\r\n thisMonth = thisDate.getMonth() + 1,\r\n thisDay = thisDate.getDate();\r\n thisDateStr = (thisMonth > 9? thisMonth: '0'+thisMonth) + '月' + (thisDay > 9? thisDay: '0'+thisDay) + '日';\r\n if (thisDateStr == pageLastDate) {// 是上一组日期的数据,直接插入上一组日期中\r\n var itemHtml = Mustache.render(template, haoInfo);\r\n self.element.find('.list:last').append(itemHtml);\r\n } else {// 不是当前页面日期内的数据\r\n if (thisDateStr != prevDate) {// 和上一条数据日期不同\r\n // 如果内容html非空,则说明此项之前已经有组,补齐结束标签\r\n html += !!html? '' : '';\r\n html += '

    '+thisDateStr+'

    ';\r\n return html;\r\n },\r\n //TODO 渲染移动端列表数据(移动端没有更新手记)\r\n renderMList: function(data) {\r\n // var self = this;\r\n // // 模版\r\n // template = self.mTemplate;\r\n // for (var i = 0; i < data.list.length; i++) {\r\n // var haoInfo = data.list[i];\r\n // // 游戏名称\r\n // haoInfo.game_name = !!haoInfo.other_gamename? haoInfo.other_gamename : haoInfo.game_name;\r\n // haoInfo = $.extend(haoInfo, _hao.getSingleIcon(haoInfo));\r\n // haoInfo['pic'] = !!haoInfo['gift_big_pic']?haoInfo['gift_big_pic']:haoInfo['gift_pic'];\r\n // haoInfo['picHeight'] = self.opt.picHeight;\r\n // haoInfo['stock_percent'] = !!haoInfo['stock_percent']? haoInfo['stock_percent']: 0;\r\n // }\r\n // return Mustache.render(self.mItemTemplate, {data: data.list});\r\n },\r\n // 绑定点击加载事件\r\n bindEvents: function() {\r\n var self = this;\r\n $.role('more').on('click', function() {\r\n self.getList();\r\n });\r\n }\r\n\t});\r\n\t_hao.NoteList.defaultOptions = {\r\n\t\t// 每页显示记录数\r\n\t\tpageSize: 30,\r\n\t\t// 初始页数(第一页在页面直接渲染)\r\n\t\tpage: 2,\r\n picHeight: 120,\r\n picWidth: 160\r\n\t};\r\n})(jQuery, hao);","(function ($, _hao) {\r\n\t_hao.extend({\r\n\t\tclipBoard: function ($container, roleName, copyAttribte) {\r\n\t\t\tvar elements = $container.role(roleName);\r\n\r\n\t\t\tfunction clickHandler(event) {\r\n\t\t\t\tvar index = event.data.index;\r\n\t\t\t\tvar text = $(elements[index]).attr(copyAttribte)\r\n\r\n\t\t\t\tif (typeof text == 'undefined') return\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tvar textArea = document.createElement('textarea');\r\n\t\t\t\t\ttextArea.style.position = 'fixed';\r\n\t\t\t\t\ttextArea.style.left = '-10000px';\r\n\t\t\t\t\ttextArea.style.top = '-10000px';\r\n\t\t\t\t\tdocument.body.appendChild(textArea);\r\n\t\t\t\t\ttextArea.value = text;\r\n\t\t\t\t\ttextArea.select();\r\n\t\t\t\t\tdocument.execCommand('copy');\r\n\t\t\t\t\tdocument.body.removeChild(textArea);\r\n\t\t\t\t\talert(_hao.ENUM_MSG.COPY_SUCCESS);\r\n\t\t\t\t}\r\n\t\t\t\tcatch (err) {\r\n\t\t\t\t\talert(_hao.ENUM_MSG.COPY_NOT_ALLOWED);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i = 0; i < elements.length; i++) {\r\n\t\t\t\t$(elements[i]).bind('click', { index: i }, clickHandler);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n})(jQuery, hao);","(function ($, _hao) {\r\n\twindow.haoConfig = window.haoConfig || {};\r\n\t_hao.extend({\r\n\t\tuser: {\r\n\t\t\t// 校验用户是否登录\r\n\t\t\tisLogin: function() {\r\n\t\t\t\treturn App.isLogin();\r\n\t\t\t},\r\n\t\t\t// 校验用户是否登录,校验后执行对应的回调\r\n\t\t\tcheckLogin: function(loginCallback, logoutCallback) {\r\n\t\t\t\tApp.loginCallback(loginCallback, logoutCallback);\r\n\t\t\t},\r\n\t\t\t// 登录方法\r\n\t\t\tlogin: function(redirectURL) {\r\n\t\t\t\tif (App.isInApp) {\r\n\t\t\t\t\tApp.login(redirectURL || false);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tApp.login();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tlogout: function() {\r\n\t\t\t\tApp.logout();\r\n\t\t\t},\r\n\t\t\t// 网站登录\r\n\t\t\tsiteLogin: function() {\r\n\t\t\t\tvar promise = $.getJSON(_hao.ENUM_PROXY.SITE_LOGIN, {gold: '1'});\r\n\t\t\t\tpromise.then(function(data) {\r\n\t\t\t\t\t// 登录成功\r\n\t\t\t\t\tif (data.loginStatus == 1) {\r\n\t\t\t\t\t\t// 保存用户信息\r\n\t\t\t\t\t\t_hao.userInfo.siteLogin = true;\r\n\t\t\t\t\t\t_hao.userInfo = $.extend({}, _hao.user.userInfo, data.userInfo);\r\n\t\t\t\t\t\t// 用户头像\r\n\t\t\t\t\t\t_hao.userInfo.portrait = App.passport().getUserPortrait(App.passport().data('uid'), 1);\r\n\t\t\t\t\t\t// 用户小头像\r\n\t\t\t\t\t\t_hao.userInfo.sPortrait = App.passport().getUserPortrait(App.passport().data('uid'), 0);\r\n\t\t\t\t\t\tApp.trigger(App.EVENTS.siteLoginSuccess);\r\n\t\t\t\t\t} else {// 网站登录失败\r\n\t\t\t\t\t\t// 强制passport退出登录\r\n\t\t\t\t\t\tApp.logout();\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn data;\r\n\t\t\t\t});\r\n\t\t\t\treturn promise;\r\n\t\t\t},\r\n\t\t\t// 绑定站点登录成功后回调,仅执行一次\r\n\t\t\t// 返回注册的回调函数名\r\n\t\t\tloginOnce: function(f) {\r\n\t\t\t\treturn App.one(App.EVENTS.siteLoginSuccess, f);\r\n\t\t\t},\r\n\t\t\t// 网站注销\r\n\t\t\tsiteLogout: function() {\r\n\t\t\t\tvar promise = $.ajax({url: _hao.ENUM_PROXY.SITE_LOGOUT});\r\n\t\t\t\tpromise.success(function() {\r\n\t\t\t\t\tApp.trigger(App.EVENTS.siteLogoutSuccess);\r\n\t\t\t\t});\r\n\t\t\t\treturn promise;\r\n\t\t\t},\r\n\t\t\t// 绑定登出成功后回调,仅执行一次\r\n\t\t\t// 返回注册的回调函数名\r\n\t\t\tlogoutOnce: function(f) {\r\n\t\t\t\treturn App.one(App.EVENTS.siteLogoutSuccess, f);\r\n\t\t\t},\r\n\t\t\t/**\r\n\t\t\t * 注册事前登录操作,仅当登录成功后回调一次,当登录事件中止时立即放弃回调\r\n\t\t\t */\r\n\t\t\tloginChain: function(f) {\r\n\t\t\t\tApp.loginChain(f);\r\n\t\t\t}\r\n\t\t},\r\n\t\tuserInfo: {}\r\n\t});\r\n})(jQuery, hao);","(function ($, _hao) {\r\n\t_hao.UI.extend('Dialog', {\r\n\t\ttemplate: '
    \\\r\n\t\t\t\t\t\t×\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t

    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    ',\r\n\t\tmTemplate: '
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    ',\r\n\t\tinit: function (options) {\r\n\t\t\tthis.opt = $.extend({}, _hao.Dialog.defaultOptions, options);\r\n \t\tthis.base($(_hao.util.isPC? this.template: this.mTemplate), this.opt);\r\n \t\tthis.setHTML();\r\n \t\tthis.setMask();\r\n \t\tthis.setStyle();\r\n \t\tthis.initRole();\r\n \t\tthis.bindEvents();\r\n \t\tthis.render();\r\n\t\t},\r\n\t\trender: function() {\r\n\t\t\t$('body').append(this.element).append(this.mask);\r\n\t\t},\r\n\t\tsetContent: function(contentHTML) {\r\n\t\t\tthis.element.role('content').empty().append(contentHTML);\r\n\t\t},\r\n\t\tsetTitle: function(title) {\r\n\t\t\tthis.element.role('title').empty().append(title);\r\n\t\t},\r\n\t\tsetFooter: function(footer) {\r\n\t\t\tthis.element.role('footer').empty().append(footer);\r\n\t\t},\r\n\t\tsetButtons: function(buttons) {\r\n\t\t\tvar btnHTML = '';\r\n\t\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\t\tif (!!buttons[i].onClick) {\r\n\t\t\t\t\tbtnHTML +='';\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbtnHTML +=''+buttons[i].text+'';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (buttons.length > 1) {\r\n\t\t\t\tbtnHTML = '
    '+btnHTML+'
    ';\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.role('btns').append(btnHTML);\r\n\t\t},\r\n\t\tsetHTML: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tself.setTitle(self.opt.title);\r\n\t\t\tself.setContent(self.opt.content);\r\n\t\t\tself.setButtons(self.opt.buttons);\r\n\t\t\tself.setFooter(self.opt.footer);\r\n\t\t\t// 如果设置分享模块,初始化分享\r\n\t\t\tif (!!self.opt.share) {\r\n\t\t\t\twindow.haoConfig = window.haoConfig || {};\r\n\t\t\t\tpandora.use(['share'], function(Share) {\r\n\t\t\t\t\tnew Share({\r\n\t\t\t\t\t\telement: self.element.role('shareContainer'),\r\n\t\t\t\t\t\tsize: 'l',\r\n\t\t\t\t\t\tshape: 'cir',\r\n\t\t\t\t\t\tshareList: 'qzone,tsina,tqq,renren',\r\n\t\t\t\t\t\tshowLabel: true,\r\n\t\t\t\t\t\tshTitle: window.haoConfig.shareTitle || document.title\r\n\t\t\t\t\t});\r\n\t\t\t\t\tself.element.role('shareContainer').show();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\t\tsetMask: function() {\r\n\t\t\tthis.mask = $.role('dialogMask');\r\n\t\t},\r\n\t\tsetStyle: function() {\r\n\t\t\tthis.element.addClass(this.opt.wrapClass)\r\n\t\t\tthis.element.css({\r\n\t\t\t\t'width': this.opt.width,\r\n\t\t\t\t'height': this.opt.height\r\n\t\t\t});\r\n\t\t\tif (typeof this.opt.position == 'string' && this.opt.position == 'center') {\r\n \t\t\tthis.setCenterPosition();\r\n \t\t} else if (typeof this.opt.position == 'object') {\r\n \t\t\tthis.element.css(this.opt.position);\r\n \t\t}\r\n\t\t},\r\n\t\tbindEvents: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tself.element.role('close').on('click', function() {\r\n\t\t\t\tself.close();\r\n\t\t\t});\r\n\t\t\tself.element.role('btns').find('button').each(function() {\r\n\t\t\t\t$(this).on('click', function() {\r\n\t\t\t\t\tvar index = parseInt($(this).uiData('index'), 10);\r\n\t\t\t\t\tif (index >= 0 && !!self.opt.buttons[index] && !!self.opt.buttons[index].onClick) {\r\n\t\t\t\t\t\tif (typeof self.opt.buttons[index] == 'string' || typeof self[self.opt.buttons[index].onClick] == 'function') {\r\n\t\t\t\t\t\t\tself[self.opt.buttons[index].onClick].call(self);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tself.opt.buttons[index].onClick.call(self);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\t$(window).on('keyup', function(e) {\r\n\t\t\t\tif (e.keyCode == 27) {// esc键\r\n\t\t\t\t\tself.close();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t$(window).on('resize', function() {\r\n\t\t\t\tself.setCenterPosition();\r\n\t\t\t});\r\n\t\t},\r\n\t\topen: function() {\r\n\t\t\tthis.mask.show();\r\n\t\t\tthis.element.show();\r\n\t\t},\r\n\t\tclose: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tself.mask.hide();\r\n\t\t\tself.element.hide();\r\n\t\t\tif (typeof self.opt.onClose == 'function') {\r\n\t\t\t\tself.opt.onClose.call(self);\r\n\t\t\t}\r\n\t\t},\r\n\t\tsetPosition: function(css) {\r\n\t\t\tthis.element.css(css);\r\n\t\t},\r\n\t\tsetCenterPosition: function() {\r\n\t\t\t// var top = ($(window).height() - this.element.height())/2,\r\n\t\t\t// \tleft = ($(window).width())/2;\r\n\t\t\t// top = top < 0 ? 0: top;\r\n\t\t\t// //left = left < 0 ? 0: left;\r\n\t\t\t// this.element.css({top: top, left: left});\r\n\t\t},\r\n\t\tdestroy: function() {\r\n\t\t\t// this.close();\r\n\t\t\tthis.element.remove();\r\n\t\t\tthis.mask.hide();\r\n\t\t\tthis.base();\r\n\t\t}\r\n\t});\r\n\r\n\t$(function() {\r\n\t\tvar $mask = $('
    ');\r\n\t\t$('body').append($mask);\r\n\t});\r\n\t//_hao.util.loadCss(['//ue.17173cdn.com/a/hao/index/2016/v4.0.0/css/dialog.css'], 'hao_ui_dialog');\r\n\r\n\t_hao.Dialog.defaultOptions = {\r\n\t\t// width: 400,\r\n\t\t// height: 300,\r\n\t\ttitle: '弹窗',\r\n\t\tposition: 'center',\r\n\t\tcontent: '',\r\n\t\tfooter: '',\r\n\t\tbuttons: [\r\n\t\t\t{\r\n\t\t\t\ttext: '关闭',\r\n\t\t\t\tonClick: 'close'\r\n\t\t\t}\r\n\t\t],\r\n\t\tonClose: null,\r\n\t\tshare: false,\r\n\t\twrapClass: ''\r\n\t};\r\n})(jQuery, hao);","(function ($, _hao) {\r\n\t_hao.Dialog.extend('Tip', {\r\n\t\tinit: function(options) {\r\n\t\t\toptions = $.extend({}, _hao.Tip.defaultOptions, options);\r\n\t\t\tthis.base(options);\r\n\t\t},\r\n\t\tmsg: function(msgInfo) {\r\n\t\t\tfor (var key in msgInfo) {\r\n\t\t\t\tthis.element.role(key).empty().append(msgInfo[key]);\r\n\t\t\t}\r\n\t\t\tthis.open();\r\n\t\t},\r\n\t\tclose: function() {\r\n\t\t\tthis.base();\r\n\t\t\tthis.setTitle('提示');\r\n\t\t\tthis.element.role('msg').empty();\r\n\t\t\tthis.element.role('subMsg').empty();\r\n\t\t}\r\n\t});\r\n\r\n\t_hao.Tip.defaultOptions = {\r\n\t\ttitle: '提示',\r\n\t\tcontent: '

    ',\r\n\t\tbuttons: []\r\n\t};\r\n})(jQuery, hao);","(function ($, _hao) {\r\n\t_hao.extend({\r\n\t\t// 通用的消息提示弹窗\r\n\t\tmsg: function(msg, subMsg, title) {\r\n\t\t\tif (!_hao.msgDialog) {\r\n\t\t\t\tthis.msgDialog = new _hao.Tip();\r\n\t\t\t}\r\n\t\t\t_hao.msgDialog.msg({\r\n\t\t\t\ttitle: title || '提示',\r\n\t\t\t\tmsg: msg,\r\n\t\t\t\tsubMsg: subMsg\r\n\t\t\t});\r\n\t\t},\r\n\t\terrorMsg: function() {\r\n\t\t\t//_hao.msg();\r\n\t\t}\r\n\t});\r\n})(jQuery, hao);","(function ($, _hao) {\r\n _hao.extend({\r\n pop_wx: {\r\n init: function() {\r\n var win = $(window)\r\n , doc = $(document)\r\n , body = $('body')\r\n , weixinOverlayTip =\r\n $('
    ', { 'class': 'pop-yd weixin-overlay-tip'})\r\n .css({\r\n position: 'fixed'\r\n , top: '0'\r\n , left: '0'\r\n , width: win.width()\r\n , height: win.height()\r\n , zIndex: '9999'\r\n , background: 'rgba(0,0,0,0.6) url(//ue.17173cdn.com/a/newgame/index/2016/v2.8.4/m/img/yd.png) no-repeat right 10%'\r\n , 'background-size': '60% auto'\r\n });\r\n\r\n doc.on('touchstart', '.weixin-overlay-tip', function(e) {\r\n var el = $(e.currentTarget)\r\n el.remove()\r\n })\r\n\r\n body.append(weixinOverlayTip)\r\n }\r\n }\r\n });\r\n})(jQuery, hao);\r\n\r\n","(function ($, _hao) {\r\n\t_hao.extend({\r\n\t\tvalidator: {\r\n\t\t\tENUM: {\r\n\t\t\t\tPHONE_PATTERN: /^1[0-9]{10}$/,\r\n\t\t\t\tPHONE_MSG: '请填写正确的手机号。',\r\n\t\t\t\tMAIL_PATTERN: /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$/,\r\n\t\t\t\tMAIL_MSG: '邮箱格式不正确,请重新输入。',\r\n\t\t\t\tCN_PATTERN: /^[^u4E00-u9FA5]+$/,\r\n\t\t\t\tCN_MSG: '请填写中文。',\r\n\t\t\t\tDIGIT_PATTERN: /^\\d+$/,\r\n\t\t\t\tDIGIT_MSG: '请填写数字。',\r\n\t\t\t\tQQ_PATTERN: /^\\d{5,15}$/,\r\n\t\t\t\tQQ_MSG: '请填写正确的QQ号。',\r\n\t\t\t\tADDR_PATTERN: /^.{2,60}$/, \r\n\t\t\t\tADDR_MSG: '长度为2-60字节。',\r\n\t\t\t\tACCOUNT_PATTERN: /^.{2,30}$/, \r\n\t\t\t\tACCOUNT_MSG: '长度为2-30字节。',\r\n\t\t\t\tNOTEMPTY_MSG: '请填写${fieldName}。'\r\n\t\t\t},\r\n\t\t\tisEmpty: function(value) {\r\n\t\t\t\treturn value === '';\r\n\t\t\t},\r\n\t\t\tnotEmpty: function(value) {\r\n\t\t\t\treturn !_hao.validator.isEmpty(value);\r\n\t\t\t},\r\n\t\t\tmaxLength: function(value, length) {\r\n\t\t\t\treturn value.length <= length;\r\n\t\t\t},\r\n\t\t\tminLength: function(value, length) {\r\n\t\t\t\treturn value.length >= length;\r\n\t\t\t},\r\n\t\t\tgetMessage: function(type, fieldName) {\r\n\t\t\t\tvar msg = _hao.validator.ENUM[type.toUpperCase() + '_MSG'];\r\n\t\t\t\tif (!msg) {\r\n\t\t\t\t\tthrow new Error('message for validator type \"'+ type + '\" not found.')\r\n\t\t\t\t}\r\n\t\t\t\tif (!!fieldName) {\r\n\t\t\t\t\tmsg = msg.replace(/\\${fieldName}/g, fieldName);\r\n\t\t\t\t}\r\n\t\t\t\treturn msg;\r\n\t\t\t},\r\n\t\t\tvalidate: function(field) {\r\n\t\t\t\tvar types = field.type.split(','),// 多个校验类型用逗号隔开\r\n\t\t\t\t\tcheckResult = {\r\n\t\t\t\t\t\tfield: field.field\r\n\t\t\t\t\t};\r\n\t\t\t\t// 循环校验该字段设置的所有校验类型\r\n\t\t\t\tfor (var i = 0; i < types.length; i++) {\r\n\t\t\t\t\tvar type = types[i],\r\n\t\t\t\t\t\terrMsg = _hao.validator.getMessage(type, field.fieldName);\r\n\t\t\t\t\t// 方法校验\r\n\t\t\t\t\tif (!!_hao.validator[type] && typeof _hao.validator[type] == 'function') {\r\n\t\t\t\t\t\tcheckResult.valid = _hao.validator[type](field.value);\r\n\t\t\t\t\t\tcheckResult.msg = checkResult.valid ? '': errMsg;\r\n\t\t\t\t\t} else {// 正则校验\r\n\t\t\t\t\t\ttype = type.toUpperCase();\r\n\t\t\t\t\t\tvar pattern = _hao.validator.ENUM[type+'_PATTERN'];\r\n\t\t\t\t\t\tif (!pattern) {\r\n\t\t\t\t\t\t\tthrow new Error('validator type \"'+ type + '\" not found.')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcheckResult.valid = pattern.test(field.value);\r\n\t\t\t\t\t\tcheckResult.msg = checkResult.valid ? '': errMsg;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// 当前类型校验出错 直接终止循环,返回此错误消息\r\n\t\t\t\t\tif (!checkResult.valid) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// 返回校验结果\r\n\t\t\t\treturn checkResult;\r\n\t\t\t},\r\n\t\t\tgetInvalid: function(fields) {\r\n\t\t\t\tvar errorField = [];\r\n\t\t\t\tfor (var i = 0; i < fields.length; i++) {\r\n\t\t\t\t\tvar field = fields[i], checkResult;\r\n\t\t\t\t\tcheckResult = _hao.validator.validate(field);\r\n\t\t\t\t\tif (!checkResult.valid) {\r\n\t\t\t\t\t\terrorField.push(checkResult);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn errorField;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n})(jQuery, hao);","(function ($, _hao) {\r\n\t_hao.extend({\r\n\t\tsubscribe: {\r\n\t\t\t// 锁定状态,避免重复多次预订行为\r\n\t\t\tlock: false,\r\n\t\t\ttemplate: '
    {{title}}
    \\\r\n\t\t\t\t\t

    {{{subTitle}}}

    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t

    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    ',\r\n\t\t\tmTemplate: '
    {{title}}
    \\\r\n\t\t\t\t\t\t

    {{{subTitle}}}

    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t

    \\\r\n\t\t\t\t\t\t
    ',\r\n\t\t\t// youliTmpl: '
    \\\r\n\t\t\t// \t\t\t
    \\\r\n\t\t\t// \t\t\t\t
    \\\r\n\t\t\t// \t\t\t\t\t
    \\\r\n\t\t\t// \t\t\t\t\t

    扫码安装游鲤目前仅支持android手机

    \\\r\n\t\t\t// \t\t\t\t
    \\\r\n\t\t\t// \t\t\t\t
      \\\r\n\t\t\t// \t\t\t\t\t
    • 专享礼包激活码得码先人一步
    • \\\r\n\t\t\t// \t\t\t\t\t
    • 开服开测实时提醒不担心错过好游戏
    • \\\r\n\t\t\t// \t\t\t\t\t
    • 游戏活动消息推送好礼享不停
    • \\\r\n\t\t\t// \t\t\t\t
    \\\r\n\t\t\t// \t\t\t
    \\\r\n\t\t\t// \t\t\t
    \\\r\n\t\t\t// \t\t\t\t

    你也可以进行 普通预订

    \\\r\n\t\t\t// \t\t\t
    \\\r\n\t\t\t// \t\t
    ',\r\n\t\t\t// mYouliTmpl: '
    \\\r\n\t //

    通过游鲤预订《{{gamename}}》游戏,您将得到以下特权服务:

    \\\r\n\t //
      \\\r\n\t //
    • 专享礼包激活码,得码先人一步
    • \\\r\n\t //
    • 开服开测实时提醒,不担心错过好游戏
    • \\\r\n\t //
    • 游戏活动消息推送,好礼享不停
    • \\\r\n\t //
    \\\r\n\t // 通过游鲤预订\\\r\n\t // 普通预订\\\r\n\t //
    ',\r\n\t\t\t// 获取订阅信息\r\n\t\t\tcheckSchema: function(gameCode) {\r\n\t\t\t\tvar promise = $.getJSON(_hao.ENUM_PROXY.SCHE_GAME,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsche_type: '3',\r\n\t\t\t\t\t\tgame_code: gameCode\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t\treturn promise;\r\n\t\t\t},\r\n\t\t\t// 预订游戏\r\n\t\t\tsubmit: function(gameCode, email, mobile) {\r\n\t\t\t\tvar data = {};\r\n\t\t\t\tdata.sche_type = '1';\r\n\t\t\t\tdata.game_code = gameCode;\r\n\t\t\t\tif (!!email) {\r\n\t\t\t\t\tdata.email = email;\r\n\t\t\t\t}\r\n\t\t\t\tif (!!mobile) {\r\n\t\t\t\t\tdata.mobile = mobile;\r\n\t\t\t\t}\r\n\t\t\t\t_hao.addBIParams(data);\r\n\t\t\t\treturn $.getJSON(_hao.ENUM_PROXY.SCHE_GAME, data);\r\n\t\t\t},\r\n\t\t\t// 取消预订\r\n\t\t\tcancel: function(gameCode, gameName) {\r\n\t\t\t\tvar self = this;\r\n\t\t\t\t// 提示弹窗\r\n\t\t\t\tvar dialog = new _hao.Tip({\r\n\t\t\t\t\ttitle: '取消预订',\r\n\t\t\t\t\tbuttons: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttext: '确定',\r\n\t\t\t\t\t\t\tonClick: function() {\r\n\t\t\t\t\t\t\t\t// 锁定\r\n\t\t\t\t\t\t\t\t_hao.subscribe.lock = true;\r\n\t\t\t\t\t\t\t\t$.getJSON(_hao.ENUM_PROXY.SCHE_GAME,\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tsche_type: '2',\r\n\t\t\t\t\t\t\t\t\t\tgame_code: gameCode\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t.done(function(result) {\r\n\t\t\t\t\t\t\t\t\tdialog.destroy();\r\n\t\t\t\t\t\t\t\t\tif (result.flag == 1) {// 取消预订成功\r\n\t\t\t\t // $.role('subscribe').attr('data-ui-cancel', '0').text('预订');\r\n\t\t\t\t _hao.subscribe.fakeNumber(gameCode, -1);\r\n\t\t\t\t location.reload();\r\n\t\t\t\t } else if (result.flag == 2) {\r\n\t\t\t\t _hao.msg(_hao.ENUM_MSG.GAME_INVALID);\r\n\t\t\t\t } else if (result.flag == 3) {\r\n\t\t\t\t _hao.user.login();\r\n\t\t\t\t } else if (result.flag == 0 || result.flag == 4 || result.flag == 6) {\r\n\t\t\t\t haoDialog.errorPop(_hao.ENUM_MSG.NOT_SUBSCRIBE_YET);\r\n\t\t\t\t } else {\r\n\t\t\t\t haoDialog.errorPop(_hao.ENUM_MSG.SUBSCRIBE_CANCEL_FAIL);\r\n\t\t\t\t }\r\n\t\t\t\t // 解锁\r\n\t\t\t\t\t\t\t\t\t_hao.subscribe.lock = false;\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttext: '取消',\r\n\t\t\t\t\t\t\tonClick: function() {\r\n\t\t\t\t\t\t\t\t// 解锁\r\n\t\t\t\t\t\t\t\t_hao.subscribe.lock = false;\r\n\t\t\t\t\t\t\t\tdialog.destroy();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t});\r\n\t\t\t\tdialog.msg({\r\n\t\t\t\t\tmsg: _hao.htmlMaker(_hao.ENUM_MSG.CANCEL_SUBSCRIBE, {gameName: gameName}),\r\n\t\t\t\t\tsubMsg: _hao.ENUM_MSG.CANCEL_SUBSCRIBE_SUB\r\n\t\t\t\t});\r\n\t\t\t\tdialog.open();\r\n\t\t\t\t// 解锁\r\n\t\t\t\t_hao.subscribe.lock = false;\r\n\t\t\t},\r\n\t\t\t// 订阅成功\r\n\t\t\tsuccess: function(gameCode, email, mobile) {\r\n\t\t\t\t// 修改预订按钮状态\r\n\t\t // $.role('subscribe').attr('data-ui-cancel', '1').text('取消预订');\r\n\t\t _hao.subscribe.fakeNumber(gameCode, 1);\r\n\t\t\t\tvar dialogOption = {\r\n\t\t\t\t\ttitle: '预订成功',\r\n\t\t\t\t\tcontent: '',\r\n\t\t\t\t\tbuttons: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttext : '提交',\r\n\t\t\t\t\t\t\tonClick: function() {\r\n\t\t\t\t\t\t\t\tvar emailInput = $.trim(_hao.subscribe.dialog.element.role('email').val()),\r\n\t\t\t\t\t\t\t\tmobileInput = $.trim(_hao.subscribe.dialog.element.role('mobile').val());\r\n\t\t\t\t\t\t\t\tvar validatOption = [{\r\n\t\t\t\t\t\t\t\t\t\tfield: 'email',\r\n\t\t\t\t\t\t\t\t\t\tfieldName: '邮箱',\r\n\t\t\t\t\t\t\t\t\t\ttype: 'notEmpty',\r\n\t\t\t\t\t\t\t\t\t\tvalue: emailInput\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tfield: 'email',\r\n\t\t\t\t\t\t\t\t\t\tfieldName: '邮箱',\r\n\t\t\t\t\t\t\t\t\t\ttype: 'mail',\r\n\t\t\t\t\t\t\t\t\t\tvalue: emailInput\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tfield: 'mobile',\r\n\t\t\t\t\t\t\t\t\t\tfieldName: '手机',\r\n\t\t\t\t\t\t\t\t\t\ttype: 'notEmpty,phone',\r\n\t\t\t\t\t\t\t\t\t\tvalue: mobileInput\r\n\t\t\t\t\t\t\t\t\t}];\r\n\t\t\t\t\t\t\t\t// 输入校验\r\n\t\t\t\t\t\t\t\tvar invalidFields = _hao.validator.getInvalid(validatOption);\r\n\t\t\t\t\t\t\t\tif (invalidFields.length > 0) {\r\n\t\t\t\t\t\t\t\t\t_hao.subscribe.dialog.element.role('tip').html(invalidFields[0].msg);\r\n\t\t\t\t\t\t\t\t\t_hao.subscribe.dialog.element.role('tipContainer').show();\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t// 校验通过,清除提示\r\n\t\t\t\t\t\t\t\t_hao.subscribe.dialog.element.role('tip').empty();\r\n\t\t\t\t\t\t\t\t_hao.subscribe.dialog.element.role('tipContainer').hide();\r\n\t\t\t\t\t\t\t\t// 提交邮箱绑定\r\n\t\t\t\t\t\t\t\t_hao.subscribe.bindEmail(gameCode, emailInput, mobileInput);\r\n\t\t\t\t\t\t\t\t// TODO 提交手机\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar contentHTML = Mustache.render(_hao.util.isPC?_hao.subscribe.template: _hao.subscribe.mTemplate, {\r\n\t\t\t\t\ttitle: _hao.ENUM_MSG.SUBSCRIBE_SUCCESS,\r\n\t\t\t\t\tsubTitle: !!email? _hao.ENUM_MSG.SUBSCRIBE_SUCCESS_SUB : _hao.ENUM_MSG.SUBSCRIBE_SUCCESS_SUB_NO_EMAIL,\r\n\t\t\t\t\temail: email,\r\n\t\t\t\t\tmobile: mobile\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (!!_hao.subscribe.dialog) {\r\n\t\t\t\t\t_hao.subscribe.dialog.destroy();\r\n\t\t\t\t}\r\n\t\t\t\t// 设置弹窗内容\r\n\t\t\t\tdialogOption.content = contentHTML;\r\n\t\t\t\t// 创建弹窗\r\n\t\t\t\t_hao.subscribe.dialog = new _hao.Dialog(dialogOption);\r\n\t\t\t\t_hao.subscribe.dialog.open();\r\n\t\t\t\t// 更改绑定按钮\r\n\t\t\t\t_hao.subscribe.dialog.element.role('changeEmail').on('click', function() {\r\n\t\t\t\t\t// 显示提交按钮\r\n\t\t\t\t\t_hao.subscribe.dialog.element.role('submit').show();\r\n\t\t\t\t\t_hao.subscribe.dialog.element.role('email').removeAttr('disabled');\r\n\t\t\t\t\t$(this).hide();\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\t// 绑定联系方式\r\n\t\t\tbindEmail: function(gameCode, email, mobile) {\r\n\t\t\t\t$.getJSON(_hao.ENUM_PROXY.SCHE_BIND_EMAIL,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tgame_code: gameCode,\r\n\t\t\t\t\t\temail: email,\r\n\t\t\t\t\t\tmobile: mobile\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t\t.done(function(result) {\r\n\t\t\t\t\t_hao.subscribe.dialog.destroy();\r\n\t\t\t\t\tif(result.status == 1) {// 绑定成功\r\n\t\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.BIND_INFO_SUCCESS, _hao.ENUM_MSG.BIND_INFO_SUCCESS_SUB, _hao.ENUM_MSG.SUBMIT_SUCCESS);\r\n\t\t\t\t\t} else {// 绑定失败\r\n\t\t\t\t\t\t_hao.msg(result.msg, null, _hao.ENUM_MSG.BIND_INFO_FAIL);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\tfakeNumber: function(gameCode, number) {\r\n\t\t\t\tvar total = $.role('subscribe-number').text();\r\n\t\t\t\tif (!!total && parseInt(total, 10) >= 0) {\r\n\t\t\t\t\t$.role('subscribe-number').filter('[data-ui-gamecode='+gameCode+']').text(parseInt(total, 10) + number);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tsubscribeGame: function(gameCode) {\r\n\t\t\t\t_hao.subscribe.submit(gameCode)\r\n\t\t\t\t.done(function(result) {\r\n\t\t\t\t\t// 解锁\r\n\t\t\t\t\t_hao.subscribe.lock = false;\r\n\t\t\t\t\tif (result.flag == 1) { //成功预订\r\n\t\t _hao.subscribe.success(gameCode, result.data.email, result.data.mobile);\r\n\t\t _hao.trackBiClick(gameCode || 0, 'gift-follow');\r\n\t\t $.role('subscribe')\r\n\t\t\t\t\t\t\t\t\t\t\t.addClass('disabled')\r\n\t\t\t\t\t\t\t\t\t\t\t.text('已预订')\r\n\t\t\t\t\t\t\t\t\t\t\t.attr('data-ui-followed', '1');\r\n\t\t $('.js-subscribe')\r\n\t\t\t\t\t\t\t\t\t\t\t.addClass('disabled')\r\n\t\t\t\t\t\t\t\t\t\t\t.text('已预订')\r\n\t\t\t\t\t\t\t\t\t\t\t.attr('data-ui-followed', '1');\r\n\t\t } else if (result.flag == 2) {// 入参不是有效的gamecode\r\n\t\t _hao.msg(_hao.ENUM_MSG.SUBSCRIBE_GAMECODE_INVALID);\r\n\t\t } else if (result.flag == 3) {// 未登录或未认证邮箱\r\n\t\t _hao.user.login();\r\n\t\t _hao.user.loginChain(function() {\r\n\t\t \t_hao.subscribe.subscribeGame(gameCode);\r\n\t\t });\r\n\t\t } else if (result.flag == 4) {// 预订失败\r\n\t\t _hao.msg(_hao.ENUM_MSG.SUBSCRIBE_ERROR);\r\n\t\t } else if (result.flag == 5) {// 已经预订过该游戏\r\n\t\t _hao.subscribe.success(gameCode, result.data.email, result.data.mobile);\r\n\t\t } else if (result.flag == 0) {// 游戏不存在\r\n\t\t _hao.msg(_hao.ENUM_MSG.GAME_INVALID);\r\n\t\t } else {\r\n\t\t _hao.msg(_hao.ENUM_MSG.SUBSCRIBE_FAIL);\r\n\t\t }\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\t// subscribeByYouli: function(gameCode, gameName) {\r\n\t\t\t// \tvar contentHTML = Mustache.render(_hao.util.isPC?_hao.subscribe.youliTmpl: _hao.subscribe.mYouliTmpl, {\r\n\t\t\t// \t\tgamename: gameName\r\n\t\t\t// \t});\r\n\t\t\t// \tvar dialogOption = {\r\n\t\t\t// \t\ttitle: '通过游鲤预订《'+gameName+'》',\r\n\t\t\t// \t\tcontent: contentHTML,\r\n\t\t\t// \t\tbuttons: []\r\n\t\t\t// \t};\r\n\t\t\t// \t_hao.subscribe.dialog = new _hao.Dialog(dialogOption);\r\n\r\n\t\t\t// \t$('.dialog-bd').css({\r\n\t\t\t// \t\t'overflow': 'visible',\r\n\t\t\t// \t\t'overflow-x': 'visible'\r\n\t\t\t// \t})\r\n\r\n\t\t\t// \tvar youliUrlParams\r\n\t\t\t// \t, newGameCode = ued.newgameCode\r\n // , uid = Passport.data('uid')\r\n // , youliUrlParams = 'page=info&actionType=follow&code='+newGameCode+''\r\n // , youliDlUrl\r\n // if ( uid ) {\r\n // youliUrlParams = youliUrlParams+'&user='+uid+''\r\n // }\r\n\r\n // youliDlUrl = 'https://youli.17173.com/app/download.shtml?utm_source=173yl&utm_medium=newgame&'+youliUrlParams+'&ssid='+ued.pingjs.get('ssid')+''\r\n\r\n\t\t\t// \tif (_hao.util.isPC) {\r\n\t\t\t// \t\t_hao.util.getTinyLink(youliDlUrl, '5b90f7437866df0001eb9a42')\r\n\t // .done(function(url) {\r\n\t // if (url) {\r\n\t // pandora.use([ 'qrcode'], function(Qrcode) {\r\n\t // new Qrcode({\r\n\t // element: '.dialog-code-youli div',\r\n\t // text: url,\r\n\t // size : 128\r\n\t // });\r\n\t // });\r\n\t // }\r\n\t // })\r\n\t\t\t// \t}\r\n\r\n\t\t\t// \t// the mobile\r\n // $('.dialog-bt-engage-by-youli').on('click', function(e) {\r\n // \te.preventDefault();\r\n\r\n\t\t\t// if (_hao.util.isWexinQQBrowser) {\r\n\t\t\t// _hao.pop_wx.init();\r\n\t\t\t// }\r\n\t\t\t// else {\r\n\t\t\t// _hao.util.checkOpen(function (opend) {\r\n\t\t\t// if (!opend) {\r\n\t\t\t// location.href = youliDlUrl;\r\n\t\t\t// }\r\n\t\t\t// });\r\n\t\t\t// location.href = 'yl://youli?page=info&actionType=follow&newGameCode='+newGameCode+'';\r\n\t\t\t// }\r\n\t\t\t// })\r\n\r\n\t\t\t// \t$('.dialog-bt-engage-normal').on('click', function() {\r\n\t\t\t// \t\t// 锁定\r\n\t\t\t// \t _hao.subscribe.lock = true;\r\n\t\t\t// \t\t_hao.subscribe.subscribeGame(gameCode);\r\n\t\t\t// \t})\r\n\r\n\t\t\t// \t_hao.subscribe.dialog.open();\r\n\t\t\t// },\r\n\t\t\t// handleSubscribeByYouli: function(gameCode, gameName) {\r\n\t\t\t// \tif (Passport.data('uid')) {\r\n\t\t\t// \t\t_hao.subscribe.subscribeByYouli(gameCode, gameName);\r\n\t\t\t// \t} else {\r\n\t\t\t// \t\t_hao.user.login();\r\n // _hao.user.loginChain(function() {\r\n // \t_hao.subscribe.subscribeByYouli(gameCode, gameName);\r\n // });\r\n\t\t\t// \t}\r\n\t\t\t// }\r\n\t\t}\r\n\t});\r\n\t$(function() {\r\n\t\t// 绑定预订按钮\r\n\t\t$.role('subscribe').on('click', function() {\r\n\t\t\tvar $this = $(this);\r\n\t\t\t// console.log(_hao.subscribe)\r\n\r\n\t\t\tif (!!_hao.subscribe.lock || $this.uiData('followed')) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (!$this.uiData('cancel') || $this.uiData('cancel') == '0') {\r\n\t\t\t\tvar gameCode = $this.uiData('gamecode')\r\n\t\t\t\t\t, gameName = $this.uiData('gamename')\r\n\t\t\t\t\t, gameClassName = ued.gameClassName || '端游';\r\n\r\n\t\t\t\t// if (gameClassName != '页游' && (_hao.util.isPC || _hao.util.isAndroid)) {\r\n\t\t\t\t// \t_hao.subscribe.handleSubscribeByYouli(gameCode, gameName);\r\n\t\t\t\t// } else {\r\n\t\t\t\t// \t// 锁定\r\n\t\t\t // _hao.subscribe.lock = true;\r\n\t\t\t\t// \t_hao.subscribe.subscribeGame(gameCode);\r\n\t\t\t\t// }\r\n\t\t\t\t_hao.subscribe.lock = true;\r\n\t\t\t\t_hao.subscribe.subscribeGame(gameCode);\r\n\r\n\t\t\t} else {\r\n\t\t\t\t// 锁定\r\n\t\t\t\t_hao.subscribe.lock = true;\r\n\t\t\t\t_hao.subscribe.cancel($this.uiData('gamecode'), $this.uiData('gamename'));\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n})(jQuery, hao);\r\n","/**\r\n * 发号问卷模块\r\n * 移动端和PC端共用一套结构 所以不设置template\r\n */\r\n(function ($, _hao) {\r\n\t_hao.UI.extend('Questionnaire', {\r\n\t\ttemplate: '
    \\\r\n\t\t\t\t\t\t{{{questionsHTML}}}\\\r\n\t\t\t\t\t\t

    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    ',\r\n\t\tmTemplate: '
    \\\r\n\t\t\t\t\t\t

    请完成问卷

    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t{{{questionsHTML}}}\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    ',\r\n\t\tinit: function(options) {\r\n\t\t\tthis.base(options);\r\n\t\t},\r\n\t\t// 渲染问卷内容\r\n\t\trender: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar template = _hao.util.isPC ? self.template : self.mTemplate;\r\n\t\t\tvar questionsHTML = '';\r\n\t\t\tfor (var i = 0; i < self.opt.questions.length; i++) {\r\n\t\t\t\tquestionsHTML += self.renderQuestion(self.opt.questions[i], i);\r\n\t\t\t};\r\n\t\t\treturn Mustache.render(template, {questionsHTML: questionsHTML});\r\n\t\t},\r\n\t\t// 渲染题目\r\n\t\trenderQuestion: function(questionData, index) {\r\n\t\t\tvar self = this;\r\n\t\t\tquestionData.exClass = '';\r\n\t\t\tvar componentHTML = '';\r\n\t\t\tswitch (questionData.type) {\r\n\t\t\t\tcase '1':// 单选\r\n\t\t\t\t\tfor (var key in questionData.items) {\r\n\t\t\t\t\t\tvar id = 'a_'+questionData.id+'_'+key;\r\n\t\t\t\t\t\tcomponentHTML += '

    '\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase '2':// 多选\r\n\t\t\t\t\tfor (var key in questionData.items) {\r\n\t\t\t\t\t\tvar id = 'a_'+questionData.id+'_'+key;\r\n\t\t\t\t\t\tcomponentHTML += '

    '\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase '3':// 填空\r\n\t\t\t\t\tcomponentHTML = '';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase '4':// 问答\r\n\t\t\t\t\tcomponentHTML = '';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tvar html = '
    \\\r\n\t\t\t\t\t\t

    '+(index+1)+'. '+questionData.title+''+(questionData.required=='1'?'(必答)':'')+(self.opt.type=='2'?'('+(questionData.score)+'分)':'')+'

    \\\r\n\t\t\t\t\t\t
    ' + componentHTML + '
    '+\r\n\t\t\t\t\t\t(!_hao.util.isPC && self.opt.questions.length == index + 1 ? '

    ' : '') +\r\n\t\t\t\t\t\t'
    ';\r\n\t\t\treturn html;\r\n\t\t},\r\n\t\ttrigger: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tself.answers = [];\r\n\t\t\t// 创建弹窗\r\n\t\t\tvar dialogOptions = {\r\n\t\t\t\ttitle: '完成问卷',\r\n\t\t\t\tbuttons: [],\r\n\t\t\t\tonClose: function() {\r\n\t\t\t\t\tthis.destroy();\r\n\t\t\t\t\tself.dialog = null;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tself.dialog = new _hao.Dialog(dialogOptions);\r\n\t\t\tself.dialog.element.addClass('dialog-survey');\r\n\t\t\tself.dialog.setContent(self.render());\r\n\t\t\tself.bindEvents();\r\n\t\t\t// if (_hao.util.isPC) {\r\n\t\t\t// \tself.dialog.element.css({ 'top' : '15%'});\r\n\t\t\t// }\r\n\t\t\tself.dialog.open();\r\n\t\t},\r\n\t\t// 提交问卷\r\n\t\tsubmit: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 获取回答\r\n\t\t\tself.getAnswer();\r\n\t\t\t// 问卷未完成\r\n\t\t\tif (!self.isFinish()) {\r\n\t\t\t\tself.dialog.element.role('tip').html(_hao.ENUM_MSG.QUESTION_NOT_FINISH);\r\n\t\t\t\tself.dialog.element.role('tipContainer').show();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t// 是考试类问卷且没有达到及格分数线\r\n\t\t\tif (self.opt.type == '2' && self.getScore() < parseInt(self.opt.pass_score, 10)) {\r\n\t\t\t\tself.dialog.element.role('tip').html(_hao.ENUM_MSG.QUESTION_NOT_PASS);\r\n\t\t\t\tself.dialog.element.role('tipContainer').show();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tself.dialog.element.role('tip').empty();\r\n\t\t\tself.dialog.element.role('tipContainer').hide();\r\n\t\t\tself.dialog.close();\r\n\t\t\t// 成功回调方法 传入回答数据\r\n\t\t\tself.opt.successHandler(self.answers);\r\n\t\t},\r\n\t\t// 获取所有回答值\r\n\t\tgetAnswer: function() {\r\n\t\t\tvar self = this, answers = [];\r\n\t\t\t// 遍历问卷题目\r\n\t\t\tfor (var i = 0; i < self.opt.questions.length; i++) {\r\n\t\t\t\tvar questionData = self.opt.questions[i];\r\n\t\t\t\tvar $question = self.dialog.element.role('question').filter('[data-ui-index='+questionData.id+']');\r\n\t\t\t\tif ($question.length > 0 ) {\r\n\t\t\t\t\tswitch (questionData.type) {\r\n\t\t\t\t\t\tcase '1':// 单选\r\n\t\t\t\t\t\tcase '2':// 多选\r\n\t\t\t\t\t\t\tvar answer = [];\r\n\t\t\t\t\t\t\t$question.find('input:checked').each(function() {// 获取所有选中项的答案值\r\n\t\t\t\t\t\t\t\t// 需要获取的是key,而不是key对应的选项内容\r\n\t\t\t\t\t\t\t\tanswer.push($(this).val());\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tanswers.push({id: questionData.id, answer: answer.join(',')});\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase '3':// 填空\r\n\t\t\t\t\t\tcase '4':// 问答\r\n\t\t\t\t\t\t\tvar $input = $question.find('input, textarea');\r\n\t\t\t\t\t\t\tif ($input.length > 0) {\r\n\t\t\t\t\t\t\t\tanswers.push({id: questionData.id, answer: $.trim($input.eq(0).val())});\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tanswers.push({id: questionData.id, answer: ''});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tanswers.push({id: questionData.id, answer: ''});\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tself.answers = answers;\r\n\t\t},\r\n\t\t// 校验问卷是否填写完成\r\n\t\tisFinish: function() {\r\n\t\t\tvar self = this, isFinish = true;\r\n\t\t\t// 循环每一题\r\n\t\t\tfor (var i = 0; i < self.opt.questions.length; i++) {\r\n\t\t\t\tif (self.opt.questions[i].required == '1' && self.answers[i].answer == '') {// 必填项没有回答内容\r\n\t\t\t\t\tisFinish = false;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn isFinish;\r\n\t\t},\r\n\t\t// 计算问卷得分\r\n\t\tgetScore: function() {\r\n\t\t\tvar self = this, score = 0;\r\n\t\t\t// 循环每一题\r\n\t\t\tfor (var i = 0; i < self.opt.questions.length; i++) {\r\n\t\t\t\t// 回答的序号和正确答案选项序号一致\r\n\t\t\t\tif (self.opt.questions[i].rightContent == self.answers[i].answer) {\r\n\t\t\t\t\tscore += parseInt(self.opt.questions[i].score, 10);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn score;\r\n\t\t},\r\n\t\tbindEvents: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tself.dialog.element.role('submit').bind('click', function() {\r\n\t\t\t\tself.submit();\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\t_hao.Questionnaire.defaultOptions = {};\r\n})(jQuery, hao);","(function ($, _hao) {\r\n\r\n\t_hao.UI.extend('UserForm', {\r\n\t\ttemplate: '
    \\\r\n\t\t\t\t\t\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t

    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t
    ',\r\n\t\tmTemplate: '
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t

    \\\r\n\t\t\t\t\t
    ',\r\n\t\tinit: function(options) {\r\n\t\t\toptions = $.extend({}, _hao.UserForm.defaultOptions, options);\r\n\t\t\tthis.base(options);\r\n\t\t},\r\n\t\t// 渲染表单\r\n\t\tgetFormContent: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar fields = self.opt.fields,\r\n\t\t\t\tconfig = self.opt.fieldsConfig;\r\n\t\t\tvar html = '
    '+self.opt.title+'
    \\\r\n\t\t\t\t

    '+self.opt.subTitle+'

    ';\r\n\t\t\t// 表单字段\r\n\t\t\thtml += self.renderField('real_name');\r\n\t\t\thtml += self.renderField('mobile', fields.mobile);\r\n\t\t\thtml += self.renderField('qq', fields.qq);\r\n\t\t\thtml += self.renderField('email', fields.email);\r\n\t\t\thtml += self.renderField('address', fields.address);\r\n\t\t\thtml += self.renderField('game_account', fields.game_account);\r\n\t\t\thtml += self.renderField('game_server', fields.game_server);\r\n\t\t\t// 原来是游戏角色名,后改为填写手机型号\r\n\t\t\thtml += self.renderField('game_role', fields.game_role);\r\n\t\t\treturn html;\r\n\t\t},\r\n\t\t// 渲染字段的html\r\n\t\trenderField: function(field) {\r\n\t\t\tvar html = '';\r\n\t\t\tif (this.opt.fields.hasOwnProperty(field)) {\r\n\t\t\t\thtml = Mustache.render(_hao.util.isPC? this.template : this.mTemplate, {\r\n\t\t\t\t\tfieldKey: field,\r\n\t\t\t\t\tfieldName: this.opt.fieldsConfig[field].fieldName,\r\n\t\t\t\t\tfieldValue: this.opt.fields[field]\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\treturn html;\r\n\t\t},\r\n\t\t// 触发入口方法,表单弹窗\r\n\t\ttrigger: function(userInfo) {\r\n\t\t\tvar self = this;\r\n\t\t\t// 创建弹窗\r\n\t\t\tvar dialogOptions = {\r\n\t\t\t\ttitle: '完善联系方式',\r\n\t\t\t\tcontent: self.getFormContent(),\r\n\t\t\t\tbuttons: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'text': '提交',\r\n\t\t\t\t\t\tonClick: function() {\r\n\t\t\t\t\t\t\tself.submit();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tonClose: function() {\r\n\t\t\t\t\tthis.destroy();\r\n\t\t\t\t\tself.dialog = null;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tself.dialog = new _hao.Dialog(dialogOptions);\r\n\t\t\tself.bindEvents();\r\n\t\t\tself.dialog.open();\r\n\t\t},\r\n\t\t// 关闭表单\r\n\t\tclose: function() {\r\n\t\t\tthis.dialog.close();\r\n\t\t},\r\n\t\t// 提交问卷\r\n\t\tsubmit: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 表单填写不正确\r\n\t\t\tvar checkResult = self.isFormValid();\r\n\t\t\tif (!checkResult) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tvar postData = $.extend({}, self.opt.postData, checkResult);\r\n\t\t\tself.dialog.element.role('tip').empty().hide();\r\n\t\t\t// 提交接口保存用户信息\r\n\t\t\t$.ajax({\r\n\t\t\t\turl: self.opt.submitUrl,\r\n\t\t\t\tdata: postData,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: self.opt.submitType\r\n\t\t\t})\r\n\t\t\t.done(function(result) {\r\n\t\t\t\tif (!!self.opt.submitHandler && typeof self.opt.submitHandler == 'function') {\r\n\t\t\t\t\tself.opt.submitHandler.call(self, result);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 校验字段,如果验证通过,返回字段键值对\r\n\t\tvalidate: function(fields) {\r\n\t\t\tvar self = this, isValid = true, userInfo = {};\r\n\t\t\t// 循环每个字段\r\n\t\t\tfor (var i = 0; i < fields.length; i++) {\r\n\t\t\t\tvar fieldKey = fields[i], validatOption = [];\r\n\r\n\t\t\t\t// 字段对应的弹窗输入区域\r\n\t\t\t\tvar $item = self.dialog.element.role('field').filter('[data-ui-field='+fieldKey+']'),\r\n\t\t\t\t\tinputValue = $.trim($item.role('input').val());\r\n\r\n\t\t\t\t// 配置校验规则\r\n\t\t\t\tvar fieldCfg = $.extend({}, self.opt.fieldsConfig[fieldKey]);\r\n\t\t\t\tfieldCfg.value = inputValue;\r\n\t\t\t\tvalidatOption.push(fieldCfg);\r\n\t\t\t\t// 校验字段 返回有错误的字段\r\n\t\t\t\tvar invalidFields = _hao.validator.getInvalid(validatOption);\r\n\r\n\t\t\t\t// 字段有错误\r\n\t\t\t\tif (invalidFields.length > 0) {\r\n\t\t\t\t\tself.showError($item, invalidFields[0].msg);\r\n\t\t\t\t\tisValid = false;\r\n\t\t\t\t} else {// 字段校验通过\r\n\t\t\t\t\t// 隐藏提示\r\n\t\t\t\t\t$item.role('tip').html('').hide();\r\n\t\t\t\t\t// 输入值存入用户信息\r\n\t\t\t\t\tuserInfo[fieldKey] = inputValue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn isValid ? userInfo: isValid;\r\n\t\t},\r\n\t\t// 校验整个表单\r\n\t\tisFormValid: function() {\r\n\t\t\tvar self = this, fields = [];\r\n\t\t\tfor (var key in self.opt.fields) {\r\n\t\t\t\tfields.push(key);\r\n\t\t\t}\r\n\t\t\treturn self.validate(fields);\r\n\t\t},\r\n\t\t// 显示错误\r\n\t\tshowError: function(field, msg) {\r\n\t\t\tif (typeof field == 'string') {\r\n\t\t\t\tfield = this.dialog.element.findUI('field', field);\r\n\t\t\t}\r\n\t\t\tif (!!field.role('tip') && field.role('tip').length > 0) {\r\n\t\t\t\tfield.role('tip').html(msg).show();\r\n\t\t\t}\r\n\t\t},\r\n\t\t// 绑定事件\r\n\t\tbindEvents: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 遍历表单每个字段\r\n\t\t\tself.dialog.element.role('field').each(function() {\r\n\t\t\t\tvar $this = $(this);\r\n\t\t\t\t// 校验输入正确性\r\n\t\t\t\t$this.role('input').blur(function() {\r\n\t\t\t\t\tself.validate([$this.uiData('field')]);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\t_hao.UserForm.defaultOptions = {\r\n\t\ttitle: _hao.ENUM_MSG.USER_INFO_TITLE,\r\n\t\tsubTitle: _hao.ENUM_MSG.USER_INFO_TITLE_SUB,\r\n\t\tsubmitUrl: '',\r\n\t\tsubmitHandler: function() {\r\n\t\t},\r\n\t\tsubmitType: 'post',\r\n\t\tpostData: {},\r\n\t\tfieldsConfig: {\r\n\t\t\treal_name: {\r\n\t\t\t\tfield: 'real_name',\r\n\t\t\t\tfieldName: '姓名',\r\n\t\t\t\ttype: 'notEmpty'\r\n\t\t\t},\r\n\t\t\tmobile: {\r\n\t\t\t\tfield: 'mobile',\r\n\t\t\t\tfieldName: '手机号码',\r\n\t\t\t\ttype: 'notEmpty,phone'\r\n\t\t\t},\r\n\t\t\tqq: {\r\n\t\t\t\tfield: 'qq',\r\n\t\t\t\tfieldName: 'QQ',\r\n\t\t\t\ttype: 'notEmpty,qq'\r\n\t\t\t},\r\n\t\t\temail: {\r\n\t\t\t\tfield: 'email',\r\n\t\t\t\tfieldName: '邮箱',\r\n\t\t\t\ttype: 'notEmpty,mail'\r\n\t\t\t},\r\n\t\t\taddress: {\r\n\t\t\t\tfield: 'address',\r\n\t\t\t\tfieldName: '地址',\r\n\t\t\t\ttype: 'notEmpty,addr'\r\n\t\t\t},\r\n\t\t\tgame_account: {\r\n\t\t\t\tfield: 'game_account',\r\n\t\t\t\tfieldName: '微信帐号',\r\n\t\t\t\ttype: 'notEmpty,account'\r\n\t\t\t},\r\n\t\t\tgame_server: {\r\n\t\t\t\tfield: 'game_server',\r\n\t\t\t\tfieldName: '游戏服务器',\r\n\t\t\t\ttype: 'notEmpty,account'\r\n\t\t\t},\r\n\t\t\tgame_role: {\r\n\t\t\t\tfield: 'game_role',\r\n\t\t\t\tfieldName: '手机型号',\r\n\t\t\t\ttype: 'notEmpty'\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n})(jQuery, hao);\r\n","(function ($, _hao) {\r\n\t_hao.extend({\r\n\t\t// 简单工厂模式创建验证码实例\r\n\t\tcaptchaFactory: {\r\n\t\t\tcreate: function(options) {\r\n\t\t\t\tvar captcha, captchaType = '' + options.captchaType;\r\n\t\t\t\tswitch(captchaType) {\r\n\t\t\t\t\t// case _hao.ENUM_VAR.GEETEST_CAPTCHA_TYPE:// 极验验证码\r\n\t\t\t\t\t// \tcaptcha = new _hao.GeetestCaptcha(options);\r\n\t\t\t\t\t// \tbreak;\r\n\t\t\t\t\tcase _hao.ENUM_VAR.TENCENT_CAPTCHA_TYPE:// 腾讯验验证码\r\n\t\t\t\t\t\tcaptcha = new _hao.TencentCaptcha(options);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase _hao.ENUM_VAR.SMS_CAPTCHA_TYPE:// 下行短信验证码(含语音接听)\r\n\t\t\t\t\t\tcaptcha = new _hao.SMSCaptcha(options);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase _hao.ENUM_VAR.CN_CAPTCHA_TYPE:// 中文验证码\r\n\t\t\t\t\t\tcaptcha = new _hao.CNCaptcha(options);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase _hao.ENUM_VAR.EN_CAPTCHA_TYPE:// 英文图片验证码\r\n\t\t\t\t\t\tcaptcha = new _hao.ENCaptcha(options);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase _hao.ENUM_VAR.UPSMS_CAPTCHA_TYPE:// 上行短信验证码\r\n\t\t\t\t\t\tcaptcha = new _hao.UpSMSCaptcha(options);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase _hao.ENUM_VAR.VOICE_CAPTCHA_TYPE:// 语音验证码\r\n\t\t\t\t\t\tcaptcha = new _hao.VoiceCaptcha(options);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (!!!captcha) {\r\n\t\t\t\t\tthrow new Error('type '+options.captchaType+' validator not found.');\r\n\t\t\t\t}\r\n\t \treturn captcha;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t_hao.UI.extend('Captcha', {\r\n\t\tinit: function (options) {\r\n\t\t\tthis.base(options);\r\n\t\t},\r\n\t\ttrigger: function() {},\r\n\t\tover: function() {},\r\n\t\tcaptchaInvalid: function() {\r\n\t\t\talert(_hao.ENUM_MSG.CAPTCHA_ERROR);\r\n\t\t}\r\n\t});\r\n\t\r\n})(jQuery, hao);","(function ($, _hao) {\r\n /**\r\n * xCaptcha v0.1.0\r\n * Date: 2016-05-07\r\n */\r\n $.fn.sudoku = function(options) {\r\n var debug = false;\r\n var so = this;\r\n var defaults = {\r\n success : function() {},\r\n };\r\n var opts = $.extend(defaults, options);\r\n opts.feature = typeof opts.feature == 'undefined' ? 'xcaptcha' : opts.feature;\r\n opts.url = typeof opts.url == 'undefined' ? location.href.replace(/\\#.*/, '') : opts.url;\r\n var cHtml = Array();\r\n var chartIndex = [];\r\n \r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    验证码
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('');\r\n cHtml.push('换一组');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    点击下框内文字依次选出上图中的汉字
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml.push('
    ');\r\n cHtml = cHtml.join('');\r\n \r\n var refreshCaptcha = function(isRefresh) {\r\n\r\n if (debug) console.log('function refresh');\r\n var captchaUrl = opts.url.indexOf('?') != -1 ? opts.url+'&'+opts.feature+'=refresh'+(!!isRefresh? '&re=1': '') : opts.url+'?'+opts.feature+'=refresh'+(!!isRefresh? '&re=1': '');\r\n\r\n clearInput();\r\n $('.xcaptcha_status img').hide();\r\n \r\n $.ajax({\r\n url: captchaUrl,\r\n dataType: 'json',\r\n cache: false,\r\n async: true,\r\n success: function(data) {\r\n \r\n loadCaptcha(data.url);\r\n so.data('xcaptcha.sudoku.hash', [data.hash1, data.hash2]);\r\n if (so.find('.xcaptcha_component').is(':hidden')) so.find('.xcaptcha_component').show();\r\n }\r\n });\r\n };\r\n \r\n var clearInput = function() {\r\n \r\n if (debug) console.log('function clearInput');\r\n \r\n chartIndex = [];\r\n so.find('.xcaptcha_grid_input div').not(':last').removeClass();\r\n };\r\n \r\n var loadCaptcha = function(captchaImageUrl) {\r\n\r\n if (debug) console.log('function loadCaptcha');\r\n \r\n so.find('.xcaptcha_full_image').remove();\r\n so.prepend('');\r\n };\r\n \r\n var error = function() {\r\n \r\n if (debug) if (debug) console.log('function error');\r\n \r\n so.find('.xcaptcha_help').html('验证码输入错误,请重新输入!');\r\n \r\n setTimeout(function() {\r\n \r\n refreshCaptcha();\r\n so.find('.xcaptcha_help').html('点击下框内文字依次选出上图中的汉字');\r\n }, 1000);\r\n }\r\n \r\n var renderCaptcha = function() {\r\n \r\n if (debug) console.log('function renderCaptcha');\r\n \r\n so.html(cHtml);\r\n // 刷新验证码\r\n so.find('.xcaptcha_img_change').unbind('click').bind('click', function() {\r\n \r\n if (debug) console.log('click event change')\r\n \r\n if (chartIndex.length == 4) return false;\r\n refreshCaptcha(true);\r\n });\r\n \r\n so.find('.xcaptcha_backspace').unbind('click').bind('click', function() {\r\n \r\n if (debug) console.log('click event backspace');\r\n \r\n if (chartIndex.length == 0 || chartIndex.length == 4) return false;\r\n chartIndex.pop();\r\n $((so.find('.xcaptcha_grid_input div'))[chartIndex.length]).removeClass();\r\n });\r\n \r\n so.find('.xcaptcha_grid_buttons div').unbind('click').bind('click', function() {\r\n\r\n if (debug) console.log('click event grid');\r\n \r\n if (chartIndex.length >= 4) return false;\r\n $((so.find('.xcaptcha_grid_input div'))[chartIndex.length]).removeClass().addClass($(this).attr('class'));\r\n chartIndex.push($(this).attr('tabindex'));\r\n \r\n if (chartIndex.length == 4) {\r\n \r\n var code = chartIndex.join('');\r\n \r\n var captchaUrl = opts.url.indexOf('?') != -1 ? opts.url+'&'+opts.feature+'=validate' : opts.url+'?'+opts.feature+'=validate';\r\n \r\n $.ajax({\r\n url : captchaUrl,\r\n type: 'POST',\r\n data: 'code='+code,\r\n dataType: 'json',\r\n cache: false,\r\n async: true,\r\n success: function(data) {\r\n \r\n if (data.status != 1) {\r\n \r\n error();\r\n } else {\r\n \r\n so.find('.xcaptcha_status img').show();\r\n if (typeof opts.success == 'function') opts.success(code);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n \r\n refreshCaptcha();\r\n }\r\n \r\n return {\r\n \r\n show : function() {\r\n \r\n renderCaptcha();\r\n }\r\n }\r\n };\r\n\r\n _hao.Captcha.extend('CNCaptcha', {\r\n init: function (options) {\r\n options = $.extend({}, _hao.CNCaptcha.defaultOptions, options);\r\n this.base(options);\r\n // 加载css\r\n if (_hao.util.isPC) {\r\n _hao.util.loadCss('.xcaptcha_component_hide{display:none}.xcaptcha_component_show{display:block}.xcaptcha_component div{margin:0;padding:0}.xcaptcha_clearfix:after{content:\"\\0020\";visibility:hidden;display:block;font-size:0;clear:both;height:0}.xcaptcha_head div{float:left}.xcaptcha_component .xcaptcha_head .xcaptcha_title{line-height:34px;padding-right:10px;font-size:14px}.xcaptcha_input_wrap{position:relative;display:inline-block}.xcaptcha_grid_input{border:1px solid #CCC}.xcaptcha_grid_input div{width:45px;height:34px;border-right:1px solid #DDD}.xcaptcha_grid_input .xcaptcha_backspace{width:40px;border-right:0;background:#CCC url(//ue.17173cdn.com/a/hao/index/2015/img/delete.png) no-repeat;cursor:pointer}.xcaptcha_component .xcaptcha_grid_content{margin-left:52px}.xcaptcha_component .xcaptcha_grid_content .xcaptcha_img_wrap{display:inline-block;margin-right:5px;width:150px;height:36px;vertical-align:middle;background-position:0 0}.xcaptcha_component .xcaptcha_help{margin-top:5px;color:#666;font-size:12px}.xcaptcha_component .xcaptcha_buttons a{cursor:pointer}.xcaptcha_img_change{font-size:12px}.xcaptcha_component .xcaptcha_grid_buttons{margin-top:5px;width:190px}.xcaptcha_grid_buttons div{display:block;float:left;margin:0 5px 5px 0;width:54px;height:40px;border:1px solid #e0e0e0;border-bottom-color:#bfbfbf;outline:0;zoom:1;cursor:pointer}.xcaptcha_grid_content .xcaptcha_btn0,.xcaptcha_grid_input .xcaptcha_btn0{background-position:0 -36px}.xcaptcha_grid_content .xcaptcha_btn1, .xcaptcha_grid_input .xcaptcha_btn1{background-position:-45px -36px}.xcaptcha_grid_content .xcaptcha_btn2, .xcaptcha_grid_input .xcaptcha_btn2{background-position:-90px -36px}.xcaptcha_grid_content .xcaptcha_btn3, .xcaptcha_grid_input .xcaptcha_btn3{background-position:0 -87px}.xcaptcha_grid_content .xcaptcha_btn4, .xcaptcha_grid_input .xcaptcha_btn4{background-position:-45px -87px}.xcaptcha_grid_content .xcaptcha_btn5, .xcaptcha_grid_input .xcaptcha_btn5{background-position:-90px -87px}.xcaptcha_grid_content .xcaptcha_btn6, .xcaptcha_grid_input .xcaptcha_btn6{background-position:0 -133px}.xcaptcha_grid_content .xcaptcha_btn7, .xcaptcha_grid_input .xcaptcha_btn7{background-position:-45px -133px}.xcaptcha_grid_content .xcaptcha_btn8, .xcaptcha_grid_input .xcaptcha_btn8{background-position:-90px -133px}.xcaptcha_status{width:30px}.xcaptcha_status img{padding-left:3px;padding-top:8px;display:none}', 'hao_ui_cncaptcha');\r\n } else {\r\n _hao.util.loadCss('.xcaptcha_component_hide{display:none; margin-left: 18px;}.xcaptcha_component_show{display:block}.xcaptcha_component div{margin:0;padding:0}.xcaptcha_clearfix:after{content:\"\\0020\";visibility:hidden;display:block;font-size:0;clear:both;height:0}.xcaptcha_head div{float:left}.xcaptcha_component .xcaptcha_head .xcaptcha_title{display:none;}.xcaptcha_input_wrap{position:relative;display:inline-block}.xcaptcha_grid_input{border:1px solid #CCC}.xcaptcha_grid_input div{width:45px;height:34px;border-right:1px solid #DDD}.xcaptcha_grid_input .xcaptcha_backspace{width:40px;border-right:0;background:#CCC url(//ue.17173cdn.com/a/hao/index/2015/img/delete.png) no-repeat;cursor:pointer}.xcaptcha_component .xcaptcha_grid_content .xcaptcha_img_wrapper{overflow: hidden;margin: 8px 0;}.xcaptcha_component .xcaptcha_grid_content .xcaptcha_img_wrap{display:inline-block;margin-right:5px;width:150px;height:36px;vertical-align:middle;background-position:0 0}.xcaptcha_component .xcaptcha_help{margin:5px 0;color:#666;font-size:12px}.xcaptcha_component .xcaptcha_buttons a{color: #00a6f3;font-size: 87.5%;line-height: 3.57;}.xcaptcha_img_change{font-size:12px}.xcaptcha_component .xcaptcha_grid_buttons{margin:0 auto;width:190px}.xcaptcha_grid_buttons div{display:block;float:left;margin:0 5px 5px 0;width:54px;height:40px;border:1px solid #e0e0e0;border-bottom-color:#bfbfbf;outline:0;zoom:1;cursor:pointer}.xcaptcha_grid_content .xcaptcha_btn0,.xcaptcha_grid_input .xcaptcha_btn0{background-position:0 -36px}.xcaptcha_grid_content .xcaptcha_btn1, .xcaptcha_grid_input .xcaptcha_btn1{background-position:-45px -36px}.xcaptcha_grid_content .xcaptcha_btn2, .xcaptcha_grid_input .xcaptcha_btn2{background-position:-90px -36px}.xcaptcha_grid_content .xcaptcha_btn3, .xcaptcha_grid_input .xcaptcha_btn3{background-position:0 -87px}.xcaptcha_grid_content .xcaptcha_btn4, .xcaptcha_grid_input .xcaptcha_btn4{background-position:-45px -87px}.xcaptcha_grid_content .xcaptcha_btn5, .xcaptcha_grid_input .xcaptcha_btn5{background-position:-90px -87px}.xcaptcha_grid_content .xcaptcha_btn6, .xcaptcha_grid_input .xcaptcha_btn6{background-position:0 -133px}.xcaptcha_grid_content .xcaptcha_btn7, .xcaptcha_grid_input .xcaptcha_btn7{background-position:-45px -133px}.xcaptcha_grid_content .xcaptcha_btn8, .xcaptcha_grid_input .xcaptcha_btn8{background-position:-90px -133px}.xcaptcha_status{width:30px}.xcaptcha_status img{padding-left:3px;padding-top:8px;display:none}', 'hao_ui_cncaptcha');\r\n }\r\n },\r\n trigger: function() {\r\n var self = this;\r\n\r\n var dialogOption = {\r\n title: '请完成验证',\r\n content: '',\r\n width: _hao.util.isPC? 360: 280,\r\n buttons: []\r\n };\r\n // 创建新的表单弹窗\r\n if (self.dialog) {\r\n self.dialog.destroy();\r\n }\r\n self.dialog = new _hao.Dialog(dialogOption);\r\n self.element = self.dialog.element;\r\n\r\n // 初始化汉字验证码组件\r\n self.element.role('content').sudoku({\r\n ajaxValidata: false,\r\n success: function(code) {\r\n self.dialog.close();\r\n self.submit(code);\r\n }\r\n }).show();\r\n self.dialog.open();\r\n },\r\n // 提交验证码\r\n submit: function(captchaCode) {\r\n this.opt.successHandler({verifyCode: captchaCode});\r\n }\r\n });\r\n _hao.CNCaptcha.defaultOptions = {\r\n verifyType: '3',\r\n successHandler: function(captchaCode) {\r\n // console.log('input is:' + captchaCode);\r\n }\r\n };\r\n})(jQuery, hao);","(function ($, _hao) {\r\n\t_hao.Captcha.extend('ENCaptcha', {\r\n\t\ttemplate: '
    请输入右图中的字母完成验证!
    \\\r\n\t\t\t\t
    \\\r\n\t\t\t\t\t\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\"\"\\\r\n\t\t\t\t\t\t

    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t
    ',\r\n\t\tmTemplate: '
    请完成验证
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t

    \\\r\n\t\t\t\t\t
    ',\r\n\t\tinit: function (options) {\r\n\t\t\toptions = $.extend({}, _hao.ENCaptcha.defaultOptions, options);\r\n\t\t\tthis.base(options);\r\n\t\t},\r\n\t\tsetup: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar contentHTML = Mustache.render(_hao.util.isPC?self.template: self.mTemplate, {});\r\n\t\t\tthis.dialog = new _hao.Dialog({\r\n\t\t\t\ttitle: '请完成验证',\r\n\t\t\t\tcontent: contentHTML,\r\n\t\t\t\tbuttons: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttext: '提交',\r\n\t\t\t\t\t\tonClick: function() {\r\n\t\t\t\t\t\t\tself.submit();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t});\r\n\t\t\tthis.element = this.dialog.element;\r\n\t\t\tthis.bindEvents();\r\n\t\t},\r\n\t\ttrigger: function() {\r\n\t\t\t// 设置弹窗\r\n\t\t\tthis.setup();\r\n\t\t\t// 获取图片验证码信息\r\n\t\t\tthis.getCaptcha();\r\n\t\t\tthis.dialog.open();\r\n\t\t},\r\n\t\tsubmit: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar captchaCode = $.trim(self.element.role('captchaInput').val());\r\n\r\n\t\t\tvar validatOption = [\r\n\t\t\t\t{\r\n\t\t\t\t\tfield: 'captchaInput',\r\n\t\t\t\t\tfieldName: '验证码',\r\n\t\t\t\t\ttype: 'notEmpty',\r\n\t\t\t\t\tvalue: captchaCode\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\t\tvar invalidFields = _hao.validator.getInvalid(validatOption);\r\n\t\t\tif (invalidFields.length > 0) {\r\n\t\t\t\tself.element.role(invalidFields[0].field).focus();\r\n\t\t\t\tself.element.role('tip').html(invalidFields[0].msg);\r\n\t\t\t\tself.element.role('captchaTip').show();\r\n\t\t\t\treturn false;\r\n } else {\r\n var hash = self.captchaHash;\r\n if (hash == null) {\r\n hash = 663;\r\n } else {\r\n hash = hash[1];\r\n }\r\n for (var i = captchaCode.length - 1, h = 0; i >= 0; --i) {\r\n h += (captchaCode).toLowerCase().charCodeAt(i);\r\n }\r\n if (h != hash) {\r\n\t\t\t\t\tself.element.role('tip').html(_hao.ENUM_MSG.CAPTCHA_ERROR);\r\n\t\t\t\t\tself.element.role('captchaTip').show();\r\n return false;\r\n } else {\r\n \tself.element.role('tip').html('');\r\n \tself.element.role('captchaTip').hide();\r\n \tself.dialog.close();\r\n \tself.opt.successHandler({verifyCode: captchaCode});\r\n }\r\n \r\n }\r\n\t\t},\r\n\t\tgetCaptcha: function () {\r\n\t\t\tvar self = this;\r\n\t\t setTimeout(function() {\r\n\t\t \tvar promise = $.getJSON(_hao.ENUM_PROXY.EN_CAPTCHA, {gift_id: self.opt.giftId});\r\n\t\t\t\tpromise.done(function(captchaData) {\r\n\t\t\t\t\tself.captchaHash = [captchaData['hash1'], captchaData['hash2']];\r\n\t\t\t self.element.role('captchaImg').attr('src', captchaData['url']);\r\n\t\t\t\t});\r\n\t\t\t\tpromise.fail(function() {\r\n\t\t\t\t\tself.captchaInvalid();\r\n\t\t\t\t});\r\n\t\t }, 500);\r\n\t\t},\r\n\t\tbindEvents: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tself.element.role('captchaImg').on('click', function() {\r\n\t\t\t\tself.getCaptcha();\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\t_hao.ENCaptcha.defaultOptions = {\r\n\t\tverifyType: '4',\r\n\t\tsuccessHandler: function(captchaCode) {\r\n\t\t\t// console.log('input is:' + captchaCode);\r\n\t\t}\r\n\t};\r\n})(jQuery, hao);","(function ($, _hao) {\r\n\t_hao.Captcha.extend('SMSCaptcha', {\r\n\t\tENUM: {\r\n\t\t\tMSG: {\r\n\t\t\t\tSENT: '验证码已下发,请注意查收短信。',\r\n\t\t\t\tSMS_REGAIN: '重新获取(${time})'\r\n\t\t\t}\r\n\t\t},\r\n\t\ttemplate: '{{#mobile}}\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    {{mobile}}更改绑定\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{/mobile}}\\\r\n\t\t\t\t\t{{^mobile}}\\\r\n\t\t\t\t\t
    绑定手机后完成验证!
    \\\r\n\t\t\t\t\t

    绑定后若手机号变更,可以随时解绑或更换

    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{/mobile}}\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t

    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t',\r\n\t\tmTemplate: '
    手机验证
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t{{#mobile}}\\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t{{/mobile}}\\\r\n\t\t\t\t\t\t\t\t{{^mobile}}\\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t{{/mobile}}\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t{{buttonText}}\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t

    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t',\r\n\t\t// 剩余有效时间\r\n\t\tremainTime: 0,\r\n\t\t// 冷却计时器\r\n\t\ttimer: null,\r\n\t\t// 验证码表单输入临时存放对象\r\n\t\ttmpInput: {},\r\n\t\tinit: function (options) {\r\n\t\t\toptions = $.extend({}, _hao.SMSCaptcha.defaultOptions, options);\r\n\t\t\tthis.base(options);\r\n\t\t},\r\n\t\t// 验证码流程入口,已废弃\r\n\t\ttrigger2: function() {\r\n\t\t\t// var self = this;\r\n\t\t\t// self.triggerCaparcha();\r\n\t\t\t\t\t\t// 检查是否登录\r\n\t\t\t// if(Passport.isLoggedIn()) {\r\n\t\t\t// \tconsole.log(111)\r\n\t\t\t// \t\t$.ajax({\r\n\t\t\t// \t\t\turl: 'https://passport.17173.com/appapi/user/profile',\r\n\t\t\t// \t\t\ttype: 'GET',\r\n\t\t\t// \t\t\tdataType: 'jsonp',\r\n\t\t\t// \t\t\tsuccess: function(res) {\r\n\t\t\t// \t\t\t\tvar result = JSON.stringify(res);\r\n\t\t\t// \t\t\t\tconsole.log(result);\r\n\t\t\t// \t\t\t},\r\n\t\t\t// \t\t\terror: function(error) {\r\n\t\t\t// \t\t\t\tconsole.log(error)\r\n\t\t\t// \t\t\t}\r\n\t\t\t// \t\t});\r\n\t\t\t// \t\t// if(isBinded == 0) {\r\n\t\t\t// \t\t// \tself.showBindDialog(Passport.Dialog.showMobileBinder);\r\n\t\t\t// \t\t// \t// 关闭绑定弹窗,目前测试确认绑定也会显示\r\n\t\t\t// \t\t// \tPassport.on(Passport.EVENTS.dialogClose, function (events) {\r\n\t\t\t// \t\t// \t\tif(events.dialogType === 'mobileBind') {\r\n\t\t\t// \t\t// \t\t\t// console.log('>>> 关闭弹窗,检查是否绑定,未绑定则不能进入领号');\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t// \t\t// \t\t\tif(isBinded1 ==1) {\r\n\t\t\t// \t\t// \t\t\t\t// 绑定\r\n\t\t\t// \t\t// \t\t\t\tself.triggerCaparcha();\r\n\t\t\t// \t\t// \t\t\t}\r\n\t\t\t// \t\t// \t\t}\r\n\t\t\t// \t\t// \t});\r\n\t\t\t// \t\t// }\r\n\t\t\t// \t} else {\r\n\t\t\t// \tself.triggerCaparcha();\r\n\t\t\t// \t}\r\n\t\t\t// 检查是否登录\r\n\t\t\t// if(Passport.isLoggedIn()) {\r\n\t\t\t// \t// 检测是否绑定手机?\r\n\t\t\t// \t// console.log('> 已登录,开始检测是否绑定手机');\r\n\t\t\t// \t// 获取绑定状态\r\n\t\t\t// \tPassport.getMobileStatus(function(isBinded){\r\n\t\t\t// \t\tif(!isBinded) {\r\n\t\t\t// \t\t\t// console.log('>> 未绑定,显示绑定手机提示1');\r\n\t\t\t// \t\t\t// 未绑定,弹层提示需要绑定才能抢号\r\n\t\t\t// \t\t\t// 如果点击绑定,则进入绑定流程showMobileBinder\r\n\t\t\t// \t\t\tself.showBindDialog(Passport.Dialog.showMobileBinder);\r\n\t\t\t\t\t\t\r\n\t\t\t// \t\t\t// 关闭绑定弹窗,目前测试确认绑定也会显示\r\n\t\t\t// \t\t\tPassport.on(Passport.EVENTS.dialogClose, function (events) {\r\n\t\t\t// \t\t\t\tif(events.dialogType === 'mobileBind') {\r\n\t\t\t// \t\t\t\t\t\t// console.log('>>> 关闭弹窗,检查是否绑定,未绑定则不能进入领号');\r\n\t\t\t// \t\t\t\t\t\tPassport.getMobileStatus(function(isBindedAgain) {\r\n\t\t\t// \t\t\t\t\t\t\tif(isBindedAgain) {\r\n\t\t\t// \t\t\t\t\t\t\t\t// 绑定\r\n\t\t\t// \t\t\t\t\t\t\t\t// console.log('>>>> 进行了绑定手机,继续抢号');\r\n\t\t\t// \t\t\t\t\t\t\t\tself.triggerCaparcha();\r\n\t\t\t// \t\t\t\t\t\t\t}\r\n\t\t\t// \t\t\t\t\t\t});\r\n\t\t\t// \t\t\t\t}\r\n\t\t\t// \t\t\t});\r\n\t\t\t// \t\t} else {\r\n\t\t\t// \t\t\t// console.log('>> 已绑定,继续抢号');\r\n\t\t\t// \t\t\tself.triggerCaparcha();\r\n\t\t\t// \t\t}\r\n\t\t\t// \t});\r\n\t\t\t// }\r\n\t\t},\r\n\t\t// 手机绑定提示\r\n\t\tshowBindDialog: function(callback) {\r\n\t\t\tvar self = this;\r\n\t\t\t// console.log('手机绑定标记');\r\n\t\t\tvar contentHTML = '
    亲,您还未绑定手机号~~
    \\\r\n\t\t\t\t

    成功绑定手机号之后再来抢号

    ';\r\n\t\t\tdialogOption = {\r\n\t\t\t\ttitle: '未绑定手机',\r\n\t\t\t\tcontent: contentHTML,\r\n\t\t\t\tbuttons: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttext: '马上绑定',\r\n\t\t\t\t\t\t// link: _hao.ENUM_VAR.MOBILE_BIND_URL\r\n\t\t\t\t\t\tonClick: 'close'\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tonClose: null,\r\n\t\t\t};\r\n\t\t\t// 创建新的表单弹窗\r\n\t\t\tif (self.dialog) {\r\n\t\t\t\tself.dialog.destroy();\r\n\t\t\t}\r\n\t\t\tself.dialog = new _hao.Dialog(dialogOption);\r\n\t\t\tself.element = self.dialog.element;\r\n\t\t\t// 打开验证码弹窗\r\n\t\t\tself.dialog.open();\r\n\t\t\t\r\n\t\t\t$('.form-btn-submit').off().on('click', function() {\r\n\t\t\t\tself.dialog.close();\r\n\t\t\t\tif(typeof callback == 'function') {\r\n\t\t\t\t\tcallback();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 验证码流程入口\r\n\t\t// triggerCaparcha: function() {\r\n\t\ttrigger: function() {\r\n\t\t\t// console.log('triggerAgain开始:');\t\r\n\t\t\t// console.log(this)\r\n\t\t\tvar self = this, contentHTML = '';\t\t\t\r\n\r\n\t\t\tcontentHTML = Mustache.render(_hao.util.isPC?self.template: self.mTemplate, {\r\n\t\t\t\tmobile: self.opt.mobile,\r\n\t\t\t\tbindURL: _hao.ENUM_VAR.CHANGE_MOBILE_BIND,\r\n\t\t\t\tinputMobile: self.tmpInput.mobile ? self.tmpInput.mobile : '',\r\n\t\t\t\tremainTime: self.remainTime,\r\n\t\t\t\tbuttonText: self.remainTime?_hao.htmlMaker(_hao.ENUM_MSG.WAIT_REGAIN, {time: self.remainTime+'S'}):'获取验证码'\r\n\t\t\t});\r\n\r\n\t\t\t// 创建新的表单弹窗\r\n\t\t\tif (self.dialog) {\r\n\t\t\t\tself.dialog.destroy();\r\n\t\t\t}\r\n\t\t\tself.dialog = new _hao.Dialog({\r\n\t\t\t\ttitle: '请完成验证',\r\n\t\t\t\tcontent: contentHTML,\r\n\t\t\t\tbuttons: []\r\n\t\t\t});\r\n\t\t\tself.element = self.dialog.element;\r\n\t\t\tself.bindEvents(self.opt.mobile);\r\n\t\t\t// 打开验证码弹窗\r\n\t\t\tself.dialog.open();\r\n\t\t},\r\n\t\t// 提交验证码\r\n\t\tsubmit: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar validatOption = [], submitData = {};\r\n\t\t\tvar phoneInput = '';\r\n\t\t\tif (self.element.role('mobile').length > 0) {\r\n\t\t\t\tphoneInput = $.trim(self.element.role('mobile').val());\r\n\t\t\t\tvalidatOption.push({\r\n\t\t\t\t\tfield: 'mobile',\r\n\t\t\t\t\tfieldName: '绑定手机号',\r\n\t\t\t\t\ttype: 'notEmpty',\r\n\t\t\t\t\tvalue: phoneInput\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvalidatOption.push({\r\n\t\t\t\t\tfield: 'mobile',\r\n\t\t\t\t\tfieldName: '绑定手机号',\r\n\t\t\t\t\ttype: 'phone',\r\n\t\t\t\t\tvalue: phoneInput\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tvar captchaCode = $.trim(self.element.role('captchaInput').val());\r\n\t\t\tvalidatOption.push({\r\n\t\t\t\tfield: 'captchaInput',\r\n\t\t\t\tfieldName: '验证码',\r\n\t\t\t\ttype: 'notEmpty',\r\n\t\t\t\tvalue: captchaCode\r\n\t\t\t});\r\n\t\t\t// 如果输入校验通过,执行回调方法\r\n\t\t\tif (self.isFormVaild(validatOption)) {\r\n\t\t\t\t// 清除此前所有临时输入值\r\n\t\t\t\tfor (var key in this.tmpInput) {\r\n\t\t\t\t\tdelete this.tmpInput;\r\n\t\t\t\t}\r\n\t\t\t\t// 关闭弹窗\r\n\t\t\t\t// this.dialog.close();\r\n\t\t\t\tsubmitData.verifyCode = captchaCode;\r\n\t\t\t\tif (!!phoneInput) {\r\n\t\t\t\t\tsubmitData.mobile = phoneInput;\r\n\t\t\t\t}\r\n\t\t\t\tself.opt.successHandler(submitData);\r\n }\r\n\t\t},\r\n\t\t// 获取下行短信验证码\r\n\t\tgetCaptcha: function (type) {\r\n\t\t\tvar self = this;\r\n\t\t\t// 冷却时间未到,返回\r\n\t\t\tif (self.remainTime > 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t var url = !!self.opt.mobile? _hao.ENUM_PROXY.SMS_CAPTCHA : _hao.ENUM_PROXY.SMS_BIND_CAPTCHA;\r\n\t\t var data = !!self.opt.mobile ? {}: { mobile: $.trim(self.element.role('mobile').val())};\r\n\t\t // 判断是语音接口\r\n\t\t // if (type == 'voice') {\r\n\t\t // \turl = _hao.ENUM_PROXY.VOICE_CAPTCHA;\r\n\t\t\t\t// }\r\n\t\t\t\tif (_hao.util.isFromQr()) {\r\n\t\t\t\t\turl = url + '?qr=1';\r\n\t\t\t\t}\r\n\t\t // 调用验证码接口下发验证码短信\r\n\t\t $.getJSON(_hao.htmlMaker(url, {giftId: self.opt.giftId}), data)\r\n\t\t .done(function(result) {\r\n\t\t\t\t// 验证码成功下发\r\n\t\t if (result.status == '1') {\r\n\t\t \t// 提示已发送\r\n\t\t \tself.showMsg(_hao.ENUM_MSG.SMS_CAPTCHA_SENT);\r\n\t\t \tself.smsCountDown();\r\n\t\t } else {// 验证码发送失败\r\n\t\t\t\t\tself.showMsg(result.message);\r\n\t\t }\r\n\t\t\t})\r\n\t\t\t// 接口异常情况\r\n\t\t\t.fail(function() {\r\n\t\t\t\tself.captchaInvalid();\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 短信下发倒计时\r\n\t\tsmsCountDown: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 重置计时器\r\n\t\t\tclearInterval(self.timer);\r\n\t\t\tself.timer = null;\r\n\t\t\tself.remainTime = _hao.ENUM_VAR.SMS_COOLDOWN;\r\n\r\n\t\t\t// 立即设置按钮状态\r\n\t\t\tself.element.role('smsBtn').addClass('form-btn-disable').attr('disabled', 'disabled').text(_hao.htmlMaker(_hao.ENUM_MSG.WAIT_REGAIN, {time: self.remainTime+'S'}));\r\n\t\t\tself.element.role('voiceBtn').removeClass('blue').addClass('gray').attr('disabled', 'disabled').text(_hao.htmlMaker(_hao.ENUM_MSG.WAIT_REGAIN, {time: self.remainTime+'S'}));\r\n\t\t\t// 每秒更新一次按钮状态\r\n\t\t\tself.timer = setInterval(function() {\r\n\t\t\t\tself.remainTime--;\r\n\t\t\t\t// 冷却完成\r\n\t\t\t\tif (self.remainTime == 0) {\r\n\t\t\t\t\tself.element.role('smsBtn').removeClass('form-btn-disable').removeAttr('disabled').text('重新获取');\r\n\t\t\t\t\tself.element.role('voiceBtn').removeClass('gray').addClass('blue').removeAttr('disabled').text('获取语音验证码');\r\n\t\t\t\t\t// 清除计时器\r\n\t\t\t\t\tclearInterval(self.timer);\r\n\t\t\t\t\tself.timer = null;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tself.element.role('smsBtn').addClass('form-btn-disable').attr('disabled', 'disabled').text(_hao.htmlMaker(_hao.ENUM_MSG.WAIT_REGAIN, {time: self.remainTime+'S'}));\r\n\t\t\t\t\tself.element.role('voiceBtn').removeClass('blue').addClass('gray').attr('disabled', 'disabled').text(_hao.htmlMaker(_hao.ENUM_MSG.WAIT_REGAIN, {time: self.remainTime+'S'}));\r\n\t\t\t\t}\r\n\t\t\t}, 1000);\r\n\t\t},\r\n\t\t// 弹窗表单绑定事件\r\n\t\tbindEvents: function(isBindPhone) {\r\n\t\t\t// console.log('已经绑定手机:', isBindPhone)\r\n\t\t\tvar self = this;\r\n\t\t\tif (isBindPhone) {\r\n\t\t\t\t// 已绑定手机时,点击获取验证码按钮绑定事件\r\n\t\t\t\tself.element.role('smsBtn').add(self.element.role('voiceBtn')).bind('click', function() {\r\n\t\t\t\t\t// 短信验证码不包含语音\r\n\t\t\t\t\t// self.getCaptcha($(this).uiData('type'));\r\n\t\t\t\t\tself.getCaptcha();\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\t// 未绑定手机时,点击获取验证码按钮绑定事件\r\n\t\t\t\tself.showBindDialog(Passport.Dialog.showMobileBinder);\r\n\t\t\t\t// 关闭绑定弹窗,目前测试确认绑定也会显示\r\n\t\t\t\t// Passport.on(Passport.EVENTS.dialogClose, function (events) {\r\n\t\t\t\t// \tif(events.dialogType === 'mobileBind') {\r\n\t\t\t\t// \t\t\tconsole.log('>>> 关闭弹窗,检查是否绑定,未绑定则不能进入领号');\r\n\t\t\t\t// \t\t\t// Passport.getMobileStatus(function(isBindedAgain) {\r\n\t\t\t\t// \t\t\t// \tif(isBindedAgain) {\r\n\t\t\t\t// \t\t\t// \t\t// 绑定\r\n\t\t\t\t// \t\t\t// \t\t// console.log('>>>> 进行了绑定手机,继续抢号');\r\n\t\t\t\t// \t\t\t// \t\tself.triggerCaparcha();\r\n\t\t\t\t// \t\t\t// \t}\r\n\t\t\t\t// \t\t\t// });\r\n\t\t\t\t// \t\t\tconsole.log('mobile:', self.opt.mobile);\r\n\t\t\t\t// \t}\r\n\t\t\t\t// });\r\n\r\n\t\t\t\t// self.element.role('smsBtn').add(self.element.role('voiceBtn')).bind('click', function() {\r\n\t\t\t\t// \tvar phoneInput = $.trim(self.element.role('mobile').val());\r\n\t\t\t\t// \tvar validatOption = [\r\n\t\t\t\t// \t\t{\r\n\t\t\t\t// \t\t\tfield: 'mobile',\r\n\t\t\t\t// \t\t\tfieldName: '绑定手机号',\r\n\t\t\t\t// \t\t\ttype: 'notEmpty',\r\n\t\t\t\t// \t\t\tvalue: phoneInput\r\n\t\t\t\t// \t\t},\r\n\t\t\t\t// \t\t{\r\n\t\t\t\t// \t\t\tfield: 'mobile',\r\n\t\t\t\t// \t\t\ttype: 'phone',\r\n\t\t\t\t// \t\t\tvalue: phoneInput\r\n\t\t\t\t// \t\t}\r\n\t\t\t\t// \t];\r\n\t\t\t\t// \t// 验证手机号合法性\r\n\t\t\t\t// \tif (self.isFormVaild(validatOption)) {\r\n\t\t\t\t// \t\t// 手机号合法 获取验证码\r\n\t\t\t\t// \t\t// 短信验证码不包含语音\r\n\t\t\t\t// \t\t// self.getCaptcha($(this).uiData('type'));\r\n\t\t\t\t// \t\tself.getCaptcha();\r\n\t\t\t\t// \t}\r\n\t\t\t\t// });\r\n\t\t\t}\r\n\t\t\t// 输入字段值时,保存到临时变量中,供弹窗渲染使用\r\n\t\t\tself.element.find('input').bind('change', function() {\r\n\t\t\t\tself.tmpInput[$(this).uiData('role')] = $(this).val();\r\n\t\t\t});\r\n\r\n\t\t\tself.element.role('submitBtn').bind('click', function() {\r\n\t\t\t\tself.submit();\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 验证表单字段合法性\r\n\t\tisFormVaild: function(validatOption) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar invalidFields = _hao.validator.getInvalid(validatOption);\r\n\t\t\tif (invalidFields.length > 0) {\r\n\t\t\t\tself.element.role(invalidFields[0].field).focus();\r\n\t\t\t\tself.showMsg(invalidFields[0].msg);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tself.showMsg('');\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\t// 提示错误消息\r\n\t\tshowMsg: function(msg) {\r\n\t\t\tvar self = this;\r\n\t\t\tif (!!self.element) {\r\n\t\t\t\tif (!!msg) {\r\n\t\t\t\t\tself.element.role('captchaTip').html(msg);\r\n\t\t\t\t\tself.element.role('tipContainer').show();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tself.element.role('tipContainer').hide();\r\n\t\t\t\t\tself.element.role('captchaTip').empty();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tdestroy: function() {\r\n\t\t\tthis.element = null;\r\n\t\t\tclearInterval(this.timer);\r\n\t\t\tthis.timer = null;\r\n\t\t\tthis.dialog && this.dialog.destroy();\r\n\t\t\tthis.base();\r\n\t\t}\r\n\t});\r\n\r\n\t_hao.SMSCaptcha.defaultOptions = {\r\n\t\tverifyType: '2',\r\n\t\tsuccessHandler: function(data) {\r\n\t\t\t// console.log('data is:' + data);\r\n\t\t}\r\n\t};\r\n})(jQuery, hao);\r\n","(function ($, _hao) {\r\n\twindow.haoConfig = window.haoConfig || {};\r\n\t// 腾讯防水墙验证码\r\n\t_hao.Captcha.extend('TencentCaptcha', {\r\n\t\t// 验证返回结果\r\n\t\tvalidateResult: null,\r\n\t\tinit: function (options) {\r\n\t\t\tvar self = this;\r\n\t\t\toptions = $.extend({}, _hao.TencentCaptcha.defaultOptions, options);\r\n\t\t\tself.captchaId = _hao.ENUM_VAR.TENCENT_CAPTCHA_ID;\r\n\t\t\tthis.base(options);\r\n\t\t\t// 初始值\r\n\t\t\tself.obj = null;\r\n\t\t\tself.ready = false;\r\n\t\t\tif (typeof window.TencentCaptcha != 'function') {\r\n\t\t\t\t// 加载验证码js\r\n\t\t\t\t$.getScript(_hao.ENUM_VAR.TENCENT_CAPTCHA_JS)\r\n\t\t\t\t\t.done(function() {\r\n\t\t\t\t\t\tself.initCaptchaObj();\r\n\t\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tself.initCaptchaObj();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t},\r\n\t\t// 初始化验证码\r\n\t\tinitCaptchaObj: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 初始化验证码\r\n\t\t\tself.obj = new TencentCaptcha(_hao.ENUM_VAR.TENCENT_CAPTCHA_ID, function(res) {\r\n\t\t\t\t// console.log(res);\r\n\t\t\t\tself.submit(res);\r\n\t\t\t});\r\n\t\t\t// console.log(self.obj);\r\n\t\t\t// 暂未发现腾讯防水墙有初始化加载的判断于refresh操作\r\n\t\t\tself.ready = true;\r\n\t\t\t// captcha.show(); // 显示验证码\r\n\t\t},\r\n\t\t// 验证码流程入口方法\r\n\t\ttrigger: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 触发验证码前确认验证码对象初始化完成\r\n\t\t\tif (!!self.ready && (self.opt.product == 'popup')) {\r\n\t\t\t\tself.obj.show();\r\n\t\t\t} else {\r\n\t\t\t\tvar timer = setInterval(function() {\r\n\t\t\t\t\tif (!!self.ready) {\r\n\t\t\t\t\t\tif (self.opt.product == 'popup') {\r\n\t\t\t\t\t\t\tself.obj.show();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tclearInterval(timer);\r\n\t\t\t\t\t\ttimer = null;\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 100);\r\n\t\t\t}\r\n\t\t},\r\n\t\t// 刷新验证码\r\n\t\trefresh: function() {\r\n\t\t\t// !!this.obj && this.obj.refresh();\r\n\t\t},\r\n\t\t// 验证成功后回调方法\r\n\t\tsubmit: function(result) {\r\n\t\t\tvar self = this;\r\n\t\t self.validateResult = result;\r\n\t\t if (self.validateResult.ret == 0) {\r\n\t\t \t// 等待验证码弹窗关闭后,发起成功验证回调\r\n\t\t \tsetTimeout(function() {\r\n\t\t \t\tself.opt.successHandler({\r\n\t\t\t\t\t\ttx_appid: self.validateResult.appid,\r\n\t\t\t\t\t\ttx_ticket: self.validateResult.ticket,\r\n\t\t\t\t\t\ttx_randstr: self.validateResult.randstr\t\t\t\t\r\n\t\t\t\t\t});\r\n\t\t \t}, 1000);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\t_hao.TencentCaptcha.defaultOptions = {\r\n\t\tverifyType: '1',\r\n\t\t// 验证码表现形式,popup弹窗,float浮出,embed内嵌\r\n\t\tproduct: 'popup',\r\n\t\t// 验证码存放的容器class\r\n\t\tcontainerClass: 'popup-captcha',\r\n\t\tsuccessHandler: function(captchaCode) {\r\n\t\t}\r\n\t};\r\n})(jQuery, hao);","(function ($, _hao) {\r\n\t_hao.Captcha.extend('UpSMSCaptcha', {\r\n\t\tENUM: {\r\n\t\t\tMSG: {\r\n\t\t\t\tNOT_RECEIVED: '未接收',\r\n\t\t\t\tRECEIVED: '验证成功,正在返回抢号结果。',\r\n\t\t\t\tEXPIRED: '验证码已过期',\r\n\t\t\t\tWRONG: '验证码错误',\r\n\t\t\t\tCOUNT_DOWN: '${step} 秒后自动刷新,${minute} 分 ${second} 秒后验证码过期'\r\n\t\t\t},\r\n\t\t\t// 上行短信冷却时长\r\n\t\t\tCOOLDOWN: 300,\r\n\t\t\t// 检查接收状态的间隔秒数\r\n\t\t\tCHECK_STATUS_STEP: 3\r\n\t\t},\r\n\t\ttemplate: '

    您仅需支付运营商收取的标准短信费用,不会产生任何额外费用

    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t

    请使用绑定的手机号{{mobile}} 更换手机号

    \\\r\n\t\t\t\t\t\t

    编写手机短信{{verifyCode}}

    \\\r\n\t\t\t\t\t\t

    发送到{{send}}完成验证,请勿关闭窗口

    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t

    短信状态: 未接收\\\r\n\t\t\t\t\t\t\t重新获取\\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t

    \\\r\n\t\t\t\t\t
    ',\r\n\t\tmTemplate: '
    请使用绑定的手机号\\\r\n\t\t\t\t\t\t{{mobile}}更换手机号\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t

    编写手机短信{{verifyCode}}

    \\\r\n\t\t\t\t\t

    发送到{{send}}

    \\\r\n\t\t\t\t\t

    完成验证操作前,请勿关闭窗口…

    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t

    短信状态:未接收\\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t重新获取\\\r\n\t\t\t\t\t\t

    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t您仅需支付运营商收取的标准短信费用
    不会产生任何额外费用\\\r\n\t\t\t\t\t
    ',\r\n\t\t// 剩余有效时间\r\n\t\tremainTime: 0,\r\n\t\t// 冷却计时器\r\n\t\ttimer: null,\r\n\t\tinit: function (options) {\r\n\t\t\toptions = $.extend({}, _hao.UpSMSCaptcha.defaultOptions, options);\r\n\t\t\tthis.base(options);\r\n\t\t},\r\n\t\t// 验证码流程入口\r\n\t\ttrigger: function() {\r\n\t\t\tvar self = this, contentHTML = '';\r\n\t\t\t// 检查当前用户是否有绑定手机号\r\n\t\t\tself.getCaptcha()\r\n\t\t\t.then(function(result) {\r\n\t\t\t\tif (!result) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tvar dialogOption = {}, contentHTML;\r\n\t\t\t\tif (result.status == '4' || !result.data.uplinkSmsData) {// 如果未绑定手机,渲染未绑定手机流程表单\r\n\t\t\t\t\tself.showBindDialog();\r\n\t\t\t\t} else {// 如果已经绑定手机,渲染已绑定流程表单\r\n\t\t\t\t\tvar upsmsData = result.data.uplinkSmsData;\r\n\t\t\t\t\tupsmsData.bindURL = _hao.ENUM_VAR.CHANGE_MOBILE_BIND;\r\n\t\t\t\t\tcontentHTML = Mustache.render(_hao.util.isPC?self.template: self.mTemplate, upsmsData);\r\n\t\t\t\t\tdialogOption = {\r\n\t\t\t\t\t\ttitle: '请完成验证',\r\n\t\t\t\t\t\tcontent: contentHTML,\r\n\t\t\t\t\t\tbuttons: [],\r\n\t\t\t\t\t\tonClose: function() {\r\n\t\t\t\t\t\t\t// 关闭弹窗后清除计时器\r\n\t\t\t\t\t\t\tclearInterval(self.timer);\r\n\t\t\t\t\t\t\tself.timer = null;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\t// 倒计时\r\n\t\t\t\t\tself.countDown();\r\n\t\t\t\t\t// 创建新的表单弹窗\r\n\t\t\t\t\tif (self.dialog) {\r\n\t\t\t\t\t\tself.dialog.destroy();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tself.dialog = new _hao.Dialog(dialogOption);\r\n\t\t\t\t\tself.element = self.dialog.element;\r\n\t\t\t\t\tself.bindEvents();\r\n\t\t\t\t\t// 打开验证码弹窗\r\n\t\t\t\t\tself.dialog.open();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\tshowBindDialog: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// console.log('上行标记');\r\n\t\t\tvar contentHTML = '
    亲,您还未绑定手机号~~
    \\\r\n\t\t\t\t

    成功绑定手机号之后再来抢号

    ';\r\n\t\t\tdialogOption = {\r\n\t\t\t\ttitle: '未绑定手机',\r\n\t\t\t\tcontent: contentHTML,\r\n\t\t\t\tbuttons: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttext: '马上绑定',\r\n\t\t\t\t\t\tlink: _hao.ENUM_VAR.MOBILE_BIND_URL\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t};\r\n\t\t\t// 创建新的表单弹窗\r\n\t\t\tif (self.dialog) {\r\n\t\t\t\tself.dialog.destroy();\r\n\t\t\t}\r\n\t\t\tself.dialog = new _hao.Dialog(dialogOption);\r\n\t\t\tself.element = self.dialog.element;\r\n\t\t\t// 打开验证码弹窗\r\n\t\t\tself.dialog.open();\r\n\t\t},\r\n\t\t// 提交验证码\r\n\t\tsubmit: function() {\r\n\t\t\t// 流程结束即清除计时器,再次打开会重新去请求一次上行短信内容\r\n\t\t\tclearInterval(this.timer);\r\n\t\t\tthis.timer = null;\r\n\t\t\t// 关闭弹窗\r\n\t\t\tthis.dialog.close();\r\n\t\t\tthis.dialog.destroy();\r\n\t\t\tthis.opt.successHandler({});\r\n\t\t},\r\n\t\t// 获取验证码\r\n\t\tgetCaptcha: function () {\r\n\t\t\tvar self = this;\r\n\t\t\t// 调用验证码接口获取验证码\r\n\t\t var promise = $.getJSON(_hao.htmlMaker(_hao.ENUM_PROXY.UPSMS_CAPTCHA, {giftId: self.opt.giftId}), {});// checkhao接口公用刷新上行短信验证码功能\r\n\t\t\treturn promise.then(function(result) {\r\n\t\t if (result.status == '9') {// 未登录\r\n\t\t \t_hao.user.login();\r\n\t\t } else {// 正常流程\r\n\t\t \treturn result;\r\n\t\t }\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 刷新接收状态\r\n\t\tcheckReceived: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t$.ajax({\r\n\t\t\t\turl: _hao.htmlMaker(_hao.ENUM_PROXY.IS_UPSMS_RECEIVED, {giftId: self.opt.giftId}),\r\n\t\t\t\ttype: 'post',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t})\r\n\t\t\t.done(function(result) {\r\n\t\t\t\tswitch(''+result.status) {\r\n\t\t\t\t\tcase '1':// 已接收\r\n\t\t\t\t\t\tself.element.role('status').html(_hao.ENUM_MSG.UPSMS_RECEIVED);\r\n\t\t\t\t\t\t// 给个机会看清已接收的提示\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t// 进入领号流程\r\n\t\t\t\t\t\t\tself.submit();\r\n\t\t\t\t\t\t}, 1000);\r\n\t\t\t\t\t\tself.element.role('status').removeClass('red').addClass('green');\r\n\t\t\t\t\t\tself.element.role('newCaptchaBtn').hide();\r\n\t\t\t\t\t\t// self.element.role('refresh').hide();\r\n\t\t\t\t\t\tself.element.role('updateContainer').hide();\r\n\t\t\t\t\t\t// 清除倒计时提示文字\r\n\t\t\t\t\t\tself.element.role('countDownMsg').empty();\r\n\t\t\t\t\t\t// 清除计时器\r\n\t\t\t\t\t\tclearInterval(self.timer);\r\n\t\t\t\t\t\tself.timer = null;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase '16':// 已过期\r\n\t\t\t\t\t\tself.stopCount();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase '18':// 未接收\r\n\t\t\t\t\t\tself.element.role('status').html(_hao.ENUM_MSG.UPSMS_NOT_RECEIVED);\r\n\t\t\t\t\t\tself.element.role('newCaptchaBtn').hide();\r\n\t\t\t\t\t\tself.element.role('updateContainer').show();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase '4':// 手机未绑定\r\n\t\t\t\t\tcase '15':// 输入错误\r\n\t\t\t\t\tdefault:// 其他错误\r\n\t\t\t\t\t\tself.element.role('status').html(_hao.ENUM_MSG.CAPTCHA_WRONG).removeClass('green').addClass('red');\r\n\t\t\t\t\t\tself.element.role('newCaptchaBtn').show();\r\n\t\t\t\t\t\tself.element.role('updateContainer').hide();\r\n\t\t\t\t\t\t// 清除倒计时提示文字\r\n\t\t\t\t\t\tself.element.role('countDownMsg').empty();\r\n\t\t\t\t\t\t// 清除计时器\r\n\t\t\t\t\t\tclearInterval(self.timer);\r\n\t\t\t\t\t\tself.timer = null;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 上行短信有效期倒计时\r\n\t\tcountDown: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 重置计时器\r\n\t\t\tclearInterval(self.timer);\r\n\t\t\tself.timer = null;\r\n\t\t\tself.remainTime = _hao.ENUM_VAR.UPSMS_COOLDOWN;\r\n\r\n\t\t\t// 立即设置按钮状态\r\n\t\t\tself.checkReceived();\r\n\t\t\t// 每秒更新一次按钮状态\r\n\t\t\tself.timer = setInterval(function() {\r\n\t\t\t\tself.remainTime--;\r\n\t\t\t\t// 固定秒数获取一次状态\r\n\t\t\t\tvar step = self.remainTime%_hao.ENUM_VAR.UPSMS_STATUS_UPDATE_STEP;\r\n\t\t\t\tvar data = {\r\n\t\t\t\t\tstep: step+1,\r\n\t\t\t\t\tminute: '' + Math.floor(self.remainTime/60, 10),\r\n\t\t\t\t\tsecond: '' + self.remainTime%60\r\n\t\t\t\t};\r\n\t\t\t\tvar message = _hao.htmlMaker(_hao.ENUM_MSG.UPSMS_CAPTCHA_COUNT_DOWN, data);\r\n\t\t\t\tself.dialog.element.role('countDownMsg').html(message);\r\n\t\t\t\tif (self.remainTime == 0) {\r\n\t\t\t\t\tself.stopCount();\r\n\t\t\t\t}\r\n\t\t\t\tif (step == 2) {\r\n\t\t\t\t\tself.checkReceived();\r\n\t\t\t\t}\r\n\t\t\t}, 1000);\r\n\t\t},\r\n\t\t// 清除计时\r\n\t\tstopCount: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tself.element.role('status').html(_hao.ENUM_MSG.CAPTCHA_EXPIRED).removeClass('green').addClass('red');\r\n\t\t\t// 清除倒计时提示文字\r\n\t\t\tself.element.role('countDownMsg').empty();\r\n\t\t\tself.element.role('newCaptchaBtn').show();\r\n\t\t\tself.element.role('updateContainer').hide();\r\n\t\t\t// 清除计时器\r\n\t\t\tclearInterval(self.timer);\r\n\t\t\tself.timer = null;\r\n\t\t},\r\n\t\t// 弹窗表单绑定事件\r\n\t\tbindEvents: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tself.dialog.element.role('refresh').bind('click', function() {\r\n\t\t\t\tself.checkReceived();\r\n\t\t\t});\r\n\t\t\tself.dialog.element.role('newCaptchaBtn').bind('click', function() {\r\n\t\t\t\tself.getCaptcha().then(function(result) {\r\n\t\t\t\t\t// 获取验证码失败\r\n\t\t\t\t\tif (!result) {\r\n\t\t\t\t\t\tself.element.role('status').html(_hao.ENUM_MSG.OPER_EXC);\r\n\t\t\t\t\t} else if (result.status == '4' || !result.data.uplinkSmsData) {\r\n\t\t\t\t\t\tself.showBindDialog();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// 更新验证码\r\n\t\t\t\t\t\tself.dialog.element.role('mobile').html(result.data.uplinkSmsData.mobile);\r\n\t\t\t\t\t\tself.dialog.element.role('verifyCode').html(result.data.uplinkSmsData.verifyCode);\r\n\t\t\t\t\t\t// 更新按钮和倒计时状态\r\n\t\t\t\t\t\tself.element.role('status').html(_hao.ENUM_MSG.UPSMS_NOT_RECEIVED);\r\n\t\t\t\t\t\tself.element.role('newCaptchaBtn').hide();\r\n\t\t\t\t\t\tself.element.role('updateContainer').show();\r\n\t\t\t\t\t\tself.countDown();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t},\r\n\t\tdestroy: function() {\r\n\t\t\tthis.element = null;\r\n\t\t\tclearInterval(this.timer);\r\n\t\t\tthis.timer = null;\r\n\t\t\tthis.dialog && this.dialog.destroy();\r\n\t\t\tthis.base();\r\n\t\t}\r\n\t});\r\n\r\n\t_hao.UpSMSCaptcha.defaultOptions = {\r\n\t\tsuccessHandler: function(captchaCode) {\r\n\t\t\t// console.log('input is:' + captchaCode);\r\n\t\t}\r\n\t};\r\n})(jQuery, hao);","(function ($, _hao) {\r\n\t_hao.Captcha.extend('VoiceCaptcha', {\r\n\t\ttemplate: '
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t{{mobile}}\\\r\n\t\t\t\t\t\t\t更改绑定\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t

    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t请注意接听来自 125909888173的来电,验证码将使用语音播报的方式提供\\\r\n\t\t\t\t\t
    ',\r\n\t\tmTemplate: '
    手机验证
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t{{buttonText}}\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t

    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t请注意接听来自 125909888173的来电,验证码将使用语音播报的方式提供\\\r\n\t\t\t\t\t
    ',\r\n\t\t// 语音剩余有效时间\r\n\t\tremainTime: 0,\r\n\t\t// 语音冷却计时器\r\n\t\ttimer: null,\r\n\t\t// 验证码表单输入临时存放对象\r\n\t\ttmpInput: {},\r\n\t\tinit: function (options) {\r\n\t\t\toptions = $.extend({}, _hao.VoiceCaptcha.defaultOptions, options);\r\n\t\t\tthis.base(options);\r\n\t\t},\r\n\t\t// 验证码流程入口\r\n\t\ttrigger: function() {\r\n\t\t\tvar self = this, contentHTML = '';\r\n\t\t\t// 如果已经绑定手机,渲染已绑定流程表单\r\n\t\t\tvar dialogOption = {}, contentHTML;\r\n\t\t\tif (self.opt.mobile) {\r\n\t\t\t\tcontentHTML = Mustache.render(_hao.util.isPC?self.template: self.mTemplate, {\r\n\t\t\t\t\tmobile: self.opt.mobile,\r\n\t\t\t\t\tbindURL: _hao.ENUM_VAR.CHANGE_MOBILE_BIND,\r\n\t\t\t\t\tremainTime: self.remainTime,\r\n\t\t\t\t\tbtnText: self.remainTime?_hao.htmlMaker(_hao.ENUM_MSG.WAIT_REGAIN, {time: self.remainTime+'秒'}):'获取语音验证码'\r\n\t\t\t\t});\r\n\t\t\t\tdialogOption.title = '请完成验证';\r\n\t\t\t\tdialogOption.buttons = [];\r\n\t\t\t} else {// 如果未绑定手机,渲染未绑定手机流程表单\r\n\t\t\t\t// console.log('语音标记');\r\n\t\t\t\tcontentHTML = '
    亲,您还未绑定手机号~~

    成功绑定手机号之后再来抢号

    ';\r\n\t\t\t\tdialogOption.title = '未绑定手机';\r\n\t\t\t\tdialogOption.buttons = [{\r\n\t\t\t\t\ttext: '马上绑定',\r\n\t\t\t\t\tlink: _hao.ENUM_VAR.CHANGE_MOBILE_BIND\r\n\t\t\t\t}];\r\n\t\t\t}\r\n\r\n\t\t\tdialogOption.content= contentHTML;\r\n\t\t\t// 创建新的表单弹窗\r\n\t\t\tif (self.dialog) {\r\n\t\t\t\tself.dialog.destroy();\r\n\t\t\t}\r\n\t\t\tself.dialog = new _hao.Dialog(dialogOption);\r\n\t\t\tself.element = self.dialog.element;\r\n\t\t\tif (self.opt.mobile) {\r\n\t\t\t\tself.bindEvents();\r\n\t\t\t}\r\n\t\t\t// 打开验证码弹窗\r\n\t\t\tself.dialog.open();\r\n\t\t},\r\n\t\t// 提交验证码\r\n\t\tsubmit: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar validatOption = [];\r\n\t\t\tvar captchaCode = $.trim(self.element.role('captchaInput').val());\r\n\t\t\tvalidatOption.push({\r\n\t\t\t\tfield: 'captchaInput',\r\n\t\t\t\tfieldName: '验证码',\r\n\t\t\t\ttype: 'notEmpty',\r\n\t\t\t\tvalue: captchaCode\r\n\t\t\t});\r\n\t\t\t// 如果输入校验通过,执行回调方法,进入领号流程\r\n\t\t\tif (self.isFormVaild(validatOption)) {\r\n\t\t\t\t// this.dialog.close();\r\n\t\t\t\tself.opt.successHandler({verifyCode: captchaCode});\r\n }\r\n\t\t},\r\n\t\t// 获取验证码\r\n\t\tgetCaptcha: function () {\r\n\t\t\tvar self = this;\r\n\t\t\t// 冷却时间未到,返回\r\n\t\t\tif (self.remainTime > 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t// 调用验证码接口下发验证码短信\r\n\t\t $.getJSON(_hao.htmlMaker(_hao.ENUM_PROXY.VOICE_CAPTCHA, {giftId: self.opt.giftId}), {})\r\n\t\t .done(function(captchaData) {\r\n\t\t\t\t// 验证码成功下发\r\n\t\t if (captchaData.status == '1') {\r\n\t\t \t// 提示已发送\r\n\t\t \tself.showMsg(_hao.ENUM_MSG.VOICE_CAPTCHA_SENT);\r\n\t\t \tself.countDown();\r\n\t\t } else {// 验证码发送失败\r\n\t\t \tself.showMsg(captchaData.message);\r\n\t\t }\r\n\t\t\t})\r\n\t\t\t// 接口异常情况\r\n\t\t\t.fail(function() {\r\n\t\t\t\tself.captchaInvalid();\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 下发倒计时\r\n\t\tcountDown: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 重置计时器\r\n\t\t\tclearInterval(self.timer);\r\n\t\t\tself.timer = null;\r\n\t\t\tself.remainTime = _hao.ENUM_VAR.VOICE_COOLDOWN;\r\n\r\n\t\t\t// 立即设置按钮状态\r\n\t\t\tself.element.role('captchaBtn').addClass('form-btn-disable').attr('disabled', 'disabled').text(_hao.htmlMaker(_hao.ENUM_MSG.WAIT_REGAIN, {time: self.remainTime+'秒'}));\r\n\t\t\t// 每秒更新一次按钮状态\r\n\t\t\tself.timer = setInterval(function() {\r\n\t\t\t\tself.remainTime--;\r\n\t\t\t\t// 冷却完成\r\n\t\t\t\tif (self.remainTime == 0) {\r\n\t\t\t\t\tself.element.role('captchaBtn').removeClass('form-btn-disable').removeAttr('disabled').text('获取语音验证码');\r\n\t\t\t\t\t// 清除计时器\r\n\t\t\t\t\tclearInterval(self.timer);\r\n\t\t\t\t\tself.timer = null;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tself.element.role('captchaBtn').addClass('form-btn-disable').attr('disabled', 'disabled').text(_hao.htmlMaker(_hao.ENUM_MSG.WAIT_REGAIN, {time: self.remainTime+'秒'}));\r\n\t\t\t\t}\r\n\t\t\t}, 1000);\r\n\t\t},\r\n\t\t// 弹窗表单绑定事件\r\n\t\tbindEvents: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tself.element.role('captchaBtn').bind('click', function() {\r\n\t\t\t\tself.getCaptcha();\r\n\t\t\t});\r\n\t\t\tself.element.role('submitBtn').bind('click', function() {\r\n\t\t\t\tself.submit();\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 验证表单字段合法性\r\n\t\tisFormVaild: function(validatOption) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar invalidFields = _hao.validator.getInvalid(validatOption);\r\n\t\t\tif (invalidFields.length > 0) {\r\n\t\t\t\tself.element.role(invalidFields[0].field).focus();\r\n\t\t\t\tself.showMsg(invalidFields[0].msg);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tself.showMsg('');\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\t// 提示错误消息\r\n\t\tshowMsg: function(msg) {\r\n\t\t\tvar self = this;\r\n\t\t\tif (!!self.element) {\r\n\t\t\t\tif (!!msg) {\r\n\t\t\t\t\tself.element.role('captchaTip').html(msg);\r\n\t\t\t\t\tself.element.role('tipContainer').show();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tself.element.role('tipContainer').hide();\r\n\t\t\t\t\tself.element.role('captchaTip').empty();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tdestroy: function() {\r\n\t\t\tthis.element = null;\r\n\t\t\tclearInterval(this.timer);\r\n\t\t\tthis.timer = null;\r\n\t\t\tthis.dialog && this.dialog.destroy();\r\n\t\t\tthis.base();\r\n\t\t}\r\n\t});\r\n\r\n\t_hao.VoiceCaptcha.defaultOptions = {\r\n\t\tverifyType: '6',\r\n\t\tsuccessHandler: function(captchaCode) {\r\n\t\t\t// console.log('input is:' + captchaCode);\r\n\t\t}\r\n\t};\r\n})(jQuery, hao);","(function ($, _hao) {\r\n\t_hao.UI.extend('Digger', {\r\n\t\ttemplate: '
    {{{title}}}
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{#password}}\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{/password}}',\r\n\t\tmTemplate: '
    {{{title}}}
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t{{key}}\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{#password}}\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t{{password}}\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{/password}}',\r\n\t\tinit: function(options) {\r\n\t\t\tthis.base(options);\r\n\t\t\tthis.loading = false;\r\n\t\t\tthis.bindEvents();\r\n\t\t},\r\n\t\tbindEvents: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t$.role('dig').on('click', function() {\r\n\t\t\t\tself.dig();\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 淘号频繁倒数器\r\n\t\tgetCountdownHtml: function(second) {\r\n\t\t\tvar hour = parseInt(second/3600, 10),\r\n\t\t\tminute = parseInt((second - hour*3600)/60, 10),\r\n\t\t\tsecond = second - hour*3600 - minute*60;\r\n\t\t\tsecond = (second<10)?'0'+second:second;\r\n\t\t\tvar html = '' +\r\n\t\t\t\t(hour > 0 ? ''+hour+'小时' : '') +\r\n\t\t\t\t(minute > 0 ? ''+minute+'分' : '') +\r\n\t\t\t\t(second > 0 ? ''+second+'秒' : '') +\r\n\t\t\t'';\r\n\t\t\treturn html;\r\n\t\t},\r\n\t\tdig: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tif (self.loading) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tself.loading = true;\r\n\t\t\t$.getJSON(_hao.htmlMaker(_hao.ENUM_PROXY.TAO_HAO, {giftId: self.opt.giftId}))\r\n\t\t\t.done(function(result) {\r\n\t\t\t\tif (result.flag == '1') {\r\n\t\t\t\t\tself.taoSuccess(result.cardInfo.card_number, result.cardInfo.card_pwd);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!!self.taoSuccessDialog) {\r\n\t\t\t\t\t\tself.taoSuccessDialog.destroy();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (result.flag == '101') {\r\n\t \t_hao.msg(_hao.ENUM_MSG.NO_TAO_STOCK, null , '淘号失败');\r\n\t } else if (result.flag == '102') {\r\n\t \t// var getCountdownHtml = function(second) {\r\n\t\t\t\t\t\t// \tvar hour = parseInt(second/3600, 10),\r\n\t\t\t\t\t\t// \tminute = parseInt((second - hour*3600)/60, 10),\r\n\t\t\t\t\t\t// \tsecond = second - hour*3600 - minute*60;\r\n\t\t\t\t\t\t// \tvar html = '' +\r\n\t\t\t\t\t\t// \t\t(hour > 0 ? ''+hour+'小时' : '') +\r\n\t\t\t\t\t\t// \t\t(minute > 0 ? ''+minute+'分' : '') +\r\n\t\t\t\t\t\t// \t\t(second > 0 ? ''+second+'秒' : '') +\r\n\t\t\t\t\t\t// \t'';\r\n\t\t\t\t\t\t// \treturn html;\r\n\t\t\t\t\t\t// };\r\n\t\t\t\t\t\tvar countdown = result.remaTime || 0;\r\n\t \tvar subMsg = _hao.htmlMaker(_hao.ENUM_MSG.WAIT_TIME_SUB, {time: self.getCountdownHtml(countdown)});\r\n\t \t_hao.msg(_hao.ENUM_MSG.TAO_TOO_FREQ, subMsg, '淘号失败');\r\n\t \t// 有需要倒计时的弹窗消息,启动倒计时\r\n\t\t\t\t\t\tif (countdown > 0) {\r\n\t\t\t\t\t\t\tnew _hao.Countdown($.role('expireCountDown'), {second: countdown});\r\n\t\t\t\t\t\t}\r\n\t\t } else {\r\n\t\t _hao.msg(data.errorMsg, null, '淘号失败');\r\n\t\t }\r\n\t\t\t\t}\r\n\t self.loading = false;\r\n\t\t\t}).fail(function(result) {\r\n\t\t\t\t// console.log('fail', result);\r\n\t\t\t\tif (result.status == 403 && result.responseJSON.flag == '102') {\r\n\t\t\t\t\tvar res = result.responseJSON;\r\n\t\t\t\t\tvar countdown = res.remaTime || 0;\r\n\t\t\t\t\tvar subMsg = _hao.htmlMaker(_hao.ENUM_MSG.WAIT_TIME_SUB, {time: self.getCountdownHtml(countdown)});\r\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.TAO_TOO_FREQ, subMsg, '淘号失败');\r\n\t\t\t\t\t// 有需要倒计时的弹窗消息,启动倒计时\r\n\t\t\t\t\tif (countdown > 0) {\r\n\t\t\t\t\t\tnew _hao.Countdown($.role('expireCountDown'), {second: countdown});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tself.loading = false;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\t// 淘号成功\r\n\t\ttaoSuccess: function(key, password) {\r\n\t\t\tvar self = this;\r\n\t\t\t// 创建弹窗\r\n\t \tvar dialogOption = {\r\n\t \t\ttitle: '淘号成功',\r\n\t \t\tcontent: '',\r\n\t \t\tbuttons: [\r\n\t \t\t\t{\r\n\t \t\t\t\ttext: '再淘一次',\r\n\t \t\t\t\tonClick: function() {\r\n\t \t\t\t\t\tself.dig();\r\n\t \t\t\t\t}\r\n\t \t\t\t}\r\n\t \t\t],\r\n\t \t\tonClose: function() {\r\n\t \t\t\tthis.destroy();\r\n\t \t\t}\r\n\t \t};\r\n\t \t// 弹窗主体结构\r\n\t \tvar contentHTML = Mustache.render(_hao.util.isPC?self.template: self.mTemplate, {\r\n\t\t\t\ttitle: _hao.ENUM_MSG.TAO_SUCCESS,\r\n\t\t\t\tkey: key,\r\n\t\t\t\tpassword: password\r\n\t\t\t});\r\n\r\n\t\t\t// 创建弹窗\r\n\t\t\tdialogOption.content = contentHTML;\r\n\t\t\tif (!!self.taoSuccessDialog) {\r\n\t\t\t\tself.taoSuccessDialog.destroy();\r\n\t\t\t}\r\n\t\t\tself.taoSuccessDialog = new _hao.Dialog(dialogOption);\r\n\t\t\t// 复制功能\r\n\t\t\t_hao.clipBoard(self.taoSuccessDialog.element, 'copy', 'data-clipboard-text');\r\n\t\t\tself.taoSuccessDialog.open();\r\n\r\n\t\t\t//淘号成功后添加BI统计\r\n\t\t\t_hao.trackBiClick(self.opt.gameCode || 0, 'gift-tao');\r\n\t\t}\r\n\t});\r\n\t_hao.Digger.defaultOptions = {};\r\n})(jQuery, hao);\r\n","/**\r\n * 求补号\r\n */\r\n(function ($, _hao) {\r\n\t_hao.UI.extend('Supply', {\r\n template: '
    {{title}}
    \\\r\n

    {{{subTitle}}}

    \\\r\n
    \\\r\n \\\r\n
    \\\r\n \\\r\n

    \\\r\n
    \\\r\n
    ',\r\n mTemplate: '
    {{title}}
    \\\r\n

    {{{subTitle}}}

    \\\r\n
    \\\r\n
    \\\r\n \\\r\n
    \\\r\n \\\r\n
    \\\r\n
    \\\r\n

    \\\r\n
    \\\r\n ',\r\n\t\tinit: function(options) {\r\n\t\t\toptions = $.extend({}, _hao.Supply.defaultOptions, options);\r\n\t\t\tthis.base(options);\r\n this.clickCookieName = _hao.htmlMaker(this.opt.clickCookie, {giftId: this.opt.giftId});\r\n this.emailCookieName = _hao.htmlMaker(this.opt.emailCookie, {giftId: this.opt.giftId});\r\n\t\t\tthis.bindEvents();\r\n\t\t},\r\n // 求补号方法\r\n supply: function() {\r\n var self = this;\r\n if (_hao.user.isLogin()) {// 已经登录\r\n // 请求补号接口\r\n $.getJSON(_hao.ENUM_PROXY.SUPPLY_HAO, {gift_id: self.opt.giftId})\r\n .done(function(result) {\r\n if (result.status == '1') {// 成功\r\n // 弹窗提示\r\n self.supplySuccess(result.result.email, result.result.is_fill);\r\n } else {\r\n _hao.msg(_hao.ENUM_MSG.OPER_EXC, _hao.ENUM_MSG.SUPPLY_FAIL_SUB, '求补号失败');\r\n }\r\n });\r\n } else {// 未登录\r\n // 此前是否求补号过\r\n hasAskSupplyBefore = _hao.util.cookie.getCookie(self.clickCookieName) || false,\r\n // 此前留下的邮箱\r\n askSupplyEmail = _hao.util.cookie.getCookie(self.emailCookieName) || '';\r\n if (!!hasAskSupplyBefore) {// 此前点击过\r\n // 弹窗提示\r\n self.supplySuccess(askSupplyEmail, !!hasAskSupplyBefore, true);\r\n } else {// 没点击过\r\n $.getJSON(_hao.ENUM_PROXY.SUPPLY_HAO, {gift_id: self.opt.giftId})\r\n .done(function(result) {\r\n if (result.status == '1') {// 成功\r\n // 弹窗提示\r\n self.supplySuccess('', false, true);\r\n } else {\r\n _hao.msg(_hao.ENUM_MSG.OPER_EXC, _hao.ENUM_MSG.SUPPLY_FAIL_SUB, '求补号失败');\r\n }\r\n });\r\n }\r\n }\r\n },\r\n // 求补号成功弹窗\r\n supplySuccess: function(email, isRepeat, saveCookie) {\r\n var self = this;\r\n // 如果需要保存到cookie\r\n if (saveCookie) {\r\n _hao.util.cookie.setCookie(self.clickCookieName, 1, 86400000);\r\n }\r\n if (self.successDialog != null) {\r\n self.successDialog.destroy();\r\n }\r\n var contentHTML = Mustache.render(_hao.util.isPC?self.template: self.mTemplate, {\r\n title: isRepeat? _hao.ENUM_MSG.SUPPLY_REPEAT : _hao.ENUM_MSG.SUPPLY_SUCCESS,\r\n subTitle: !!email ? _hao.ENUM_MSG.SUPPLY_SUCCESS_SUB: _hao.ENUM_MSG.SUPPLY_SUCCESS_SUB_NOEMAIL,\r\n email: email\r\n });\r\n var dialogOption = {\r\n title: '求补号成功',\r\n content: contentHTML,\r\n buttons: [\r\n {\r\n text: '提交邮箱',\r\n onClick: function() {\r\n self.supplyChangeEmail(this, saveCookie);\r\n }\r\n }\r\n ],\r\n footer: '

    下载APP,到号APP会第一时间通知,领取礼包更快更方便

    '\r\n };\r\n self.successDialog = new _hao.Dialog(dialogOption);\r\n self.successDialog.open();\r\n },\r\n // 更改求补号提醒邮箱\r\n supplyChangeEmail: function(dialog, saveCookie) {\r\n var self = this;\r\n var emailInput = $.trim(dialog.element.role('email').val());\r\n // 校验邮箱格式\r\n var validatOption = [{\r\n field: 'email',\r\n fieldName: '邮箱',\r\n type: 'notEmpty',\r\n value: emailInput\r\n },\r\n {\r\n field: 'email',\r\n fieldName: '邮箱',\r\n type: 'mail',\r\n value: emailInput\r\n }];\r\n // 输入校验\r\n var invalidFields = _hao.validator.getInvalid(validatOption);\r\n if (invalidFields.length > 0) {\r\n dialog.element.role('tip').html(invalidFields[0].msg);\r\n dialog.element.role('tipContainer').show();\r\n return false;\r\n }\r\n // 求补号更改邮箱\r\n $.getJSON(_hao.ENUM_PROXY.SUPPLY_EMAIL, {gift_id: self.opt.giftId, email: emailInput})\r\n .done(function(result) {\r\n if(result.status == '1') {\r\n // 如果需要保存到cookie\r\n if (saveCookie) {\r\n _hao.util.cookie.setCookie(self.emailCookieName, emailInput, 86400000);\r\n }\r\n dialog.close();\r\n _hao.msg(_hao.ENUM_MSG.BIND_EMAIL_SUCCESS, _hao.ENUM_MSG.SUPPLY_SUCCESS_SUB, '更改邮箱成功');\r\n } else {// 更改失败\r\n dialog.element.role('tip').html(result.msg);\r\n dialog.element.role('tipContainer').show();\r\n }\r\n });\r\n },\r\n // 绑定点击加载事件\r\n bindEvents: function() {\r\n var self = this;\r\n $.role('supply').on('click', function() {\r\n self.supply();\r\n });\r\n }\r\n\t});\r\n\t_hao.Supply.defaultOptions = {\r\n clickCookie: 'hao_ask_supply_${giftId}',\r\n emailCookie: 'hao_ask_supply_email_${giftId}'\r\n\t};\r\n})(jQuery, hao);","(function ($, _hao) {\r\n\t_hao.UI.extend('Processer', {\r\n\t\tinit: function(options) {\r\n\t\t\tthis.base(options);\r\n\t\t\tthis.steps = this.opt.steps || [];\r\n\t\t\tthis.nowStep = -1;\r\n\t\t},\r\n\t\taddStep: function(stepFunc) {\r\n\t\t\tif (!!stepFunc && typeof stepFunc == 'function') {\r\n\t\t\t\tthis.steps.push(stepFunc);\r\n\t\t\t}\r\n\t\t},\r\n\t\tstart: function() {\r\n\t\t\tthis.nowStep = -1;\r\n\t\t\tthis.next();\r\n\t\t},\r\n\t\tnext: function() {\r\n\t\t\tthis.nowStep++;\r\n\t\t\tif (!!this.steps[this.nowStep]) {\r\n\t\t\t\tthis.steps[this.nowStep]();\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t_hao.Processer.defaultOptions = {\r\n\t\tsteps: []\r\n\t};\r\n})(jQuery, hao);","(function ($, _hao) {\r\n\t_hao.extend({\r\n\t\t// 简单工厂模式创建发号实例\r\n\t\tsenderFactory: {\r\n\t\t\tcreate: function(options) {\r\n\t\t\t\tvar sender, sendKind = '' + options.sendKind;\r\n\t\t\t\tswitch(sendKind) {\r\n\t\t\t\t\t// 直接发号\r\n\t\t\t\t\tcase _hao.ENUM_VAR.DIRECT_SEND_KIND:\r\n\t\t\t\t\t\tsender = new _hao.DirectSender(options);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t// 抽奖发号\r\n\t\t\t\t\tcase _hao.ENUM_VAR.LOTTERY_SEND_KIND:\r\n\t\t\t\t\t\tsender = new _hao.LotterySender(options);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t// 砸蛋发号\r\n\t\t\t\t\tcase _hao.ENUM_VAR.EGG_SEND_KIND:\r\n\t\t\t\t\t\tsender = new _hao.EggSender(options);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t// 摇号发号\r\n\t\t\t\t\tcase _hao.ENUM_VAR.YAO_SEND_KIND:\r\n\t\t\t\t\t\tsender = new _hao.YaoSender(options);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t// 不登录抽奖活动\r\n\t\t\t\t\tcase _hao.ENUM_VAR.UNLOGIN_LOTTERY_SEND_KIND:\r\n\t\t\t\t\t\tsender = new _hao.UnloginLotterySender(options);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\t// if (!!!sender) {\r\n\t\t\t\t// \tthrow new Error('type '+options.sendKind+' sender not found.');\r\n\t\t\t\t// }\r\n\t \treturn sender;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\t_hao.UI.extend('Sender', {\r\n\t\ttemplate: '
    恭喜您获得了 {{gameName}} {{giftName}}
    \\\r\n\t\t\t\t\t{{#subTitle}}\\\r\n\t\t\t\t\t

    {{{subTitle}}}

    \\\r\n\t\t\t\t\t{{/subTitle}}\\\r\n\t\t\t\t\t{{#key}}\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{/key}}\\\r\n\t\t\t\t\t{{#password}}\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{/password}}\\\r\n\t\t\t\t\t{{#showSubscribe}}\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t

    {{{subscribeTitle}}}

    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t

    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    预订成功!
    \\\r\n\t\t\t\t\t\t

    {{subscribeTip}}

    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{/showSubscribe}}',\r\n\t\tmTemplate: '
    恭喜您获得了 {{gameName}} {{giftName}}
    \\\r\n\t\t\t\t\t{{#subTitle}}\\\r\n\t\t\t\t\t

    {{{subTitle}}}

    \\\r\n\t\t\t\t\t{{/subTitle}}\\\r\n\t\t\t\t\t{{#key}}\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t{{key}}\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{/key}}\\\r\n\t\t\t\t\t{{#password}}\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t{{password}}\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{/password}}\\\r\n\t\t\t\t\t{{#showSubscribe}}\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t

    {{{subscribeTitle}}}

    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t

    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    预订成功!
    \\\r\n\t\t\t\t\t\t

    {{subscribeTip}}

    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{/showSubscribe}}',\r\n\t\t// 锁定状态,避免重复调用抢号\r\n\t\tlock: false,\r\n\t\t// 初始化方法\r\n\t\tinit: function (options) {\r\n\t\t\t// 调用父类初始化方法\r\n\t\t\tthis.base(options);\r\n\t\t\t// 提交领号时使用\r\n\t\t\tthis.postData = {};\r\n\t\t\tthis.captcha = null;\r\n\t\t\tthis.questionnaire = null;\r\n\t\t\t// 流程处理器\r\n\t\t\tthis.processer = null;\r\n\t\t\t// 绑定事件\r\n\t\t\tthis.bindEvents();\r\n\t\t},\r\n\t\t// 领号入口方法,各子类按需重写此方法,增加各自的校验判断\r\n\t\tstart: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 重置提交数据\r\n\t\t\tself.postData = {};\r\n\t\t\t// 启动流程\r\n\t\t\tself.checkHao().then(function(result) {\r\n\t\t\t\tif (!result) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tif (!!result && result.status == '1') {\r\n\t\t\t\t\tself.processer.start();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tself.grabFail(result);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 绑定事件\r\n\t\tbindEvents: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 绑定页面data-ui-role=\"grab\"元素,点击以后发起领号流程\r\n\t\t\t$.role('grab').on('click', function() {\r\n\t\t\t\t// console.log('>> 开始抢号流程');\r\n\t\t\t\tself.start();\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 初始化验证码公共方法\r\n\t\tinitCaptcha: function(options) {\r\n\t\t\tvar self = this;\r\n\t\t\t// 如果已经有验证码\r\n\t\t\tif (!!self.captcha) {\r\n\t\t\t\t// 验证码没有销毁方法,则不创建新验证码实例\r\n\t\t\t\tif (typeof self.captcha.destroy == 'undefined') {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t} else {// 销毁当前验证码 根据配置创建一个新的\r\n\t\t\t\t\tself.captcha.destroy();\r\n\t\t\t\t\tself.captcha = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar options = options || {};\r\n\t\t\t// 验证码前端校验通过后执行的回调\r\n\t\t\toptions.successHandler = function(captchaData) {\r\n\t\t\t\t// 保存验证码输入\r\n\t\t\t\tself.postData = $.extend(self.postData, captchaData);\r\n\t\t\t\t// // 下一个流程环节\r\n\t\t\t\t// self.processer.next();\r\n\r\n\t\t\t\t// 验证码是最后一个环节 直接领号\r\n\t\t\t\tself.submit();\r\n\t\t\t};\r\n\t\t\t// 根据配置返回验证码实例\r\n\t\t\tself.captcha = _hao.captchaFactory.create(options);\r\n\t\t},\r\n\t\t// 初始化问卷公共方法\r\n\t\tinitQuestionnaire: function(options) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar options = options || {};\r\n\t\t\toptions.successHandler = function(data) {\r\n\t\t\t\t// 保存问卷输入\r\n\t\t\t\tself.postData.question = data;\r\n\t\t\t\t// 下一个流程环节\r\n\t\t\t\tself.processer.next();\r\n\t\t\t};\r\n\t\t\t// 创建问卷实例\r\n\t\t\tself.questionnaire = new _hao.Questionnaire(options);\r\n\t\t},\r\n\t\t// 初始化用户问卷\r\n\t\tinitUserForm: function(options) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar options = options || {};\r\n\t\t\toptions.submitUrl = _hao.htmlMaker(_hao.ENUM_PROXY.SAVE_USER_INFO, {giftId: window.haoConfig.giftId});\r\n\t\t\toptions.submitHandler = function(result) {\r\n\t\t\t\tswitch(''+result.status) {\r\n\t\t\t\t\tcase '1':// 成功\r\n\t\t\t\t\tcase '40':// 不需收集用户资料\r\n\t\t\t\t\t\tthis.close();\r\n\t\t\t\t\t\t// 下一个流程环节\r\n\t\t\t\t\t\tself.processer.next();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase '9':// 尚未登录\r\n\t\t\t\t\t\t_hao.user.login();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase '41':// 有字段为空\r\n\t\t\t\t\t\t// 在表单最后一个字段的错误提示位显示错误信息\r\n\t\t\t\t\t\tthis.showError(this.dialog.element.role('field').filter(':last'), _hao.ENUM_MSG.HAS_EMPTY_FIELD);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase '42':// 有字段未通过校验\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tthis.showError(this.dialog.element.role('field').filter(':last'), _hao.ENUM_MSG.OPER_EXC);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\t// 创建问卷实例\r\n\t\t\tself.userForm = new _hao.UserForm(options);\r\n\t\t},\r\n\t\t// 提交领号请求,返回promise对象,返回结果在各子类中处理\r\n\t\tsubmit: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 设置统计参数\r\n\t\t\t_hao.addBIParams(self.postData);\r\n\t\t\t// token防止csrf\r\n\t\t\tself.postData._random_license = window.haoConfig.randomLicense;\r\n\t\t\tvar reqUrl = _hao.ENUM_PROXY.GRAB_HAO;\r\n\t\t\tif (_hao.util.isFromQr()) {\r\n\t\t\t\treqUrl = reqUrl + '?qr=1';\r\n\t\t\t}\r\n\t\t\treturn $.ajax({\r\n\t\t\t\turl: _hao.htmlMaker(reqUrl, {giftId: self.opt.giftId}),\r\n\t\t\t\tdata: self.postData,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'post'\r\n\t\t\t}).then(function(result) {\r\n\t\t\t\t// 统一异常处理\r\n\t\t\t\t// 短信验证码、语音验证码相关错误 直接在验证码弹窗上显示\r\n\t\t\t\tif (result.status == '15' || result.status == '16' || result.status == '17' || result.status == '18' || result.status == '31') {\r\n\t\t\t\t\t!!self.captcha && typeof self.captcha.showMsg == 'function' && self.captcha.showMsg(result.message);\r\n\t\t\t\t\tresult = false;\r\n\t\t\t\t} else {// 非验证码错误,关闭当前验证码窗口(如果需要),然后在各个子类中处理返回值\r\n\t\t\t\t\t!!self.captcha && !!self.captcha.dialog && self.captcha.dialog.close();\r\n\t\t\t\t}\r\n\t\t\t\treturn result;\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 检查号状态,处理基本流程部分\r\n\t\tcheckHao: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar promise = $.ajax({\r\n\t\t\t\turl: _hao.htmlMaker(_hao.ENUM_PROXY.CHECK_HAO, {giftId: self.opt.giftId}),\r\n\t\t\t\tdata: _hao.util.isFromQr() ? {qr:1} : {},\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t});\r\n\t\t\treturn promise.then(function(result) {\r\n\t\t\t\tif (result.status == '2') {// 异常操作\r\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.OPER_EXC);\r\n\t\t\t\t\tresult = false;\r\n\t\t\t\t} else if (result.status == '8') {// 无效发号\r\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.HAO_INVALID);\r\n\t\t\t\t\tresult = false;\r\n\t\t\t\t} else if (result.status == '3') {// 仅移动端有效,当前非移动端\r\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.PC_INVALID);\r\n\t\t\t\t\tresult = false;\r\n\t\t\t\t} else if (result.status == '9') {// 未登录\r\n\t\t\t\t\t// 如果该发号需要登录且未登录,则弹出登录窗\r\n\t\t\t\t\t_hao.user.login();\r\n\t\t\t\t\t_hao.user.loginChain(function() {\r\n\t \tself.start();\r\n\t });\r\n\t\t\t\t\tresult = false;\r\n\t\t\t\t} else if (result.status == '5') {// 帐号被冻结\r\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.ACCOUNT_FROZEN, _hao.ENUM_MSG.ACCOUNT_FROZEN_SUB, _hao.ENUM_MSG.ACCOUNT_FROZEN_TITLE);\r\n\t\t\t\t\tresult = false;\r\n\t\t\t\t} else if (result.status == '12') {// 发号未开始\r\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.HAO_NOT_START_YET);\r\n\t\t\t\t\tresult = false;\r\n\t\t\t\t} else if (result.status == '1' || result.status == '4' || result.status == '14') {// 可以领号 1为成功状态,4为未绑定手机,14为用户资料未填写状态\r\n\t\t\t\t\tself.constructProcesser(result);\r\n\t\t\t\t\tself.processer.start();\r\n\t\t\t\t\tresult = false;\r\n\t\t\t\t}\r\n\t\t\t\treturn result;\r\n\t\t\t})\r\n\t\t\t.fail(function(data) {\r\n\t\t\t\tthrow new Error('get hao infomation error.');\r\n\t\t\t});\r\n\t\t},\r\n\t\t// // 发号校验规则公共部分,校验chekchao接口的返回状态\r\n\t\t// beforeValidate: function(result) {\r\n\t\t// \tvar self = this;\r\n\r\n\t\t// },\r\n\t\t/**\r\n\t\t * 构造领号流程\r\n\t\t */\r\n\t\tconstructProcesser: function(result) {\r\n\t\t\tvar self = this;\r\n\t\t\t// 创建领号流程\r\n\t\t\tself.processer = new _hao.Processer();\r\n\r\n\t\t\t// 需要提交用户资料\r\n\t\t\tif (!!result.data.needUserInfo && result.data.needUserInfo.status == '1') {\r\n\t\t\t\t// 初始化用户信息表单\r\n\t\t\t\tself.initUserForm({fields: result.data.needUserInfo.data});\r\n\t\t\t\t// 增加收集用户信息流程\r\n\t\t\t\tself.processer.addStep(function() {\r\n\t\t\t\t\tself.userForm.trigger();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// 需要问卷\r\n\t\t\tif (!!result.data.question_detail && !!result.data.question_detail.questions && result.data.question_detail.questions.length > 0) {\r\n\t\t\t\t// 初始化问卷\r\n\t\t\t\tself.initQuestionnaire(result.data.question_detail);\r\n\t\t\t\t// 增加问卷流程设置项\r\n\t\t\t\tself.processer.addStep(function() {\r\n\t\t\t\t\tself.questionnaire.trigger();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// 需要验证码,在验证码提交后直接提交抢号\r\n\t\t\tif (!!result.data.verify_code_kind) {\r\n\t\t\t\t// 初始化验证码\r\n\t\t\t\tself.initCaptcha({\r\n\t\t\t\t\t// 已绑定手机号\r\n\t\t\t\t\tmobile: result.data.mobile,\r\n\t\t\t\t\t// 验证码类型\r\n\t\t\t\t\tcaptchaType: result.data.verify_code_kind,\r\n\t\t\t\t\t// 礼包id\r\n\t\t\t\t\tgiftId: self.opt.giftId,\r\n\t\t\t\t\t// 如果上行短信验证码,传入验证码内容\r\n\t\t\t\t\tuplinkSmsData: result.data.uplinkSmsData || {}\r\n\t\t\t\t});\r\n\t\t\t\t// 增加验证码流程设置项\r\n\t\t\t\tself.processer.addStep(function() {\r\n\t\t\t\t\t// console.log('这边配置captcha验证码触发器');\r\n\t\t\t\t\tself.captcha.trigger();\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\t// 增加提交流程\r\n\t\t\t\tself.processer.addStep(function() {\r\n\t\t\t\t\tself.submit();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\t\t// 抢号成功\r\n\t\tgrabSuccess: function(key, password, title) {\r\n\r\n\t\t\tvar self = this;\r\n\r\n\t\t\t// 领取成功统计\r\n\t\t\tself._grabTrack();\r\n\t\t\t// 套用模版\r\n\t\t\tvar template = _hao.util.isPC ? self.template : self.mTemplate;\r\n\t \t// 弹窗内容\r\n\t \tvar contentHTML = '';\r\n\r\n\t \tvar taoHour = 0, taoMin = 0;\r\n\t \t// 有分钟数\r\n\t \tif (!!self.opt.taoTime) {\r\n\t \t\tif (self.opt.taoTime.toString().split('.').length > 1) {\r\n\t\t \t\ttaoHour = parseInt(self.opt.taoTime.toString().split('.')[0], 10);\r\n\t\t \t\ttaoMin = parseInt((self.opt.taoTime - taoHour) * 60, 10);\r\n\t\t \t} else {\r\n\t\t \t\ttaoHour = self.opt.taoTime;\r\n\t\t \t}\r\n\t \t}\r\n\t \tvar taoTimeStr = (taoHour > 0 ? taoHour + '小时': '') + (taoMin > 0 ? taoMin + '分钟': '');\r\n // 是否游戏礼包\r\n\t\t\tvar isGameGift = !!self.opt.gameCode && self.opt.gameCode != '0';\r\n\t\t\t// 是游戏礼包 并且用户已登录,弹窗需要获取订阅信息\r\n\t\t\tif (isGameGift && _hao.user.isLogin()) {\r\n\t\t\t\t// 获取订阅信息\r\n\t\t\t\t_hao.subscribe.checkSchema(self.opt.gameCode)\r\n\t\t\t\t.done(function(scheResult) {\r\n\t\t \t// 是否已预订该游戏\r\n\t\t \tvar hasSubscribe = scheResult.flag == 5? true : false;\r\n\t\t \t// 已绑定邮箱地址\r\n\t\t \tvar leftEmail = !!scheResult.data ? scheResult.data.email : '';\r\n\t\t \t// 已绑定手机号\r\n\t\t \tvar leftMobile = !!scheResult.data ? scheResult.data.mobile : '';\r\n\t\t\t\t\t// 渲染弹窗内容\r\n\t\t \tcontentHTML = Mustache.render(template, {\r\n\t\t\t \t\tgameName: self.opt.gameName,\r\n\t\t\t \t\tgiftName: self.opt.giftName,\r\n\t\t\t \t\tsubTitle: !!self.opt.taoTime && parseFloat(self.opt.taoTime) != 0? _hao.htmlMaker(hao.ENUM_MSG.GRAB_SUCCESS_SUB, {time: taoTimeStr}) + _hao.ENUM_MSG.GRAB_SUCCESS_SUB2: _hao.ENUM_MSG.GRAB_SUCCESS_SUB2,\r\n\t\t\t \t\tkey: key,\r\n\t\t\t \t\tpassword: password,\r\n\t\t\t \t\tshowSubscribe: !hasSubscribe,\r\n\t\t\t \t\tleftMobile: leftMobile,\r\n\t\t\t \t\tleftEmail: leftEmail,\r\n\t\t\t \t\tsubscribeTitle: _hao.ENUM_MSG.SCHE_TIP_WITHOUT_EMAIL,\r\n\t\t\t \t\tsubscribeTip: _hao.ENUM_MSG.BIND_INFO_SUCCESS_SUB\r\n\t\t\t \t});\r\n\t\t\t \tself.showGrabSuccessDialog(title, contentHTML);\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\t// 渲染弹窗内容\r\n\t \tcontentHTML = Mustache.render(template, {\r\n\t\t \t\tgameName: self.opt.gameName,\r\n\t\t \t\tgiftName: self.opt.giftName,\r\n\t\t \t\tsubTitle: !!self.opt.taoTime && parseFloat(self.opt.taoTime) != 0? _hao.htmlMaker(hao.ENUM_MSG.GRAB_SUCCESS_SUB, {time: taoTimeStr}): '',\r\n\t\t \t\tkey: key,\r\n\t\t \t\tpassword: password,\r\n\t\t \t\tshowSubscribe: false,\r\n\t\t \t\tleftMobile: '',\r\n\t\t \t\tleftEmail: '',\r\n\t\t \t\tsubscribeTitle: ''\r\n\t\t \t});\r\n\t\t \tself.showGrabSuccessDialog(title, contentHTML);\r\n\t\t\t}\r\n\t\t},\r\n\t\t/**\r\n\t\t * 展示抢号成功弹窗\r\n\t\t * @param {[type]} contentHTML 弹窗页面内容\r\n\t\t */\r\n\t\tshowGrabSuccessDialog: function(title, content) {\r\n\t\t\tvar self = this;\r\n\t\t\t// 创建弹窗\r\n\t \tvar dialogOption = {\r\n\t \t\ttitle: title || '抢号成功',\r\n\t \t\tcontent: content,\r\n\t \t\tbuttons: [],\r\n\t \t\tshare: true,\r\n\t \t\tonClose: function() {\r\n\t \t\t\tthis.destroy();\r\n\t \t\t}\r\n\t \t};\r\n\t\t\tif (!!self.grabSuccessDialog) {\r\n\t\t\t\tself.grabSuccessDialog.destroy();\r\n\t\t\t}\r\n\t\t\tself.grabSuccessDialog = new _hao.Dialog(dialogOption);\r\n\t\t\tvar $dialog = self.grabSuccessDialog.element;\r\n\r\n\t\t\t// 弹窗绑定事件\r\n\t\t\tif (_hao.util.isPC) {\r\n\t\t\t\t// 复制功能\r\n\t\t\t\t_hao.clipBoard(self.grabSuccessDialog.element, 'copy', 'data-clipboard-text');\r\n\t\t\t}\r\n\t\t\t//绑定邮箱\r\n\t\t\tself.grabSuccessDialog.element.role('submit').click(function() {\r\n\t\t\t\t// 校验邮箱\r\n\t\t\t\tvar emailInput = $.trim(self.grabSuccessDialog.element.role('email').val());\r\n\t\t\t\tvar mobileInput = $.trim(self.grabSuccessDialog.element.role('mobile').val());\r\n\t\t\t\tvar validatOption = [{\r\n\t\t\t\t\t\tfield: 'email',\r\n\t\t\t\t\t\tfieldName: '邮箱',\r\n\t\t\t\t\t\ttype: 'notEmpty',\r\n\t\t\t\t\t\tvalue: emailInput\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfield: 'email',\r\n\t\t\t\t\t\tfieldName: '邮箱',\r\n\t\t\t\t\t\ttype: 'mail',\r\n\t\t\t\t\t\tvalue: emailInput\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfield: 'mobile',\r\n\t\t\t\t\t\tfieldName: '手机',\r\n\t\t\t\t\t\ttype: 'notEmpty,phone',\r\n\t\t\t\t\t\tvalue: mobileInput\r\n\t\t\t\t\t}];\r\n\t\t\t\tvar invalidFields = _hao.validator.getInvalid(validatOption);\r\n\t\t\t\tif (invalidFields.length > 0) {\r\n\t\t\t\t\t$dialog.role(invalidFields[0].field).focus();\r\n\t\t\t\t\t$dialog.role('msg').html(invalidFields[0].msg);\r\n\t\t\t\t\t$dialog.role('msgContainer').show();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\t$dialog.role('msg').empty();\r\n\t\t\t\t$dialog.role('msgContainer').hide();\r\n\t\t\t\t// 绑定邮箱、手机号并订阅\r\n\t\t\t\t_hao.subscribe.submit(self.opt.gameCode, emailInput, mobileInput)\r\n\t\t\t\t.done(function(bindResult) {\r\n\t\t\t\t\tif (bindResult.flag == 1) { //成功预订\r\n\t\t\t\t\t\t$dialog.role('subscribeForm').hide();\r\n\t\t\t\t\t\t$dialog.role('success').show();\r\n\t\t\t\t\t} else if (bindResult.flag == 3) {// 未登录或者未认证邮箱\r\n\t\t\t\t\t\t_hao.user.login();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$dialog.role('msg').html(data.errorMsg).show();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tself.grabSuccessDialog.open();\r\n\t\t},\r\n\t\tshowCodeDialog: function() {\r\n\t\t\t// 同第三方抢号平台\r\n\t\t\tvar dialog = new hao.Dialog({\r\n\t\t\t\ttitle: '下载APP抢号',\r\n\t\t\t\tcontent: '
    \"\"
    ',\r\n\t\t\t\tbuttons: [],\r\n\t\t\t\twrapClass: 'dialog-app-code'\r\n\t\t\t})\r\n\t\t\tdialog.open();\r\n\t\t},\r\n\t\t// 抢号失败,仅游鲤发放时,显示游鲤二维码弹窗\r\n\t\tshowYouliDialog: function() {\r\n\t\t\tvar contentHTML = '
    请使用游鲤APP访问!

    暂时仅支持安卓版下载

    ';\r\n\t\t\tvar contentHtmlM = '
    请使用游鲤APP访问!
    游鲤下载
    ';\r\n\r\n\t\t\tvar dialogOption = {\r\n\t\t\t\ttitle: '抢号失败',\r\n\t\t\t\tcontent: _hao.util.isPC?contentHTML:contentHtmlM,\r\n\t\t\t\tbuttons: []\r\n\t\t\t};\r\n\t\t\tyouliDialog = new _hao.Dialog(dialogOption);\r\n\r\n\t\t\tvar youliUrlParams\r\n\t\t\t\t, newGameCode = ued.newgameCode\r\n , uid = Passport.data('uid')\r\n , youliUrlParams = 'page=gifts&actionType=takehao&code='+newGameCode+'&giftId='+haoConfig.giftId+''\r\n , youliDlUrl\r\n if ( uid ) {\r\n youliUrlParams = youliUrlParams+'&user='+uid+''\r\n }\r\n\r\n youliDlUrl = 'https://youli.17173.com/app/download.shtml?utm_source=173yl&utm_medium=newgame&'+youliUrlParams+'&ssid='+ued.pingjs.get('ssid')+''\r\n\r\n\t\t\tif (_hao.util.isPC) {\r\n\t\t\t\t_hao.util.getTinyLink(youliDlUrl, '5b90f7437866df0001eb9a42')\r\n .done(function(url) {\r\n \tif (url) {\r\n\t pandora.use([ 'qrcode'], function(Qrcode) {\r\n\t new Qrcode({\r\n\t element: '.dialog-sender-code-youli div',\r\n\t text: url,\r\n\t size : 128\r\n\t });\r\n\t });\r\n\t } else {\r\n\t \t$('.dialog-sender-code-youli').remove()\r\n\t }\r\n })\r\n\t\t\t}\r\n\r\n\t\t\t// the mobile\r\n $('.dialog-bt-dl-youli').on('click', function(e) {\r\n \te.preventDefault();\r\n\r\n\t\t if (_hao.util.isWexinQQBrowser) {\r\n\t\t _hao.pop_wx.init();\r\n\t\t }\r\n\t\t else {\r\n\t\t _hao.util.checkOpen(function (opend) {\r\n\t\t if (!opend) {\r\n\t\t location.href = youliDlUrl;\r\n\t\t }\r\n\t\t });\r\n\t\t location.href = 'yl://youli?page=gifts&actionType=takehao&newGameCode='+newGameCode+'&giftId='+haoConfig.giftId+'';\r\n\t\t }\r\n\t\t })\r\n\r\n\t\t\tyouliDialog.open();\r\n\t\t},\r\n\t\t// 抢号失败,参与活动失败通用情况\r\n\t\tgrabFail: function(failData) {\r\n\t\t\tvar self = this,\r\n\t\t\tmsg = '',\r\n\t\t\tsubMsg = '',\r\n\t\t\t// 是否有倒计时\r\n\t\t\tcountdown = 0,\r\n\t\t\tshowMsg = true,\r\n\t\t\ttitle = failData.title || '抢号失败';\r\n\t\t\tvar getCountdownHtml = function(second) {\r\n\t\t\t\tvar hour = parseInt(second/3600, 10),\r\n\t\t\t\tminute = parseInt((second - hour*3600)/60, 10),\r\n\t\t\t\tsecond = second - hour*3600 - minute*60;\r\n\t\t\t\tvar html = '' +\r\n\t\t\t\t\t(hour > 0 ? ''+hour+'小时' : '') +\r\n\t\t\t\t\t(minute > 0 ? ''+minute+'分' : '') +\r\n\t\t\t\t\t(second > 0 ? ''+second+'秒' : '') +\r\n\t\t\t\t'';\r\n\t\t\t\treturn html;\r\n\t\t\t};\r\n\t\t\tswitch('' + failData.status) {\r\n\t\t\t\t// 无效礼包\r\n\t\t\t\tcase '0':\r\n\t\t\t\t\tmsg = _hao.ENUM_MSG.HAO_INVALID;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t// 未到固定时段\r\n\t\t\t\tcase '6':\r\n\t\t\t\t\tmsg = _hao.ENUM_MSG.HAO_END_THIS_TURN;\r\n\t\t\t\t\tcountdown = failData.data.lefttime || 0;\r\n\t\t\t\t\tsubMsg = _hao.htmlMaker(_hao.ENUM_MSG.WAIT_TIME_SUB, {time: getCountdownHtml(countdown)});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t// 固定发号数量已经到达上限\r\n\t\t\t\tcase '7':\r\n\t\t\t\t\tmsg = _hao.ENUM_MSG.HAO_EMPTY;\r\n\t\t\t\t\tsubMsg = _hao.ENUM_MSG.HAO_EMPTY_SUB;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t// 频繁\r\n\t\t\t\tcase '10':\r\n\t\t\t\t\tmsg = _hao.ENUM_MSG.TOO_FREQ;\r\n\t\t\t\t\tcountdown = failData.data.expireTime || 0;\r\n\t\t\t\t\tsubMsg = _hao.htmlMaker(_hao.ENUM_MSG.WAIT_TIME_SUB, {time: getCountdownHtml(countdown)});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t// IP限制\r\n\t\t\t\tcase '48':\r\n\t\t\t\t\tmsg = _hao.htmlMaker(_hao.ENUM_MSG.IP_NO_CHANCE, {chance: failData.data.count});\r\n\t\t\t\t\tcountdown = failData.data.expireTime || 0;\r\n\t\t\t\t\tsubMsg = _hao.htmlMaker(_hao.ENUM_MSG.WAIT_TIME_SUB, {time: getCountdownHtml(countdown)});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t// 超出可用次数\r\n\t\t\t\tcase '11':\r\n\t\t\t\t\tmsg = _hao.htmlMaker(_hao.ENUM_MSG.NO_CHANCE, {chance: failData.data.count});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t// 号已发完\r\n\t\t\t\tcase '13':\r\n\t\t\t\t\tmsg = _hao.ENUM_MSG.HAO_EMPTY;\r\n\t\t\t\t\tsubMsg = _hao.ENUM_MSG.HAO_EMPTY_SUB;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t// 请使用APP访问\r\n\t\t\t\tcase '50':\r\n\t\t\t\t\tshowMsg = false;\r\n\t\t\t\t\tif (Passport.data('uid')) {\r\n\t\t\t\t\t\tself.showCodeDialog()\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t_hao.user.login();\r\n\t _hao.user.loginChain(function() {\r\n\t\t\t\t\t\t\tself.showCodeDialog()\r\n\t });\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t// 其余错误直接使用接口返回错误\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tmsg = !!failData.message ? failData.message : failData.data.message;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif (showMsg) {\r\n\t\t\t\t_hao.msg(msg, subMsg, title);\r\n\t\t\t}\r\n\t\t\t// 有需要倒计时的弹窗消息,启动倒计时,倒计时结束后刷新页面\r\n\t\t\tif (countdown > 0) {\r\n\t\t\t\tnew _hao.Countdown($.role('expireCountDown'), {second: countdown});\r\n\t\t\t}\r\n\t\t},\r\n\t\t// 领号/参与活动成功后发起统计\r\n\t\t_grabTrack: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tif (location.host == 'hao.17173.com') {\r\n\t\t\t\twindow._jc_ping = window._jc_ping || [];\r\n\t\t\t\t_jc_ping.push(['_track', 139, {\r\n\t\t\t\t\tgamecode: self.opt.gameCode || 0,\r\n\t\t\t\t\tgiftid: self.opt.giftId,\r\n\t\t\t\t\tsuv: (window.ued && ued.pingjs) ? ued.pingjs.get('uv') : ''\r\n\t\t\t\t}]);\r\n\t\t\t}\r\n\t\t\t_hao.trackBiClick(self.opt.gameCode || 0, 'gift-checkhao');\r\n\t\t}\r\n\t});\r\n\r\n\t_hao.Sender.defaultOptions = {};\r\n})(jQuery, hao);\r\n","(function ($, _hao) {\r\n\t_hao.Sender.extend('DirectSender', {\r\n\t\tinit: function (options) {\r\n\t\t\tthis.base(options);\r\n\t\t},\r\n\t\t// 重写父类方法\r\n\t\tstart: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tself.checkHao().then(function(result) {\r\n\t\t\t\t// 如果没通过公共校验部分,或者已经判定通过,则无需继续进行个性判断\r\n\t\t\t\tif (!result) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tself.grabFail(result);\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 重写父类方法\r\n\t\tsubmit: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 调用父类base方法\r\n\t\t\tself.base()\r\n\t\t\t// 自己处理返回结果\r\n\t\t\t.then(function(result) {\r\n\t\t\t\tif (!result) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tif (result.status == '1') {\r\n\t\t\t\t\tself.grabSuccess(result.data.card_number, result.data.card_pwd);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tself.grabFail(result);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\t_hao.DirectSender.defaultOptions = {};\r\n})(jQuery, hao);","(function ($, _hao) {\r\n\t_hao.Sender.extend('EggSender', {\r\n\t\ttemplate: {\r\n\t\t\t'win': '
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t

    {{title}}

    \\\r\n\t\t\t\t\t\t\t{{^rawUrl}}\\\r\n\t\t\t\t\t\t\t{{#key}}\\\r\n\t\t\t\t\t\t\t

    账号:{{key}}

    \\\r\n\t\t\t\t\t\t\t{{/key}}\\\r\n\t\t\t\t\t\t\t{{#password}}\\\r\n\t\t\t\t\t\t\t

    密码:{{password}}

    \\\r\n\t\t\t\t\t\t\t{{/password}}\\\r\n\t\t\t\t\t\t\t{{/rawUrl}}\\\r\n\t\t\t\t\t\t\t{{#rawUrl}}\\\r\n\t\t\t\t\t\t\t

    {{{subTitle}}}

    \\\r\n\t\t\t\t\t\t\t{{/rawUrl}}\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{^rawUrl}}\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t{{{subTitle}}}\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{/rawUrl}}\\\r\n\t\t\t\t\t{{#rawUrl}}\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t我也想要\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{/rawUrl}}\\\r\n\t\t\t\t\t
    ',\r\n\t\t\t'hasWin': '
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t

    {{title}}

    \\\r\n\t\t\t\t\t\t\t

    {{{subTitle}}}

    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{#rawUrl}}\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t我也想要\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{/rawUrl}}\\\r\n\t\t\t\t\t{{^rawUrl}}\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{/rawUrl}}',\r\n\t\t\t'hasntWin': '
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t

    {{title}}

    \\\r\n\t\t\t\t\t\t\t

    {{subTitle}}

    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    '\r\n\t\t},\r\n\t\tmTemplate: {\r\n\t\t\t'win': '
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t

    {{title}}

    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t

    {{{subTitle}}}

    \\\r\n\t\t\t\t\t\t{{^rawUrl}}\\\r\n\t\t\t\t\t\t{{#key}}\\\r\n\t\t\t\t\t\t

    账号:{{key}}

    \\\r\n\t\t\t\t\t\t{{/key}}\\\r\n\t\t\t\t\t\t{{#password}}\\\r\n\t\t\t\t\t\t

    密码:{{password}}

    \\\r\n\t\t\t\t\t\t{{/password}}\\\r\n\t\t\t\t\t\t{{/rawUrl}}\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{#rawUrl}}\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t我也想要\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{/rawUrl}}\\\r\n\t\t\t\t\t
    ',\r\n\r\n\t\t\t'hasWin': '
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t

    {{title}}

    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    {{{subTitle}}}
    \\\r\n\t\t\t\t\t\t{{#rawUrl}}\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t我也想要\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t{{/rawUrl}}\\\r\n\t\t\t\t\t\t{{^rawUrl}}\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t{{/rawUrl}}',\r\n\r\n\t\t\t'hasntWin': '
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t

    {{title}}

    \\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    {{{subTitle}}}
    \\\r\n\t\t\t\t\t\t
    '\r\n\t\t},\r\n\t\tinit: function (options) {\r\n\t\t\tthis.base(options);\r\n\t\t},\r\n\t\t// 重写checkhao,需要传递特征码参数\r\n\t\tcheckHao: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar promise = $.ajax({\r\n\t\t\t\turl: _hao.htmlMaker(_hao.ENUM_PROXY.CHECK_HAO, {giftId: self.opt.giftId}),\r\n\t\t\t\tdata: {\r\n\t\t\t\t\th: haoConfig.feature || ''\r\n\t\t\t\t},\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t});\r\n\t\t\treturn promise.then(function(result) {\r\n\t\t\t\tif (result.status == '2') {// 异常操作\r\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.OPER_EXC);\r\n\t\t\t\t\tresult = false;\r\n\t\t\t\t} else if (result.status == '8') {// 无效发号\r\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.HAO_INVALID);\r\n\t\t\t\t\tresult = false;\r\n\t\t\t\t} else if (result.status == '3') {// 仅移动端有效,当前非移动端\r\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.PC_INVALID);\r\n\t\t\t\t\tresult = false;\r\n\t\t\t\t} else if (result.status == '9') {// 未登录\r\n\t\t\t\t\t// 如果该发号需要登录且未登录,则弹出登录窗\r\n\t\t\t\t\t_hao.user.login();\r\n\t\t\t\t\t_hao.user.loginChain(function() {\r\n\t \twindow.location.reload();\r\n\t });\r\n\t\t\t\t\tresult = false;\r\n\t\t\t\t} else if (result.status == '5') {// 帐号被冻结\r\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.ACCOUNT_FROZEN, _hao.ENUM_MSG.ACCOUNT_FROZEN_SUB, _hao.ENUM_MSG.ACCOUNT_FROZEN_TITLE);\r\n\t\t\t\t\tresult = false;\r\n\t\t\t\t} else if (result.status == '12') {// 发号未开始\r\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.HAO_NOT_START_YET);\r\n\t\t\t\t\tresult = false;\r\n\t\t\t\t} else if (result.status == '1' || result.status == '4' || result.status == '14') {// 可以领号 1为成功状态,4为未绑定手机,14为用户资料未填写状态\r\n\t\t\t\t\t// 如果是好友帮忙砸蛋,则跳过其他验证和资料收集流程,直接砸蛋\r\n\t\t\t\t\tif (!!result.data.smash && !!result.data.smash.feature) {\r\n\t\t\t\t\t\t// 不需要用户信息\r\n\t\t\t\t\t\tresult.data.needUserInfo = false;\r\n\t\t\t\t\t\t// 不需要问卷\r\n\t\t\t\t\t\tresult.data.question_detail = false;\r\n\t\t\t\t\t\t// 不需要验证码\r\n\t\t\t\t\t\tresult.data.verify_code_kind = '';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tself.constructProcesser(result);\r\n\t\t\t\t\tself.processer.start();\r\n\t\t\t\t\tresult = false;\r\n\t\t\t\t}\r\n\t\t\t\treturn result;\r\n\t\t\t})\r\n\t\t\t.fail(function(data) {\r\n\t\t\t\tthrow new Error('get hao infomation error.');\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 重写父类方法\r\n\t\tstart: function(order) {\r\n\t\t\tvar self = this;\r\n\t\t\tself.postData = {\r\n\t\t\t\torder: order,\r\n\t\t\t\th: haoConfig.feature\r\n\t\t\t};\r\n\t\t\tself.checkHao().then(function(result) {\r\n\t\t\t\t// 如果没通过公共校验部分,或者已经判定通过,则无需继续进行个性判断\r\n\t\t\t\tif (!result) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tif (!result.data.smash) {// 没有返回smash对象\r\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.OPER_EXC);\r\n\t\t\t\t} else if (result.status == '23') {// 已经参与过\r\n\t\t\t\t\tif (result.data.smash.isWinner == '0') { // 未获奖\r\n\t\t\t\t\t\tself.grabResult('hasntWin', {\r\n\t\t\t\t\t\t\ttitle: result.data.smash.role == '1' ? 'Sorry,您已经砸过了' : 'Sorry,您已经帮TA砸过了',\r\n\t\t\t\t\t\t\tsubTitle: result.data.smash.role == '1' ? '可以分享给好友,让TA帮您一起砸,好友砸中也算您的哟!!': '您可以扩散给更多好友,让TA们帮忙一起砸!!'\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tif (result.data.smash.role == '1') {\r\n\t\t\t\t\t\t\tself.showShare('我正在抢“'+self.opt.gameName+' '+self.opt.giftName+'”,快来帮我一起砸蛋:'+ result.data.spreadUrl, result.data.spreadUrl);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tself.showShare('我的好友正在抢“'+self.opt.gameName+' '+self.opt.giftName+'”,快来帮忙一起砸蛋:'+ result.data.spreadUrl, result.data.spreadUrl);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (result.data.smash.isWinner == '1') {// 自己砸中\r\n\t\t\t\t\t\tself.grabResult('hasWin', {\r\n\t\t\t\t\t\t\ttitle: result.data.smash.role == '1' ? '您已经参与过本活动,幸运地中奖啦~~' : '谢谢您的参与,TA已经拿到奖励啦~',\r\n\t\t\t\t\t\t\tsubTitle: result.data.smash.role == '1' ? '可以在 我的帐号箱 中查看卡密信息': '',\r\n\t\t\t\t\t\t\trawUrl: result.data.smash.role == '1' ? false : window.location.pathname\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tif (result.data.smash.role == '1') {\r\n\t\t\t\t\t\t\tself.showShare('我在17173发号中心抢到了“'+self.opt.gameName+' '+self.opt.giftName+'”,小伙伴们速来,手快有手慢无:'+ result.data.spreadUrl, result.data.spreadUrl);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {// 好友砸中\r\n\t\t\t\t\t\tself.grabResult('hasWin', {\r\n\t\t\t\t\t\t\ttitle: result.data.smash.role == '1' ? '您的小伙伴棒棒哒,帮您砸到了大奖~~' : '谢谢您的参与,TA已经拿到奖励啦~',\r\n\t\t\t\t\t\t\tsubTitle: result.data.smash.role == '1' ? '可以在 我的帐号箱 中查看卡密信息': '',\r\n\t\t\t\t\t\t\trawUrl: result.data.smash.role == '1' ? false : window.location.pathname\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tif (result.data.smash.role == '1') {\r\n\t\t\t\t\t\t\tself.showShare('我在17173发号中心抢到了“'+self.opt.gameName+' '+self.opt.giftName+'”,小伙伴们速来,手快有手慢无:'+ result.data.spreadUrl, result.data.spreadUrl);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {// 其他错误\r\n\t\t\t\t\tresult.title = '参与砸蛋失败';\r\n\t\t\t\t\tself.grabFail(result);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 重写父类方法\r\n\t\tsubmit: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 调用父类base方法\r\n\t\t\tself.base()\r\n\t\t\t// 自己处理返回结果\r\n\t\t\t.then(function(result) {\r\n\t\t\t\tif (!result) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\t// 播放砸蛋动画 完成后返回结果\r\n\t\t\t\tself.breakEgg(self.postData.order, function() {\r\n\t\t\t\t\tif (result.status == '1') {// 砸蛋成功\r\n\t\t\t\t\t\tif (result.data.smash.role == '1') {// 自己砸中\r\n\t\t\t\t\t\t\tvar taoHour = 0, taoMin = 0;\r\n\t\t\t\t\t \t// 有分钟数\r\n\t\t\t\t\t \tif (!!self.opt.taoTime) {\r\n\t\t\t\t\t \t\tif (self.opt.taoTime.toString().split('.').length > 1) {\r\n\t\t\t\t\t\t \t\ttaoHour = parseInt(self.opt.taoTime.toString().split('.')[0], 10);\r\n\t\t\t\t\t\t \t\ttaoMin = parseInt((self.opt.taoTime - taoHour) * 60, 10);\r\n\t\t\t\t\t\t \t} else {\r\n\t\t\t\t\t\t \t\ttaoHour = self.opt.taoTime;\r\n\t\t\t\t\t\t \t}\r\n\t\t\t\t\t \t}\r\n\t\t\t\t\t \tvar taoTimeStr = (taoHour > 0 ? taoHour + '小时': '') + (taoMin > 0 ? taoMin + '分钟': '');\r\n\r\n\t\t\t\t\t\t\tself.grabResult('win', {\r\n\t\t\t\t\t\t\t\ttitle: '恭喜您,砸中啦~~',\r\n\t\t\t\t\t\t\t\tsubTitle: (!!self.opt.taoTime ? '该号 '+taoTimeStr+' 后将进入淘号库,请尽快使用。' : '礼包将于'+self.opt.endTimeStr+'到期。') + '在我的帐号箱中可查看抢号记录。',\r\n\t\t\t\t\t\t\t\tkey: result.data.cardInfo.card_number,\r\n\t\t\t\t\t\t\t\tpassword: result.data.cardInfo.card_pwd,\r\n\t\t\t\t\t\t\t\ttaoTimeStr: !!self.opt.taoTime && parseFloat(self.opt.taoTime) != 0 ? taoTimeStr: ''\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tif (_hao.util.isPC) {\r\n\t\t\t\t\t\t\t\t// 复制功能\r\n\t\t\t\t\t\t\t\t_hao.clipBoard($.role('egg-container'), 'copy', 'data-clipboard-text');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tself.showShare('我在17173发号中心抢到了“'+self.opt.gameName+' '+self.opt.giftName+'”,小伙伴们速来,手快有手慢无:'+ window.location.href, window.location.href);\r\n\t\t\t\t\t\t} else {// 好友砸中\r\n\t\t\t\t\t\t\tself.grabResult('win', {\r\n\t\t\t\t\t\t\t\ttitle: '恭喜您,砸中啦~~',\r\n\t\t\t\t\t\t\t\tsubTitle: '奖品已经发往您的好友 '+result.data.smash.nickName+' 的账号箱中。快告诉TA这个好消息,让TA给您发个大红包~~',\r\n\t\t\t\t\t\t\t\trawUrl: window.location.pathname\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tself.showShare('我帮你抢到了“'+self.opt.gameName+' '+self.opt.giftName+'”快给我来个大红包以表谢意。中奖的礼包已经发到你的账号箱里了,查看地址:http://hao.17173.com/my-giftlist.html');\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t} else if (result.status == '27') {// 没砸中\r\n\t\t\t\t\t\tself.grabResult('hasntWin', {\r\n\t\t\t\t\t\t\ttitle: 'Sorry,您发挥失常,没能砸中',\r\n\t\t\t\t\t\t\tsubTitle: result.data.smash.role == '1' ? '可以分享给好友,让TA帮您一起砸,好友砸中也算您的哟!!': '您可以扩散给更多好友,让TA们帮忙一起砸!!'\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tif (result.data.smash.role == '1') {\r\n\t\t\t\t\t\t\tself.showShare('我正在抢“'+self.opt.gameName+' '+self.opt.giftName+'”,快来帮我一起砸蛋:'+ result.data.spreadUrl, result.data.spreadUrl);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tself.showShare('我的好友正在抢“'+self.opt.gameName+' '+self.opt.giftName+'”,快来帮忙一起砸蛋:'+ result.data.spreadUrl, result.data.spreadUrl);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (result.status == '29') {// 已参与 已中奖\r\n\t\t\t\t\t\thao.msg('您已经参与过本活动,幸运地中奖啦~~');\r\n\t\t\t\t\t} else if (result.status == '30') {// 已参与 未中奖\r\n\t\t\t\t\t\thao.msg('已经砸过啦,可以分享给好友,让TA帮您一起砸,好友砸中也算您的哟!!', +result.data.spreadUrl);\r\n\t\t\t\t\t\tself.grabResult('noWin');\r\n\t\t\t\t\t\tself.showShare('我正在抢“'+self.opt.gameName+' '+self.opt.giftName+'”,快来帮我一起砸蛋:'+ result.data.spreadUrl, result.data.spreadUrl);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tself.grabFail(result);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 砸蛋分享\r\n\t\tshowShare: function(title, url) {\r\n\t\t\t$.role('egg-share').length > 0 && pandora.use(['share'], function(Share) {\r\n\t\t new Share({\r\n\t\t element: $.role('egg-share'),\r\n\t\t showLabel: !1,\r\n\t\t\t shareList: 'qzone,tsina,tqq,weixin,qq',\r\n\t\t\t shape: 'cir',\r\n\t\t\t size: _hao.util.isPC ? 'xl': 'm',\r\n\t\t\t importStyle: _hao.util.isPC? true: false,\r\n\t\t\t shUrl: url,\r\n\t\t shTitle: title\r\n\t\t });\r\n\t\t });\r\n\t\t},\r\n\t\t// 绑定事件\r\n\t\tbindEvents: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 在砸蛋页面每改变一次登录状态,就刷新一次页面\r\n\t\t\tif (hao.user.isLogin()) {\r\n\t\t\t\tApp.on(App.EVENTS.logoutSuccess, function() {\r\n\t\t\t window.location.reload();\r\n\t\t\t });\r\n\t\t\t}\r\n\t\t\t// 绑定页面data-ui-role=\"grab\"元素,点击以后发起领号流程\r\n\t\t\t$.role('grab').on('click', function() {\r\n\t\t\t\t// 蛋的序号 从1开始\r\n\t\t\t\tvar order = $(this).index() + 1;\r\n\t\t\t\tself.start(order);\r\n\t\t\t});\r\n\t\t\t// 蛋的动画\r\n\t\t\t$('.js-egg li').hover(function() {\r\n\t\t\t $(this).addClass('hover'),\r\n\t\t\t setTimeout(function() {\r\n\t\t\t $('.js-egg li').removeClass('hover');\r\n\t\t\t }, 300),\r\n\t\t\t $(this).addClass('hover1');\r\n\t\t\t}, function() {\r\n\t\t\t $(this).removeClass('hover1');\r\n\t\t\t});\r\n\t\t\t// 帮忙扩散按钮\r\n\t\t\t$.role('show-share').on('click', function() {\r\n\t\t\t\t$.role('share-container').show();\r\n\t\t\t});\r\n\t\t},\r\n\t\tgrabResult: function(status, data) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar template = _hao.util.isPC ? self.template : self.mTemplate;\r\n\t\t\t$.role('egg-container').empty().append(Mustache.render(template[status], data || {}));\r\n\t\t},\r\n\t\tbreakEgg: function(order, callback) {\r\n\t\t\tvar $targetEgg = $('.js-egg li').eq(order - 1);\r\n\t\t\t$targetEgg.addClass('click');\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\t$targetEgg.removeClass('click').addClass('item-broken');\r\n\t\t\t\ttypeof callback == 'function' && callback();\r\n\t\t\t}, 800);\r\n\t\t}\r\n\t});\r\n\r\n\t_hao.EggSender.defaultOptions = {};\r\n})(jQuery, hao);\r\n","(function ($, _hao) {\r\n\t_hao.Sender.extend('LotterySender', {\r\n\t\tinit: function (options) {\r\n\t\t\tthis.base(options);\r\n\t\t},\r\n\t\t// 重写父类方法\r\n\t\tstart: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tself.checkHao().then(function(result) {\r\n\t\t\t\t// 如果没通过公共校验部分,或者已经判定通过,则无需继续进行个性判断\r\n\t\t\t\tif (!result) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tif (result.status == '45') {// 已经参与过\r\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.ACT_ALREADY, _hao.ENUM_MSG.ACT_SUCCESS_SUB, _hao.ENUM_MSG.ACT_ALREADY_TITLE);\r\n\t\t\t\t} else {// 其他错误\r\n\t\t\t\t\tresult.title = '抽奖失败';\r\n\t\t\t\t\tself.grabFail(result);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 重写父类方法\r\n\t\tsubmit: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 调用父类base方法\r\n\t\t\tself.base()\r\n\t\t\t// 自己处理返回结果\r\n\t\t\t.then(function(result) {\r\n\t\t\t\tif (!result) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tif (result.status == '1') {// 成功\r\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.ACT_SUCCESS, _hao.ENUM_MSG.ACT_SUCCESS_SUB, _hao.ENUM_MSG.ACT_SUCCESS_TITLE);\r\n\t\t\t\t}else if(result.status == '39') {// 已经参与\r\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.ACT_ALREADY, _hao.ENUM_MSG.ACT_SUCCESS_SUB, _hao.ENUM_MSG.ACT_ALREADY_TITLE);\r\n\t\t\t\t} else {// 其他错误\r\n\t\t\t\t\tresult.title = '抽奖失败';\r\n\t\t\t\t\tself.grabFail(result);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\t_hao.LotterySender.defaultOptions = {};\r\n})(jQuery, hao);","(function ($, _hao) {\r\n\t_hao.Sender.extend('UnloginLotterySender', {\r\n\t\tinit: function (options) {\r\n\t\t\tthis.base(options);\r\n\t\t},\r\n\t\t// 重写父类方法\r\n\t\tstart: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tself.checkHao().then(function(result) {\r\n\t\t\t\t// 如果没通过公共校验部分,或者已经判定通过,则无需继续进行个性判断\r\n\t\t\t\tif (!result) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tif (result.status == '45') {// 已经参与过\r\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.ACT_ALREADY, _hao.ENUM_MSG.UNLOGIN_LOTTERY_SUCCESS_SUB, _hao.ENUM_MSG.ACT_ALREADY_TITLE);\r\n\t\t\t\t} else {// 其他错误\r\n\t\t\t\t\tresult.title = '抽奖失败';\r\n\t\t\t\t\tself.grabFail(result);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 重写父类方法\r\n\t\tsubmit: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 调用父类base方法\r\n\t\t\tself.base()\r\n\t\t\t// 自己处理返回结果\r\n\t\t\t.then(function(result) {\r\n\t\t\t\tif (!result) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tif (result.status == '1') {// 成功\r\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.ACT_SUCCESS, _hao.ENUM_MSG.UNLOGIN_LOTTERY_SUCCESS_SUB, _hao.ENUM_MSG.ACT_SUCCESS_TITLE);\r\n\t\t\t\t}else if(result.status == '39') {// 已经参与\r\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.ACT_ALREADY, _hao.ENUM_MSG.UNLOGIN_LOTTERY_SUCCESS_SUB, _hao.ENUM_MSG.ACT_ALREADY_TITLE);\r\n\t\t\t\t} else {// 其他错误\r\n\t\t\t\t\tresult.title = '抽奖失败';\r\n\t\t\t\t\tself.grabFail(result);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\t_hao.UnloginLotterySender.defaultOptions = {};\r\n})(jQuery, hao);","(function ($, _hao) {\n\t_hao.Sender.extend('YaoSender', {\n\t\t// 当前摇号期次的结束时间\n\t\tendTime: 0,\n\t\tinit: function (options) {\n\t\t\tthis.base(options);\n\t\t},\n\t\t// 重写父类方法\n\t\tstart: function() {\n\t\t\tvar self = this;\n\t\t\tself.checkHao().then(function(result) {\n\t\t\t\t// 如果没通过公共校验部分,或者已经判定通过,则无需继续进行个性判断\n\t\t\t\tif (!result) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (!result.data && !result.status == '50') {// 没有返回yaohao对象且不是游鲤下载\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.OPER_EXC);\n\t\t\t\t} else if (result.status == '35') {// 已经参与过\n\t\t\t\t\tself.endTime = result.data.yaohao.periodInfo.end_time;\n\t\t\t\t\tself.yaoResult(self.endTime, result.data.yaohao.is_takepart);\n\t\t\t\t} else {// 其他错误\n\t\t\t\t\tresult.title = '参与摇号失败';\n\t\t\t\t\tself.grabFail(result);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\t// 重写父类方法\n\t\tsubmit: function() {\n\t\t\tvar self = this;\n\t\t\t// 调用父类base方法\n\t\t\tself.base()\n\t\t\t// 自己处理返回结果\n\t\t\t.then(function(result) {\n\t\t\t\tif (!result) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (result.status == '1' || result.status == '36' || result.status == '37') {// 成功\n\t\t\t\t\tself.yaoResult(self.endTime, '0');\n\t\t\t\t} else if (result.status == '33') {// 准备中\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.YAO_NOT_PREPARE, null, _hao.ENUM_MSG.YAO_FAIL);\n\t\t\t\t} else if (result.status == '34') {// 未开始\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.YAO_NOT_OPEN, null, _hao.ENUM_MSG.YAO_FAIL);\n\t\t\t\t} else if (result.status == '35') {// 已参与\n\t\t\t\t\tself.yaoResult(result.yaohao.periodInfo.endTime, '1');\n\t\t\t\t} else if (result.status == '36') {// 成功,明天可以再次\n\t\t\t\t\t// 你的明天不会到来\n\t\t\t\t\tself.yaoResult(9999999999999, '0');\n\t\t\t\t} else if (result.status == '37') {// 成功,等待开奖\n\t\t\t\t\tself.yaoResult(0, '0');\n\t\t\t\t} else {// 其他错误\n\t\t\t\t\tresult.title = '参与摇号失败';\n\t\t\t\t\tself.grabFail(result);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tyaoResult: function(endTime, isTakpartIn) {\n\t\t\tvar self = this;\n\t\t\tvar today = new Date(),\n\t\t\ttodayLast = new Date(today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate() + ' 23:59:59');\n\t\t\tvar msg = _hao.ENUM_MSG.YAO_FAIL_TODAY;\n\t\t\tif (todayLast >= endTime*1000) {// 本期今天之内结束\n\t\t\t\tmsg = isTakpartIn=='1'?_hao.ENUM_MSG.YAO_FAIL_TODAY: _hao.ENUM_MSG.YAO_SUCCESS_TODAY;\n\t\t\t} else {// 本期今天之后结束\n\t\t\t\tmsg = isTakpartIn=='1'?_hao.ENUM_MSG.YAO_FAIL_TOMORROW: _hao.ENUM_MSG.YAO_SUCCESS_TOMORROW;\n\t\t\t}\n\t\t\t_hao.msg(msg, _hao.ENUM_MSG.YAO_SUCCESS_SUB, (!!isTakpartIn=='1'?_hao.ENUM_MSG.YAO_SUCCESS:_hao.ENUM_MSG.YAO_FAIL));\n\t\t}\n\t});\n\n\t_hao.YaoSender.defaultOptions = {\n\t};\n})(jQuery, hao);","(function ($, _hao) {\r\n\t_hao.UI.extend('Exchange', {\r\n\t\ttemplate: '
    恭喜您获得了 {{giftName}}
    \\\r\n\t\t\t\t\t{{#taoTime}}\\\r\n\t\t\t\t\t

    {{{title}}}

    \\\r\n\t\t\t\t\t{{/taoTime}}\\\r\n\t\t\t\t\t

    {{{subTitle}}}

    \\\r\n\t\t\t\t\t{{#account}}\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{/account}}\\\r\n\t\t\t\t\t{{#password}}\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{/password}}\\\r\n\t\t\t\t\t

    奖品说明:

    {{desc}}
    ',\r\n\t\tmTemplate: '
    恭喜您获得了 {{giftName}}
    \\\r\n\t\t\t\t\t

    {{{title}}}

    \\\r\n\t\t\t\t\t

    {{{subTitle}}}

    \\\r\n\t\t\t\t\t{{#account}}\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{/account}}\\\r\n\t\t\t\t\t{{#password}}\\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t\t
    \\\r\n\t\t\t\t\t
    \\\r\n\t\t\t\t\t{{/password}}\\\r\n\t\t\t\t\t
    奖品说明:{{desc}}
    ',\r\n\t\t// 初始化方法\r\n\t\tinit: function (element, options) {\r\n\t\t\tvar self = this;\r\n\t\t\toptions = $.extend(options, _hao.Exchange.defaultOptions);\r\n\t\t\t// 调用父类初始化方法\r\n\t\t\tself.base(element, options);\r\n\t\t\t// 提交数据\r\n\t\t\tself.postData = {};\r\n\t\t\t// 创建兑换流程\r\n\t\t\tself.processer = new _hao.Processer();\r\n\t\t\t// 初始化验证码\r\n\t\t\tself.initCaptcha();\r\n\t\t\t// 增加验证码流程设置项\r\n\t\t\tself.processer.addStep(function() {\r\n\t\t\t\tself.captcha.trigger();\r\n\t\t\t});\r\n\t\t\t// 增加提交兑换流程设置项\r\n\t\t\tself.processer.addStep(function() {\r\n\t\t\t\tself.submit();\r\n\t\t\t});\r\n\t\t\t// 绑定事件\r\n\t\t\tself.bindEvents();\r\n\t\t\t// 加载样式\r\n\t\t\tself.loadCss();\r\n\t\t},\r\n\t\t// 兑换入口\r\n\t\tstart: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 重置提交数据\r\n\t\t\tself.postData = {};\r\n\r\n\t\t\t// 校验输入的兑换码是否合法\r\n\t\t\tvar exchangeCode = $.trim($('#exchangeCode').val()),\r\n\t\t\t\texchangeCodePatt = /^[a-zA-Z0-9]+$/;\r\n\t\t\tif (exchangeCode === '') {\r\n\t\t\t\tself.exchangeFail('empty');\r\n\t\t\t\treturn false;\r\n\t\t\t} else if(!exchangeCodePatt.test(exchangeCode)) {\r\n\t\t\t\tself.exchangeFail('130');\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tself.postData.exchangeCode = exchangeCode;\r\n\r\n\t\t\t// 验证登录\r\n\t\t\t_hao.user.checkLogin(function() {\r\n\t\t\t\t// 启动流程\r\n\t\t\t\tself.processer.start();\r\n\t\t\t},\r\n\t\t\t_hao.user.login);\r\n\t\t},\r\n\t\t// 绑定事件\r\n\t\tbindEvents: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t// 绑定页面data-ui-role=\"exchange\"元素,点击以后发起兑换流程\r\n\t\t\t$.role('exchange').on('click', function() {\r\n\t\t\t\tself.start();\r\n\t\t\t});\r\n\t\t\t// 显示兑换结果内容\r\n\t\t\t$('body').on('click','[data-ui-role=viewCard]', function() {\r\n\t\t\t\tvar exchangeCode = $.trim($(this).uiData('cardid'));\r\n\t\t\t\tself.getGift(exchangeCode);\r\n\t\t\t});\r\n\t\t\t// 修改联系方式\r\n\t\t\t$.role('updateUserInfo').on('click', function() {\r\n\t\t\t\tvar exchangeCode = $.trim($(this).uiData('cardid'));\r\n\t\t\t\tself.submitUserInfo(exchangeCode, function() {\r\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.SAVE_USER_INFO_SUCCESS, null, '修改联系方式');\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\t// 提交联系方式\r\n\t\t\t$.role('saveUserInfo').on('click', function() {\r\n\t\t\t\tvar $this = $(this);\r\n\t\t\t\tvar exchangeCode = $.trim($(this).uiData('cardid'));\r\n\t\t\t\tself.submitUserInfo(exchangeCode, function() {\r\n\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.SAVE_USER_INFO_SUCCESS, null, '提交联系方式');\r\n\t\t\t\t\t$this.prevAll('span').remove();\r\n\t\t\t\t\t$this.parent().prepend('查看');\r\n\t\t\t\t\t$this.text('修改联系方式');\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 提交用户信息按钮点击事件\r\n\t\tsubmitUserInfo: function(exchangeCode, callback) {\r\n\t\t\tvar self = this;\r\n\t\t\t_hao.user.checkLogin(function() {\r\n\t\t\t\t// 获取兑换码已经存入的用户信息\r\n\t\t\t\t$.getJSON(_hao.ENUM_PROXY.EXCHANGE_USER_INFO, {exchangeCode: exchangeCode})\r\n\t\t\t\t.done(function(result) {\r\n\t\t\t\t\tif (result.flag == 1) {\r\n\t\t\t\t\t\tvar options = {exchangeCode: exchangeCode};\r\n\t\t\t\t\t\toptions.fields = result.data;\r\n\t\t\t\t\t\toptions.callback = callback;\r\n\t\t\t\t\t\toptions.title = '请提交个人联系方式';\r\n\t\t\t\t\t\tself.initUserForm(options);\r\n\t\t\t\t\t\tself.userForm.trigger();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t_hao.msg(_hao.ENUM_MSG.OPER_EXC, result.msg);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}, function() {\r\n\t\t\t\t_hao.user.login();\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 初始化验证码\r\n\t\tinitCaptcha: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tif (!!self.captcha) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tvar options = {\r\n\t\t\t\t// captchaType: _hao.ENUM_VAR.GEETEST_CAPTCHA_TYPE\r\n\t\t\t\tcaptchaType: _hao.ENUM_VAR.TENCENT_CAPTCHA_TYPE\r\n\t\t\t};\r\n\t\t\t// 验证码前端校验通过后执行的回调\r\n\t\t\toptions.successHandler = function(captchaData) {\r\n\t\t\t\t// 保存验证码输入\r\n\t\t\t\tself.postData = $.extend(self.postData, captchaData);\r\n\t\t\t\t// 下一个流程环节\r\n\t\t\t\tself.processer.next();\r\n\t\t\t};\r\n\t\t\t// 根据配置返回验证码实例\r\n\t\t\tself.captcha = _hao.captchaFactory.create(options);\r\n\t\t},\r\n\t\t// 初始化用户信息表单\r\n\t\tinitUserForm: function(options) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar options = options || {};\r\n\t\t\toptions.submitUrl = _hao.ENUM_PROXY.EXCHANGE_SAVE_USER_INFO;\r\n\t\t\toptions.postData = {exchangeCode: options.exchangeCode};\r\n\t\t\toptions.title = options.title || '兑换成功!请先提交个人联系方式';\r\n\t\t\toptions.subMsg = '';\r\n\t\t\toptions.submitHandler = function(result) {\r\n\t\t\t\tif (result.flag == 1) {// 提交成功\r\n\t \tthis.close();\r\n\t \t!!options.callback && typeof options.callback == 'function' && options.callback();\r\n\t } else {// 提交失败\r\n\t this.showError(this.dialog.element.role('field').filter(':last'), result.msg);\r\n\t }\r\n\t\t\t};\r\n\t\t\t// 创建问卷实例\r\n\t\t\tself.userForm = new _hao.UserForm(options);\r\n\t\t},\r\n\t\t// 提交兑换\r\n\t\tsubmit: function() {\r\n\t\t\tvar self = this;\r\n\t\t\t$.ajax({\r\n\t\t\t\ttype: 'post',\r\n\t\t\t\turl: _hao.ENUM_PROXY.EXCHANGE_GIFT,\r\n\t\t\t\tcache: false,\r\n\t\t\t\tdata: self.postData,\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t})\r\n\t\t\t.done(function(result) {\r\n\t\t\t\tif (result.flag == '1') {\r\n\t\t\t\t\t// 如果需要填写用户信息\r\n\t\t\t\t\tif (result.data.length > 0) {\r\n\t\t\t\t\t\tvar fields = {};\r\n\t\t\t\t\t\t$.each(result.data, function(index, item) {\r\n\t\t\t\t\t\t\tfields[item] = '';\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t// 初始化用户信息表单\r\n\t\t\t\t\t\tself.initUserForm({fields: fields, exchangeCode: self.postData.exchangeCode, callback: function() {\r\n\t\t\t\t\t\t\t// 用户信息录入后,弹出礼包兑换结果\r\n\t\t\t\t\t\t\tself.getGift(self.postData.exchangeCode);\r\n\t\t\t\t\t\t}});\r\n\t\t\t\t\t\t// 弹出用户信息表单\r\n\t\t\t\t\t\tself.userForm.trigger();\r\n\t\t\t\t\t} else {// 否则直接获取奖品信息(兑换流程已经在此接口中完成)\r\n\t\t\t\t\t\tself.getGift(self.postData.exchangeCode);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// 重置验证码,可以继续兑换\r\n\t\t\t\t\tself.captcha.refresh();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tself.exchangeFail(result.flag);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 获取兑换奖品\r\n\t\tgetGift: function(exchangeCode) {\r\n\t\t\tvar self = this;\r\n\t\t\t$.ajax({\r\n\t url: _hao.ENUM_PROXY.EXCHANGE_GIFT_INFO,\r\n\t type: 'POST',\r\n\t dataType: 'json',\r\n\t data: {exchangeCode: exchangeCode},\r\n\t\t\t})\r\n\t\t\t.done(function(result) {\r\n\t\t\t\tif (result.flag == '1') {// 获取奖品成功\r\n\t\t\t\t\tself.exchangeSuccess(result);\r\n\t } else {\r\n\t _hao.msg(data.msg, null, '兑换失败');\r\n\t }\r\n\t\t\t});\r\n\t\t},\r\n\t\t// 兑换成功\r\n\t\texchangeSuccess: function(result) {\r\n\t\t\t\r\n\t\t\tvar self = this;\r\n\r\n\t\t\t// 淘号时间\r\n\t\t\tresult.data.taoTime = result.data.taoTime || 0;\r\n\t\t\tvar taoTime = parseFloat(result.data.taoTime, 10);\r\n\t\t\tvar hour = parseInt(taoTime, 10),\r\n\t\t\tminute = Math.floor((taoTime % 1) * 60),\r\n\t\t\ttimeStr = (hour == 0 ? '': hour + '小时') + (minute == 0 ? '': minute + '分钟');\r\n\r\n\t\t\t// 创建弹窗\r\n\t \tvar dialogOption = {\r\n\t \t\ttitle: '兑换成功',\r\n\t \t\tcontent: '',\r\n\t \t\tbuttons: [],\r\n\t \t\tshare: false,\r\n\t \t\tonClose: function() {\r\n\t \t\t\tthis.destroy();\r\n\t \t\t}\r\n\t \t};\r\n\r\n // 奖品说明\r\n if (!!result.data.giftDescrib) {\r\n \tcontentHTML += '

    奖品说明:

    ' + result.data.giftDescrib + '
    ';\r\n }\r\n\t\t\t// 弹窗主体结构\r\n\t \tvar contentHTML = Mustache.render(_hao.util.isPC?self.template: self.mTemplate, {\r\n\t\t\t\tgiftName: result.data.giftName,\r\n\t\t\t\ttitle: _hao.htmlMaker(hao.ENUM_MSG.EXCHANGE_SUCCESS_SUB, {time: timeStr}),\r\n\t\t\t\tsubTitle: _hao.ENUM_MSG.EXCHANGE_SUCCESS_SUB2,\r\n\t\t\t\taccount: result.data.account,\r\n\t\t\t\tpassword: result.data.pwd,\r\n\t\t\t\tdesc: result.data.giftDescrib\r\n\t\t\t});\r\n\t\t\tdialogOption.content = contentHTML;\r\n\t\t\tif (!!self.successDialog) {\r\n\t\t\t\tself.successDialog.destroy();\r\n\t\t\t}\r\n\t\t\tself.successDialog = new _hao.Dialog(dialogOption);\r\n\t\t\tvar $dialog = self.successDialog.element;\r\n\t\t\t// 复制功能\r\n\t\t\t_hao.clipBoard(self.successDialog.element, 'copy', 'data-clipboard-text');\r\n\t\t\tself.successDialog.open();\r\n\t\t},\r\n\t\t// 兑换失败\r\n\t\texchangeFail: function(failStatus) {\r\n\t\t\tvar msg = '',\r\n\t\t\tsubMsg = '',\r\n\t\t\ttitle = '兑换失败';\r\n\t\t\tswitch('' + failStatus) {\r\n\t\t\t\tcase 'empty':\r\n\t\t\t\t\tmsg = _hao.ENUM_MSG.EXCHANGE_CODE_EMPTY;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t// 未登录\r\n\t\t\t\tcase '23':\r\n\t\t\t\t\tmsg = _hao.ENUM_MSG.NOT_LOGIN_YET;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t// 验证码错误\r\n\t\t\t\tcase '22':\r\n\t\t\t\t\tmsg = _hao.ENUM_MSG.CAPTCHA_ERROR;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t// 兑换码不存在\r\n\t\t\t\tcase '130':\r\n\t\t\t\t\tmsg = _hao.ENUM_MSG.EXCHANGE_CODE_INVALID;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t// 兑换码已经使用\r\n\t\t\t\tcase '131':\r\n\t\t\t\t\tmsg = _hao.ENUM_MSG.EXCHANGE_CODE_USED;\r\n\t\t\t\t\tsubMsg = _hao.ENUM_MSG.EXCHANGE_CODE_USED_SUB;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t// 兑换码过期\r\n\t\t\t\tcase '132':\r\n\t\t\t\t\tmsg = _hao.ENUM_MSG.EXCHANGE_CODE_EXPIRED;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t// 超过兑换限制\r\n\t\t\t\tcase '133':\r\n\t\t\t\t\tmsg = _hao.ENUM_MSG.EXCHANGE_LIMIT;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tmsg = _hao.ENUM_MSG.OPER_EXC;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t_hao.msg(msg, subMsg, title);\r\n\t\t},\r\n\t\tloadCss: function() {\r\n\t\t\t// 极验验证码悬浮弹窗背景层z-index调整\r\n\t\t\t_hao.util.loadCss('.gt_holder.popup .gt_mask{ z-index: 700;}');\r\n\t\t}\r\n\t});\r\n\r\n\t_hao.Exchange.defaultOptions = {\r\n\t};\r\n})(jQuery, hao);","/**\r\n * 统计组件\r\n */\r\n(function ($, _hao) {\r\n _hao.UI.extend('TrackEvents', {\r\n loading: false,\r\n init: function(options) {\r\n options = $.extend({}, _hao.TrackEvents.defaultOptions, options);\r\n this.base(options);\r\n this.bindEvents();\r\n },\r\n // 绑定点击加载事件\r\n bindEvents: function() {\r\n if (window.App && window.App.isInApp) {\r\n var self = this;\r\n // 首页统计\r\n $('.js-search .bt-search').on('click', function() {\r\n TDAPP.onEvent('2级端游礼包首页搜索按钮','',{'关键词': $.trim($.role('keyword').val())});\r\n });\r\n $('.js-search .search-link a').on('click', function() {\r\n TDAPP.onEvent('2级端游礼包首页搜索热词','',{'关键词': $.trim($(this).text())});\r\n });\r\n $('.channel-nav li:eq(0)').on('click', function() {\r\n TDAPP.onEvent('2级端游礼包首页端游按钮');\r\n });\r\n $('.channel-nav li:eq(1)').on('click', function() {\r\n TDAPP.onEvent('2级端游礼包首页手游按钮');\r\n });\r\n $('.channel-nav li:eq(2)').on('click', function() {\r\n TDAPP.onEvent('2级端游礼包首页页游按钮');\r\n });\r\n $('.channel-nav li:eq(3)').on('click', function() {\r\n TDAPP.onEvent('2级端游礼包首页账号箱按钮');\r\n });\r\n $('.js-index-pc-list a').on('click', function() {\r\n TDAPP.onEvent('2级端游礼包首页端游列表点击');\r\n });\r\n $('.js-index-shouyou-list a').on('click', function() {\r\n TDAPP.onEvent('2级端游礼包首页手游列表点击');\r\n });\r\n $('.js-index-yeyou-list a').on('click', function() {\r\n TDAPP.onEvent('2级端游礼包首页页游列表点击');\r\n });\r\n //礼包列表页列表点击统计\r\n $('.js-gift-list a').on('click', function() {\r\n TDAPP.onEvent(haoConfig.trackId);\r\n });\r\n //礼包详情页\r\n $('.js-track-qiang').on('click', function() {\r\n TDAPP.onEvent('端游礼包详情页抢号按钮');\r\n });\r\n $('.js-track-join').on('click', function() {\r\n TDAPP.onEvent('端游礼包详情页参与活动按钮');\r\n });\r\n $('.js-track-tao').on('click', function() {\r\n TDAPP.onEvent('端游礼包详情页淘号按钮');\r\n });\r\n $('.js-track-relate-list a').on('click', function() {\r\n TDAPP.onEvent('端游礼包详情页相关礼包列表点击');\r\n });\r\n $('.js-track-game-info').on('click', function() {\r\n TDAPP.onEvent('端游礼包详情页游戏信息');\r\n });\r\n $('.js-track-game-info').on('click', function() {\r\n TDAPP.onEvent('端游礼包详情页游戏信息');\r\n });\r\n $.role('supply').on('click', function() {\r\n TDAPP.onEvent('端游礼包详情页求补号按钮');\r\n });\r\n $('.mod-share .gb-share-btn').on('click', function() {\r\n TDAPP.onEvent('端游礼包详情页分享按钮');\r\n });\r\n $('.mod-share .gb-share-btn').on('click', function() {\r\n TDAPP.onEvent('端游礼包详情页分享按钮');\r\n });\r\n $('.js-subscribe').on('click', function() {\r\n TDAPP.onEvent('端游礼包详情页预订按钮');\r\n });\r\n $('.pn-zxzy a.art-item').on('click', function() {\r\n TDAPP.onEvent('端游礼包详情页最新资讯点击');\r\n });\r\n // 搜索结果页\r\n $('.pn-zxzy a.art-item').on('click', function() {\r\n TDAPP.onEvent('端游礼包详情页最新资讯点击');\r\n });\r\n $('.js-track-search-list a').on('click', function() {\r\n TDAPP.onEvent('端游礼包搜索结果页列表点击');\r\n });\r\n }\r\n }\r\n });\r\n _hao.TrackEvents.defaultOptions = {\r\n };\r\n})(jQuery, hao);"],"sourceRoot":""}