!function(a,b,c){var d=new b.Class(b.Widget);d.include({version:"1.2.2",apiCfg:{urlTypes:"//ptres.37.com/game_server/config/{game_id}.js?encache="+Math.ceil((new Date).getTime()/1e3/60),cbTypes:"callback_g_s_type_cfg_{game_id}",urlTypeList:"//ptres.37.com/game_server/data/{game_id}/type/{s_type}_{page}.js?encache="+Math.ceil((new Date).getTime()/1e3/60),cbTypeList:"callback_g_s_{game_id}_type_{s_type}_{page}",urlNameList:"//ptres.37.com/game_server/data/{game_id}/name/{s_name_id}_{page}.js?encache="+Math.ceil((new Date).getTime()/1e3/60),cbNameList:"callback_g_s_{game_id}_name_{s_name_id}_{page}",urlRegionList:"//ptres.37.com/game_server/data/{game_id}/region/{id}_{page}.js?encache="+Math.ceil((new Date).getTime()/1e3/60),cbRegionList:"callback_g_s_{game_id}_region_{id}_{page}",urlMapping:"//ptres.37.com/game_server/mapping/{game_id}/ssid/{s_name_id}.js?encache="+Math.ceil((new Date).getTime()/1e3/60),cbMapping:"callback_g_s_mapping_{game_id}_ssid_{s_name_id}",urlServer:"//game.37.com/api/p_games.php?action=p_gamebox_servername&game_id={game_id}&sid={sid}"},phpApiCfg:{urlTypes:"//pay.37.com/controller/game_v2.php?action=server_config&game_id={game_id}",urlTypeList:"//pay.37.com/controller/game_v2.php?action=server_by_type&game_id={game_id}&type_id={type_id}&page={page}",urlNameList:"//pay.37.com/controller/game_v2.php?action=server_by_sname&game_id={game_id}&sname_id={s_name_id}&page={page}",urlRegionList:"//pay.37.com/controller/game_v2.php?action=server_by_region&game_id={game_id}&region={id}&page={page}",urlMapping:"//pay.37.com/controller/game_v2.php?action=search_server&game_id={game_id}&sname_id={s_name_id}"},game_id:0,gameConfig:null,specialData:null,hideTypes:[],clientTypeNames:{},clientPageSize:200,mapSID:{},dataSID:{},init:function(a,b){var c=window.location.host;this.game_id=a,"pay.37.com"===c?this.apiType=b&&2==b?2:1:this.apiType=1},_callApi:function(){var b=arguments,c="",d="",e=!0,f={};return 1===arguments.length&&a.isPlainObject(b[0])?(c=b[0].url,d=b[0].cb,b[0].hasOwnProperty("async")&&(e=b[0].async)):(c=b[0],d=b[1],"boolean"==typeof b[2]&&(e=b[2])),2===this.apiType&&-1==c.indexOf("p_gamebox_servername")?f={url:c,type:"GET",dataType:"json",async:e,cache:!1,timeout:1e4}:(f={url:c,type:"GET",dataType:"jsonp",async:e,jsonpCallback:d,timeout:1e4},c.indexOf("encache")>0&&(f.cache=!0)),d||delete f.jsonpCallback,a.ajax(f)},_getCfgUrl:function(){return 1===this.apiType?{url:this.apiCfg.urlTypes.replace("{game_id}",this.game_id),cb:this.apiCfg.cbTypes.replace("{game_id}",this.game_id)}:{url:this.phpApiCfg.urlTypes.replace("{game_id}",this.game_id)}},_getTypeUrl:function(a,b){return 1===this.apiType?{url:this.apiCfg.urlTypeList.replace("{game_id}",this.game_id).replace("{s_type}",a).replace("{page}",b),cb:this.apiCfg.cbTypeList.replace("{game_id}",this.game_id).replace("{s_type}",a).replace("{page}",b)}:{url:this.phpApiCfg.urlTypeList.replace("{game_id}",this.game_id).replace("{s_type}",a).replace("{page}",b)}},_getNameUrl:function(a,b){return 1===this.apiType?{url:this.apiCfg.urlNameList.replace("{game_id}",this.game_id).replace("{s_name_id}",a).replace("{page}",b),cb:this.apiCfg.cbNameList.replace("{game_id}",this.game_id).replace("{s_name_id}",a).replace("{page}",b)}:{url:this.phpApiCfg.urlNameList.replace("{game_id}",this.game_id).replace("{s_name_id}",a).replace("{page}",b)}},_getRegionUrl:function(a,b){return 1===this.apiType?{url:this.apiCfg.urlRegionList.replace("{game_id}",this.game_id).replace("{id}",a).replace("{page}",b),cb:this.apiCfg.cbRegionList.replace("{game_id}",this.game_id).replace("{id}",a).replace("{page}",b)}:{url:this.phpApiCfg.urlRegionList.replace("{game_id}",this.game_id).replace("{id}",a).replace("{page}",b)}},_getMappingUrl:function(a){return 1===this.apiType?{url:this.apiCfg.urlMapping.replace("{game_id}",this.game_id).replace("{s_name_id}",a),cb:this.apiCfg.cbMapping.replace("{game_id}",this.game_id).replace("{s_name_id}",a)}:{url:this.phpApiCfg.urlMapping.replace("{game_id}",this.game_id).replace("{s_name_id}",a)}},_getServerUrl:function(a){return this.apiCfg.urlServer.replace("{game_id}",this.game_id).replace("{sid}",a)},filterConfig:function(b){var c=this;b=this._gameConfig,c.gameConfig=[],a.each(b,function(b,d){var e={};return a.extend(!0,e,d),delete e.children,e.children=c.filterNames(d.children),a.isEmptyObject(e)||c.needHide(e.s_type)||0===e.total_record?!0:(e.s_type_name=c.getClientTypeName(e),void c.gameConfig.push(e))})},filterNames:function(b){var c=this,d=[];return a.each(b,function(b,e){var f={};return a.extend(!0,f,e),a.isArray(e.children)&&e.children.length>0&&(f.children=c.filterNames(e.children)),0===f.total_record?!0:void d.push(f)}),d},loadConfig:function(){var b=this,c=b._getCfgUrl(),d=a.Deferred();return this._callApi(c.url,c.cb).done(function(c){2===b.apiType&&(c=c.data),b._gameConfig=c.server_types,b.specialData=c.special_servers,a.each(b.specialData.newest_servers,function(a,b){b.s_name_encode=encodeURIComponent(b.s_name)}),b.filterConfig(),b.trigger("cfgloaded",c),d.resolve(c)}).fail(function(a,c,e){b.trigger("cfgloaderr",a,c,e),d.reject(a,c,e)}).always(function(){}),d},arrST:[],getTypes:function(){var b=this;return b.arrST.length>0?b.arrST:(b.arrST.splice(0),a.each(b.gameConfig,function(c,d){var e={};a.extend(!0,e,d),delete e.special_servers,delete e.children,b.arrST.push(e)}),b.arrST)},needHide:function(a){var b=!1;for(var c in this.hideTypes)if(this.hideTypes[c]===a){b=!0;break}return b},getClientTypeName:function(b){var c=this.clientTypeNames;return a.isEmptyObject(b)?"":(1===b.s_type&&"children"in b&&b.children.length>0&&(b.s_type_name="s_name"in b.children[0]?b.children[0].s_name:b.s_type_name),a.isEmptyObject(c)?b.s_type_name:b.s_type in c?c[b.s_type]:b.s_type_name)},getType:function(b){var c=this,d=null;return b?(a.each(c.gameConfig,function(a,c){return c.s_type===b?(d=c,!1):void 0}),d):null},getDefaultType:function(){var a=this.getTypes();return a.length>0?a[0]:null},getDefaultName:function(b){var c=this.getNames(b);return a.isArray(c)?c[0]:null},getDefaultSID:function(a){var b=this.getConfigNode(a);return b.special_servers&&"newest_servers"in b.special_servers?b.special_servers.newest_servers[0]:null},_convert2Arr:function(a){var b=[];if(!a)return b;for(var c in a)b.push(a[c]);return b},getNames:function(b){var c=this.getConfigNode(b);return a.isEmptyObject(c)?[]:c.children},getName:function(b,c){var d=this,e=null,f=null;return b?(e=d.getType(b),a.isEmptyObject(e)?null:(a.each(e.children,function(a,b){return b.s_name_id===c?(f=b,!1):void 0}),f)):null},getNameById:function(b){var c=null;return a.each(this.gameConfig,function(d,e){return a.isArray(e.children)?void a.each(e.children,function(a,d){return d.s_name_id===b?(c=d,!1):void 0}):!0}),c},tmpNames:[],getAllNames:function(b){var c=this,d=this.getConfigNode(b),e=this._convert2Arr(d.children),f=[],g=[];return a.each(e,function(a,b){f=f.concat(c._convert2Arr(this.children)),delete this.chilcren}),a.each(e.concat(f),function(a,b){b.total_record>0&&g.push(b)}),g},getRegion:function(b,c){b=b||4;var d=this.getType(b),e=null;return a.each(d.region,function(a,b){return b.id==c?(e=b,!1):void 0}),e},getConfigNode:function(a,b,c){return 4==a&&c?this.getRegion(a,b):a&&!b?this.getType(a):!a&&b?this.getNameById(b):this.getName(a,b)},_getPagingData:function(b,c,d){var e=this.getConfigNode(b,c,d);return a.isEmptyObject(e)?{}:e},getPaging:function(b,c){var d=this._getPagingData(b,c),e=0,f=null;if(d.page_total>1)e=d.page_size,f=this._getPageInfo(d.page_total,d.page_size);else{e=this.clientPageSize;var g=Math.ceil(d.total_record/e);f=this._getPageInfo(g,e)}return a.each(f,function(a,d){d.s_type=b,d.s_name_id=c,d.page_size=e}),f},_getPageInfo:function(a,b){a=parseInt(a,10),b=parseInt(b,10);for(var c=[],d=0,e=0,f=1,g=a+1;g>f;f++)e=f*b,d=e-b+1,c.push({page:f,text:d.toString()+"-"+e.toString()});return c.reverse()},getGameNewest:function(){return this.specialData.newest_servers},getTypeNewest:function(a){var b=this.getConfigNode(a);return b.special_servers.newest_servers},listData:{s_type:{},s_name:{},region:{}},pushListData:function(b,c,d,e){var f=this.listData;d=d||1,a.isArray(e)&&0!==e.length&&b in f&&c&&(c in f[b]||(f[b][c]={}),a.each(e,function(a,b){b.s_name_encode=encodeURIComponent(b.s_name)}),this.listData[b][c][d]=e)},getList:function(a,b,c,d){var e="region"===d?"region":b?"s_name":"s_type",f=b?b:a,g=null;return c=c||1,f in this.listData[e]&&(g=this.listData[e][f][c]),g},getClientPageServers:function(b,c,d,e){var f=this,g=f.getConfigNode(b,c,e);if(pageCount=Math.ceil(g.total_record/f.clientPageSize),list=null,end=0,start=0,d=d||pageCount,list=f.getList(b,c),4!=b||a.isArray(list)&&0!==list.length||(list=f.getList(b,c,1,"region")),!a.isArray(list)||0===list.length)return null;if(list.length<=f.clientPageSize&&1==d)return list;end=f.clientPageSize*d-1,start=end-f.clientPageSize+1;var h=a.extend(!0,[],list);return h.reverse().slice(start,end+1).reverse()},loadServers:function(b,c,d,e){var f=a.Deferred(),g=this,h=null,i="",j=0,k=g.getConfigNode(b,c,e),l=null;if(!(arguments.length<3)&&b){i="region"===e?"region":c?"s_name":"s_type",d=d||k.page_total,d=0===d?1:d,"region"===i?(h=g._getRegionUrl(c,d),j=c):(h="s_name"===i?g._getNameUrl(c,d):g._getTypeUrl(b,d),j="s_name"===i?c:b);try{l=this.listData[i][j][d]}catch(m){l=null}return a.isArray(l)&&l.length>0?(g.trigger("sloaded",l),f.resolve(l),f):(g.xhrl&&g.xhrl.abort(),g.xhrl=this._callApi(h.url,h.cb).done(function(a){2===g.apiType&&(a=a.data),g.xhrl=null,g.pushListData(i,j,d,a.server_list);var h=g.getList(b,c,d,e);g.trigger("sloaded",h),f.resolve(h)}).fail(function(a,b,c){g.trigger("sloaderr",a,b,c),f.reject(a,b,c)}).always(function(){}),f)}},abortXHR:function(){this.xhrl&&this.xhrl.abort()},loadServerObj:function(c,d,e,f){var g=this,h=this._getServerUrl(c),i=a.Deferred(),j={url:h};return a.isPlainObject(f)&&a.extend(j,f),this._callApi(j).done(function(b){2===g.apiType&&-1==h.indexOf("p_gamebox_servername")&&(b=b.data);var c={};c.s_name_id=b.SERVER_NAME_ID,c.s_name=b.SERVER_NAME,c.state=b.STATE,c.sid=b.SID,c.id=b.ID,c.pay_status=b.SERVER_PAY_ON,c.c_name="",c.s_name_encode=encodeURIComponent(c.s_name),a.isFunction(d)&&d(c),i.resolve(c)}).fail(function(c,d,f){a.isFunction(e)?e():b.log("获取服信息失败，此操作暂时无法完成，请联系客服"),i.reject(c,d,f)}).always(function(){}),i},loadMapping:function(b,c){var d=this,e=this._getMappingUrl(b),f=a.Deferred();return a.isPlainObject(c)&&a.extend(e,c),this._callApi(e).done(function(a){2===d.apiType&&(a=a.data),d.mapSID[b]=a,d.trigger("maploaded",a),f.resolve(a)}).fail(function(a,b,c){d.trigger("maploaderr",a,b,c),f.reject(a,b,c)}).always(function(){}),f},getServerByShowSID:function(c,d,e){var f=[],g=null,h=null;if(!b.isNumber(e)||!b.isNumber(d)&&!b.isNumber(c))return null;if(!d)return null;h=this.listData.s_name[d],a.isEmptyObject(h)&&(h=this.listData.s_type[c]);for(var i in h)f=f.concat(h[i]);return a.each(f,function(a,b){return b.show_sid===e&&b.s_name_id===d?(g=b,!1):void 0}),g},getRegions:function(b){var c=null,d=null,e=[];return b=b||4,a.isEmptyObject(this.gameConfig)?void 0:(c=this.getType(b),d=c.region,a.each(d,function(a,b){b.s_name_id=b.id,b.s_name=b.name,b.nametype="region",b.total_record>0&&e.push(b)}),e)},formatUserHistory:function(b){var c=[];return a.isArray(b)&&0!==b.length?(a.each(b,function(a,b){return 0!==b.HOTSORT||2!=b.STATE?!0:(b.s_name=b.SERVER_NAME,b.sid=b.SID,b.game_id=b.GAME_ID,b.hotsort=b.HOTSORT,b.s_name_encode=encodeURIComponent(b.s_name),delete b.SERVER_NAME,delete b.SID,delete b.GAME_ID,delete b.HOTSORT,void c.push(b))}),c):b}}),b.ServerData=d}(jQuery,SQ,window);