/* 账户中心基本框架 Passport */ (function(){ var _queue = []; var Passport = function(modules, func){ if(window == this) return new Passport(modules, func); if(modules instanceof Function){ modules.call(Passport, $); }else{ if(typeof modules == "string"){ modules = [modules]; }; _queue.push({ modules: modules, method: func }); for(var i = modules.length-1; i>=0; i--){ Passport.require(modules[i], function(module){ for(var m = _queue.length-1; m>=0; m--){ for(var n = _queue[m].modules.length-1; n>=0; n--){ if(_queue[m].modules[n] == module){ _queue[m].modules.splice(n, 1); } } if(_queue[m].modules.length==0){ _queue.splice(m, 1)[0].method.call(Passport, $); } } }); } } return this; }; Passport.version = '2.2'; Passport.baseUrl = 'http://pt.im2x.com'; Passport.userInfo = {}; Passport.isLogin = false; Passport.require = function(url, callback, options){ options = options || {}; options.async = options.async || false; var isExist = function(file, tag,attr){ var elems = document.getElementsByTagName(tag); for(var i in elems){ if(elems[i][attr] == file){ return true; } } return false; } var success = function(){ if(callback){ callback(url); } } var realUrl = url; if(realUrl.indexOf('://')<0){ realUrl = this.baseUrl + realUrl; if(realUrl.indexOf("?")>0){ realUrl+= "&v="+Passport.version }else{ realUrl+= "?v="+Passport.version } } var realfile = realUrl.split('?')[0]; var ext = realfile.substring(realfile.lastIndexOf('.') + 1).toLowerCase(); var head = document.getElementsByTagName('head')[0]; if (ext == "css") { if(!isExist(realUrl,"link","href")){ if (document.createStyleSheet) { document.createStyleSheet(realUrl); success(); }else{ var link = document.createElement('link'); link.rel = "stylesheet"; link.href = realUrl; if(link.attachEvent){ link.attachEvent('onreadystatechange', success); }else{ link.addEventListener('load', success); } head.appendChild(link); } } } else { if(!isExist(realUrl,"script","src")){ var script=document.createElement('script'); script.src = realUrl; if(script.attachEvent){ script.attachEvent('onreadystatechange', success); }else{ script.addEventListener('load', success); } head.appendChild(script); return; } } success(); }; Passport.getJsonString = function(obj){ if(window.JSON && window.JSON.stringify){ return window.JSON.stringify(obj); } var arr = []; var str = ""; if (obj instanceof Array) { for (var i = 0; i < obj.length; i++) arr.push(Passport.getJsonString(obj[i])); str = '[' + arr.join(',') + ']'; }else if (obj instanceof Date) { str = "new Date(" + obj.getTime() + ")"; }else if (obj instanceof RegExp || obj instanceof Function) { str = obj.toString(); }else if (typeof obj == "object") { for (var i in obj) { obj[i] = typeof (obj[i]) == 'string' ? '"' + obj[i] + '"' : (typeof (obj[i]) === 'object' ? Passport.getJsonString(obj[i]) : obj[i]); arr.push(i + ':' + obj[i]); } str = '{' + arr.join(',') + '}'; } return str; }; Passport.postBack = function(options){ var data = typeof (options.data) == "object" ? Passport.getJsonString(options.data) : options.data; var url = options.url; $.ajax({ type: options.type || "POST", contentType: "application/json; charset=utf-8", url: url, data: data, jsonp: "jsonpCallBack", dataType: options.dataType || "json", success: function (d) { /*if(options.dataType.toLowerCase() == "jsonp" && d && d.error){ }*/ if (options.success) options.success(d); }, error: function (errObj) { var err = {}; try { var text = options.dataType && options.dataType.toLowerCase() == "jsonp" ? $.parseJSON(errObj.responseText.replace(/(^[^\(]+\()|(\)[;\s]*$)/g,'')) : errObj.responseText var json = $.parseJSON(text); /*if (json.Code == "SYS_SYSTEM") { location.href = "/error?message=" + escape(json.Msg); return; }*/ err.code = json.Code; err.message = json.Msg; } catch (e) { err.message = "数据读取错误。"; } if ((options.error && options.error(err) === false) || (Passport.error && Passport.error(err) === false)) { return; } alert(err.message); } }) } Passport.getSwfVersion = function() { var ver = !1; return function() { if (ver === !1) { if (window.navigator.plugins && window.navigator.mimeTypes.length) { var flash = window.navigator.plugins["Shockwave Flash"]; flash && flash.description && (ver = flash.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s)+r/, ".") + ".0") } else if (window.ActiveXObject && !window.opera) for (var r = 12; r >= 2; r--) try { var i = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + r); if (i) { var s = i.GetVariable("$version"); ver = s.replace(/WIN/g, "").replace(/,/g, ".") } } catch(o) {} } return ver; } } (); Passport.require('/content/plugins.css'); /*if (typeof define === 'function') { define(function () { return Passport; }); } else { window.Passport = Passport; }*/ window.Passport = Passport; })();