var TOOLS = {
charset: 'utf-8',
getcookie: function (name) {
var cookie_start = document.cookie.indexOf(name);
var cookie_end = document.cookie.indexOf(";", cookie_start);
return cookie_start == -1 ? '' : unescape(document.cookie.substring(cookie_start + name.length + 1, (cookie_end > cookie_start ? cookie_end : document.cookie.length)));
},
isWX: function () {
return /micromessenger/.test(navigator.userAgent.toLowerCase()) || typeof WeixinJSBridge !== 'undefined' ? true : false;
},
isMQ: function () {
return mqq && mqq.device && mqq.device.isMobileQQ() ? true : false;
},
isQQBrowser: function () {
return /mqqbrowser/.test(navigator.userAgent.toLowerCase());
},
setcookie: function (cookieName, cookieValue, seconds, path, domain, secure) {
var expires = new Date();
expires.setTime(expires.getTime() + seconds);
document.cookie = escape(cookieName) + '=' + escape(cookieValue)
+ (expires ? '; expires=' + expires.toGMTString() : '')
+ (path ? '; path=' + path : '; path=/')
+ (domain ? '; domain=' + domain : '')
+ (secure ? '; secure' : '');
},
getQuery: function (key) {
var search = window.location.search;
if (search.indexOf('?') != -1) {
var params = search.substr(1).split('&');
var query = {};
var q = [];
var name = '';
for (i = 0; i < params.length; i++) {
q = params[i].split('=');
name = decodeURIComponent(q[0]);
if (name.substr(-2) == '[]') {
if (!query[name]) {
query[name] = [];
}
query[name].push(q[1]);
} else {
query[name] = q[1];
}
}
if (key) {
if (query[key]) {
return query[key];
}
return null;
} else {
return query;
}
}
},
trim: function (str) {
return str.replace(/(^\s*)|(\s*$)/g, '');
},
isObjectEmpty: function (obj) {
for (i in obj) {
return false;
}
return true;
},
strlen: function (str) {
return (/msie/.test(navigator.userAgent.toLowerCase()) && str.indexOf('\n') !== -1) ? str.replace(/\r?\n/g, '_').length : str.length;
},
mb_strlen: function (str) {
if (typeof str === 'undefined') {
return 0;
}
var len = 0;
for (var i = 0; i < str.length; i++) {
len += str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255 ? (TOOLS.charset.toLowerCase() === 'utf-8' ? 3 : 2) : 1;
}
return len;
},
mb_cutstr: function (str, maxlen, dot) {
var len = 0;
var ret = '';
var dot = !dot && dot !== '' ? '...' : dot;
maxlen = maxlen - dot.length;
for (var i = 0; i < str.length; i++) {
len += str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255 ? (TOOLS.charset.toLowerCase() === 'utf-8' ? 3 : 2) : 1;
if (len > maxlen) {
ret += dot;
break;
}
ret += str.substr(i, 1);
}
return ret;
},
strLenCalc: function (obj, showId, maxlen) {
if (typeof obj === 'undefined') {
return 0;
}
var v = obj.value, maxlen = !maxlen ? 200 : maxlen, curlen = maxlen, len = TOOLS.strlen(v);
for (var i = 0; i < v.length; i++) {
if (v.charCodeAt(i) < 0 || v.charCodeAt(i) > 127) {
curlen -= 2;
} else {
curlen -= 1;
}
}
jQuery('#' + showId).html(Math.floor(curlen / 2));
},
htmlEncode: function (text) {
return text.replace(/&/g, '&').replace(/"/g, '"').replace(//g, '>');
},
htmlDecode: function (text) {
return text.replace(/&/g, '&').replace(/"/g, '/"').replace(/</g, '<').replace(/>/g, '>');
},
dialog: function (opts) {
var opts = opts || {};
var dId = opts.id || 'tips';
var dialogId = 'fwin_dialog_' + dId;
var maskId = 'fwin_mask_' + dId;
if (!opts.content) {
document.ontouchmove = function (e) {
return true;
};
jQuery('#' + dialogId).remove();
jQuery('#' + maskId).remove();
return false;
}
var title = opts.title || '提示信息';
var content = opts.content || '';
var btnOk = opts.okValue || false;
var btnCancel = opts.cancelValue || false;
var isShowMask = opts.isMask || false;
var existDialogCount = jQuery('div[id^="fwin_dialog_"]').length || 0;
var maskZIndex = 10000 + existDialogCount * 10;
var dialogZIndex = maskZIndex + 1;
var maskStyle = 'position:absolute;top:-0px;left:-0px;width:' + jQuery(document).width() + 'px;height:' + jQuery(document).height() + 'px;background:#000;filter:alpha(opacity=60);opacity:0.5; z-index:' + maskZIndex + ';';
var isHtml = opts.isHtml || false;
var autoClose = opts.autoClose || false;
var isConfirm = opts.isConfirm || false;
var iconClass = '';
switch (opts.icon) {
case 'success':
iconClass = 'icon_success';
break;
case 'none':
iconClass = '';
break;
case 'error':
default:
iconClass = 'g-layer-tips';
break;
}
var dialogHtmlArr = [];
if (isShowMask) {
var dialogMaskHtmlArr = [];
dialogMaskHtmlArr.push('
');
dialogHtmlArr.push('
');
dialogHtmlArr.push('
' + content + '
');
dialogHtmlArr.push('
');
}
}
var dialogHtml = dialogHtmlArr.join('');
if (jQuery('#' + dialogId)[0]) {
jQuery('#' + dialogId).remove();
jQuery('#' + maskId).remove();
}
jQuery(dialogHtml).appendTo('body');
var clientWidth = jQuery(window).width();
var clientHeight = jQuery(window).height();
dialogLeft = (clientWidth - jQuery('#' + dialogId).outerWidth()) / 2;
dialogTop = (clientHeight - jQuery('#' + dialogId).height()) * 0.382;
var dialogLeft = opts.left || dialogLeft;
var dialogTop = opts.top || dialogTop;
jQuery("#" + dialogId).css({"top": dialogTop + "px", "left": dialogLeft + "px"});
jQuery('#' + dialogId + ' .close').click(function () {
if (isShowMask) {
document.ontouchmove = function (e) {
return true;
};
}
var closeCBResult = true;
if (typeof opts.close == 'function') {
closeCBResult = opts.close();
}
if (closeCBResult) {
jQuery('#' + maskId).hide();
jQuery('#' + maskId).remove();
jQuery('#' + dialogId).hide();
jQuery('#' + dialogId).remove();
}
});
if (typeof opts.callback == 'function') {
if (isShowMask) {
document.ontouchmove = function (e) {
e.preventDefault();
};
}
opts.callback();
}
if (typeof opts.ok == 'function') {
jQuery('#' + dialogId + ' .editBtn1').click(function () {
opts.ok();
});
}
if (typeof opts.cancel == 'function') {
jQuery('#' + dialogId + ' .editBtn2').click(function () {
opts.cancel();
});
}
if (jQuery('#' + dialogId + ' .editBtn1')[0]) {
jQuery('#' + dialogId + ' .editBtn1').click(function () {
jQuery('#' + dialogId + ' .close').click();
});
}
if (jQuery('#' + dialogId + ' .editBtn2')[0]) {
jQuery('#' + dialogId + ' .editBtn2').click(function () {
jQuery('#' + dialogId + ' .close').click();
});
}
if (!opts.title && !btnOk && !btnCancel && autoClose) {
autoClose = autoClose > 1 ? autoClose : 1000;
setTimeout(function () {
jQuery('#' + dialogId).fadeOut('slow', function () {
jQuery('#' + maskId).hide();
jQuery('#' + maskId).remove();
jQuery('#' + dialogId).hide();
jQuery('#' + dialogId).remove();
if (typeof opts.close == 'function') {
opts.close();
}
});
}, autoClose);
}
},
hideDialog: function (opts) {
var opts = opts || {};
var dId = opts.id || 'tips';
var dialogId = 'fwin_dialog_' + dId;
var maskId = 'fwin_mask_' + dId;
jQuery('#' + maskId).hide();
jQuery('#' + maskId).remove();
jQuery('#' + dialogId).hide();
jQuery('#' + dialogId).remove();
},
showLoading: function (display, waiting, autoClose) {
var display = display || 'block';
var autoClose = autoClose || false;
waiting = waiting || '正在加载...';
if (display == 'block') {
TOOLS.dialog({id: 'loading', content: waiting, noMask: true, autoClose: autoClose});
} else {
TOOLS.dialog({id: 'loading'});
}
},
hideLoading: function () {
TOOLS.hideDialog({id: 'loading'});
},
showTips: function (content, autoClose, display) {
var display = display || 'block';
var autoClose = autoClose || false;
if (display == 'block') {
TOOLS.dialog({content: content, noMask: true, autoClose: autoClose});
} else {
TOOLS.dialog();
}
},
hideTips: function () {
TOOLS.hideDialog();
},
timerId: false,
initTouch: function (opts) {
var obj = opts.obj || document;
var startX, startY, endX, endY, moveTouch;
function touchStart(event) {
var touch = event.touches[0];
startY = touch.pageY;
startX = touch.pageX;
endX = touch.pageX;
endY = touch.pageY;
if (typeof opts.start == 'function') {
opts.start(event);
}
}
function touchMove(event) {
window.clearInterval(TOOLS.timerId);
touch = event.touches[0];
endX = touch.pageX;
endY = touch.pageY;
if (document.body.scrollTop <= 0 && (startY - endY) <= 0 && jQuery.os.ios) {
event.preventDefault();
}
if (typeof opts.move == 'function') {
var offset = {x: startX - endX, y: startY - endY};
opts.move(event, offset);
}
if (!jQuery.os.ios) {
TOOLS.timerId = window.setTimeout(function () {
touchEnd();
}, 50);
}
}
function touchEnd(event) {
if (typeof opts.end == 'function') {
var offset = {x: startX - endX, y: startY - endY};
opts.end(event, offset);
}
}
obj.addEventListener('touchstart', touchStart, false);
obj.addEventListener('touchmove', touchMove, false);
if (jQuery.os.ios) {
obj.addEventListener('touchend', touchEnd, false);
}
},
openNewPage: function (openUrl) {
location.href = openUrl;
},
openLoginPage: function (openUrl, limit) {
if(limit){
setTimeout(function () {
TOOLS.openNewPage('?a=login&referer=' + encodeURIComponent( openUrl ));
}, limit);
}else{
TOOLS.openNewPage('?a=login&referer=' + encodeURIComponent( openUrl ));
}
},
pageBack: function (url) {
var url = url || '';
var selfReferrer = document.referrer.indexOf(SITE_INFO.siteUrl) === 0;
if (TOOLS.getQuery("_close") && window.parent) {
window.parent.postMessage("close", "*");
} else if ((selfReferrer || !url) && !TOOLS.getQuery("_backurl")) {
history.go(-1);
} else {
TOOLS.openNewPage(url);
}
},
transformBase: function (count, power, fixed) {
if (count < 10000 || !power || power <= 0) {
return count;
} else if (power < 1) {
power = 1;
} else if (power > 5) {
power = 4;
}
var unit = ["", "十", "百", "千", "万"];
var v = count / Math.pow(10, power);
if (fixed == undefined) {
fixed = 0;
}
return v.toFixed(fixed) + unit[power];
},
getCacheData: function (key) {
var newkey = key + "_" + SITE_ID;
var data = localStorage.getItem(newkey);
if (data) {
var t = localStorage.getItem(newkey + "time");
if (parseInt(t) >= (new Date()).getTime()) {
switch (localStorage.getItem(newkey + "type")) {
case "number":
data = parseInt(data);
break;
case "boolean":
data = Boolean(data);
break;
}
return data;
}
TOOLS.removeCacheData(key);
}
return null;
},
setCacheData: function (key, data, time) {
TOOLS.removeCacheData(key);
var newkey = key + "_" + SITE_ID;
var i = 2;
while (i--) {
try {
localStorage.setItem(newkey, data.toString());
localStorage.setItem(newkey + "type", typeof (data));
localStorage.setItem(newkey + "time", ((new Date()).getTime() + time).toString());
break;
} catch (err) {
if (err.name == 'QuotaExceededError') {
localStorage.clear();
}
}
}
},
getCacheJSon: function (key) {
var jsonString = TOOLS.getCacheData(key);
if (jsonString) {
return $.parseJSON(jsonString);
}
return null;
},
setCacheJSon: function (key, json, time) {
TOOLS.setCacheData(key, JSON.stringify(json), time);
},
removeCacheData: function (key) {
var newkey = key + "_" + SITE_ID;
localStorage.removeItem(newkey);
localStorage.removeItem(newkey + "type");
localStorage.removeItem(newkey + "time");
},
getParamFilter: function () {
var filterParams = "";
var url = window.location.href;
var filter = ['a', 'c', 'f', 'source', 'fid', 'tid'];
if (url.indexOf('?') == -1) {
return "";
}
var getParams = url.split('?')[1].split('&');
for (var i in getParams) {
var j;
var paramKey = getParams[i].split('=')[0];
for (j = 0; j < filter.length && filter[j] != paramKey; j++)
;
if (j < filter.length) {
continue;
}
filterParams += (filterParams == "" ? "" : "&") + getParams[i];
}
return filterParams;
},
getJsAuth: function () {
var url = '';
if (INFO_LOADED && !TOOLS.checkInfo.data.testcookie) {
jsauth = TOOLS.getcookie('jsauth');
if (jsauth) {
url += "&_auth=" + encodeURIComponent(jsauth);
}
}
return url;
},
dget: function (url, data, func, errorfunc, contentType, report, appendauth) {
if (!INFO_LOADED) {
setTimeout(function () {
TOOLS.dget(url, data, func, errorfunc, contentType, report, appendauth);
}, 100);
return;
}
if (typeof appendauth === 'undefined') {
var appendauth = true;
}
var isLogin = url.indexOf('&ac=wxlogin&') > -1;
if (!isLogin) {
if (report) {
url += "&from=wx";
} else {
url += "&mapifrom=wx&charset=utf-8";
url += "&" + TOOLS.getParamFilter();
}
if (appendauth) {
url += TOOLS.getJsAuth();
}
}
TOOLS.dajax('GET', url, data, func, errorfunc, contentType || 'text/plain');
},
dpost: function (url, data, func, errorfunc, contentType, appendauth) {
if (!INFO_LOADED) {
setTimeout(function () {
TOOLS.dpost(url, data, func, errorfunc, contentType, appendauth);
}, 100);
return;
}
if (typeof appendauth === 'undefined') {
var appendauth = true;
}
url += "&mapifrom=wx&charset=utf-8";
url += "&" + TOOLS.getParamFilter();
if (appendauth) {
url += TOOLS.getJsAuth();
}
TOOLS.dajax('POST', url, data, func, errorfunc, contentType || 'application/x-www-form-urlencoded');
},
dajax: function (method, url, data, func, errorfunc, contentType) {
jQuery.ajax({
type: method,
url: url,
contentType: contentType,
data: data,
xhrFields: {
withCredentials: true
},
headers: {
},
success: function (data) {
var sys_error = data.error || '';
if (sys_error !== '') {
if (typeof errorfunc === 'function') {
var siteName = typeof SITE_INFO.siteName !== 'undefined' ? SITE_INFO.siteName : '微社区';
if (sys_error === 'mobile_is_closed') {
TOOLS.showError('.warp', '您请求的' + siteName + '无法访问
该社区未启用手机版');
} else {
TOOLS.showError('.warp', '您请求的' + siteName + '无法访问
接口错误(ERR01)');
}
} else {
return;
}
}
var message = data.Message;
if (message && message.messageval.indexOf('_succeed') < 0 && message.messageval.indexOf('_succed') < 0 && message.messageval.indexOf('_completion') < 0 && typeof errorfunc === 'function') {
errorfunc(message, data);
return;
}
if (typeof func === 'function') {
TOOLS.parseStyle(data);
TOOLS.parseFunc(data);
func(data);
}
},
error: function (data) {
re = /^[^\{]*?(\{.*?\})[^\}]*?$/;
var matches = re.exec(data.responseText);
if (matches != null) {
try {
var data = jQuery.parseJSON(matches[1]);
} catch (e) {
var data = false;
}
if (data) {
this.success(data);
return;
}
}
if (typeof errorfunc === 'function') {
var siteName = typeof SITE_INFO.siteName !== 'undefined' ? SITE_INFO.siteName : '微社区';
TOOLS.showError('.warp', '您请求的' + siteName + '无法访问
接口错误(ERR02)');
TOOLS.hideLoading();
}
}
});
},
shareToQQ: function (siteName, summary, title, imageUrl, targetUrl, page_url, nobar, pagetitle, appCallback) {
var url = "http://mq.wsq.qq.com/shareDirect?";
url += "site=" + encodeURIComponent(siteName);
url += "&title=" + encodeURIComponent(title);
url += "&summary=" + encodeURIComponent(summary);
url += "&targetUrl=" + encodeURIComponent(targetUrl);
url += "&pageUrl=" + encodeURIComponent(page_url);
url += "&imageUrl=" + encodeURIComponent(imageUrl);
window.location.href = url;
},
showError: function (selector, description, clickEvent) {
var errorDiv = document.createElement("div");
errorDiv.className = "errorInfo";
var errorI = document.createElement("i");
errorI.className = "eInco db spr";
var errorP = document.createElement("p");
errorP.innerHTML = description;
errorDiv.appendChild(errorI);
errorDiv.appendChild(errorP);
$(selector).html(errorDiv);
if (typeof (clickEvent) == 'function') {
$('.errorInfo').on('click', clickEvent);
}
},
checkInfo: {
data: null,
getChecking: false,
getCheckHandle: [],
get: function () {
TOOLS.checkInfo.getChecking = true;
if (JC.VERSION == localStorage.getItem(JC.KEYPREFIX + "checkinfoversion")) {
data = localStorage.getItem(JC.KEYPREFIX + 'checkinfo') || null;
if (typeof (data) == "string") {
data = jQuery.parseJSON(data);
}
TOOLS.checkInfo.data = data;
}
},
load: function () {
data = {
'siteid': 0,
'time': ((new Date()).getTime() + 600000).toString()
};
var t = +(new Date());
TOOLS.dajax('GET', API_URL + 'module=check&version=4&_t=' + t, null, function (re) {
if (typeof (re) == "string") {
try {
re = jQuery.parseJSON(re);
} catch (e) {
var siteName = typeof SITE_INFO.siteName !== 'undefined' ? SITE_INFO.siteName : '微社区';
TOOLS.showError('.warp', '您请求的' + siteName + '无法访问
接口错误(ERR03)');
TOOLS.hideLoading();
return;
}
}
data.ucenterurl = re.ucenterurl ? re.ucenterurl : '';
data.discuzversion = re.discuzversion ? re.discuzversion : '';
data.pluginversion = re.pluginversion ? re.pluginversion : '';
data.regname = re.regname ? re.regname : '';
data.qqconnect = re.qqconnect ? re.qqconnect : '';
data.wsqqqconnect = re.wsqqqconnect ? re.wsqqqconnect : '';
data.wsqhideregister = re.wsqhideregister ? re.wsqhideregister : '';
data.defaultfid = re.defaultfid ? re.defaultfid : '';
data.disableforumlist = re.disableforumlist ? re.disableforumlist : '';
data.totalposts = re.totalposts ? re.totalposts : '';
data.totalmembers = re.totalmembers ? re.totalmembers : '';
if (jQuery.os.ios) {
data.testcookie = false;
} else {
if (typeof re.testcookie != 'undefined') {
data.testcookie = !TOOLS.checkCookie() ? true : (re.testcookie ? true : false);
} else {
data.testcookie = true;
}
}
if (!data.defaultfid && !data.totalmembers) {
TOOLS.dajax('GET', API_URL + 'module=wsqindex&version=4&_t=' + t, null, function (re) {
if (typeof (re) === "string") {
try {
re = jQuery.parseJSON(re);
} catch (e) {
var siteName = typeof SITE_INFO.siteName !== 'undefined' ? SITE_INFO.siteName : '微社区';
TOOLS.showError('.warp', '您请求的' + siteName + '无法访问
接口错误(ERR04)');
TOOLS.hideLoading();
return;
}
}
data.defaultfid = re.Variables.forum.fid;
data.totalposts = re.Variables.stats.totalposts;
data.totalmembers = re.Variables.stats.totalmembers;
TOOLS.checkInfo.data = data;
localStorage.setItem(JC.KEYPREFIX + 'checkinfo', JSON.stringify(data));
localStorage.setItem(JC.KEYPREFIX + "checkinfoversion", JC.VERSION);
TOOLS.checkInfo.handle();
});
} else {
TOOLS.checkInfo.data = data;
localStorage.setItem(JC.KEYPREFIX + 'checkinfo', JSON.stringify(data));
localStorage.setItem(JC.KEYPREFIX + "checkinfoversion", JC.VERSION);
TOOLS.checkInfo.handle();
}
},
null,
'text/plain');
},
handle: function () {
TOOLS.checkInfo.getChecking = false;
INFO_LOADED = true;
for (i in TOOLS.checkInfo.getCheckHandle) {
func = TOOLS.checkInfo.getCheckHandle[i];
if (func && typeof func === 'function') {
func(TOOLS.checkInfo.data);
}
}
TOOLS.checkInfo.getCheckHandle = [];
}
},
getCheckInfo: function (func) {
var func = func || null;
if (func) {
TOOLS.checkInfo.getCheckHandle.push(func);
}
if (TOOLS.checkInfo.getChecking) {
return;
}
TOOLS.checkInfo.get();
var t = +(new Date());
if (TOOLS.checkInfo.data === null || parseInt(TOOLS.checkInfo.data.time) < t) {
if (TOOLS.checkCookie()) {
jQuery.ajax({type: 'GET', url: API_URL + 'module=checkcookie&version=4&_t=' + t, contentType: 'application/x-www-form-urlencoded', xhrFields: {withCredentials: true},
success: function (data) {
TOOLS.checkInfo.load();
},
error: function (data) {
re = /^.*?(\[\]).*?$/;
var matches = re.exec(data.responseText);
if (matches != null) {
TOOLS.checkInfo.load();
} else {
var siteName = typeof SITE_INFO.siteName !== 'undefined' ? SITE_INFO.siteName : '微社区';
TOOLS.showError('.warp', '您请求的' + siteName + '无法访问
接口错误(ERR05)');
TOOLS.hideLoading();
}
}
});
} else {
TOOLS.checkInfo.load();
}
} else {
TOOLS.checkInfo.handle();
}
},
checkCookie: function () {
return true;
},
in_array: function (search, array) {
for (var i in array) {
if (array[i] == search) {
return true;
}
}
return false;
},
hook: function (data, hookname, shownum, replace) {
if (!data.pluginVariables) {
return null;
}
if (typeof data.pluginVariables[hookname] === 'undefined') {
return null;
}
var shownum = shownum || 0;
var replace = replace || 0;
var ret = null;
i = 0;
for (plugin in data.pluginVariables[hookname]) {
if (typeof data.pluginVariables[hookname][plugin] === 'string') {
if (ret === null) {
var ret = '';
}
var v = data.pluginVariables[hookname][plugin];
if (v !== '') {
if (!replace) {
ret += v;
} else {
ret = v;
}
i++;
}
} else {
if (ret === null) {
var ret = [];
}
for (order in data.pluginVariables[hookname][plugin]) {
var rtype = typeof ret[order];
var vtype = typeof data.pluginVariables[hookname][plugin][order];
var v = data.pluginVariables[hookname][plugin][order];
if (v !== '') {
if (vtype !== 'undefined') {
if (!replace) {
if (vtype === 'string') {
if (rtype === 'undefined') {
ret[order] = v;
} else {
ret[order] += v;
}
} else if (vtype === 'object') {
ret.push(v);
}
} else {
ret[order] = v;
}
}
i++;
}
}
}
if (shownum > 0 && i >= shownum) {
break;
}
}
return ret;
},
stripCode: function (s, page, styleClass, disableWord) {
if (!s) {
return s;
}
var page = page || 0;
var styleClass = styleClass || '';
var regs = [/
([\s\S]*?)<\/script>/ig, //ig,
/([\s\S]*?)<\/title>/ig, //ig, //ig,
/([\s\S]*?)<\/head>/ig, /([\s\S]*?)<\/body>/ig, /([\s\S]*?)<\/object>/ig,
/([\s\S]*?)<\/applet>/ig, /([\s\S]*?)<\/embed>/ig, //ig,
/([\s\S]*?)<\/canvas>/ig, /([\s\S]*?)<\/audio>/ig, /([\s\S]*?)<\/frame>/ig,
/([\s\S]*?)<\/frameset>/ig];
if (!page) {
regs.push(/.*?<\/iframe>/ig);
}
if (!styleClass) {
regs.push(/([\s\S]*?)<\/style>/ig);
} else {
s = s.replace(/';
});
}
for (var i = regs.length - 1; i >= 0; i--) {
s = s.replace(regs[i], '');
}
s = s.replace(/%>/ig, '{%}')
.replace(/<[a-zA-Z]+[^>]*?on[a-zA-Z]+\s*?=\s*?([\'"])[^>]+?\1[^>]*?>/ig, function ($0) {
return $0.replace(/on[a-zA-Z]+\s*?=\s*?([\'"])[^>]+?\1/ig, '');
})
.replace(/\s*?([\'"])\s*?javascript\s*[^>]+?\1/ig, function ($0, $1) {
return $1 + 'javascript:;' + $1;
})
.replace(/<[a-zA-Z]+[^>]*?click=\s*?([\'"])([\(\);\w]+)\1[^>]*?>/ig, function ($0, $1, $2) {
return $0.replace(/click=\s*?([\'"])[^>]+?\1/ig, ' onclick="TOOLS.customFuncs.run(event, \'' + $2 + '\')" ');
})
.replace(/([\s\S]+?)<\/wsqscript>/ig, function ($0, $1) {
TOOLS.customFuncs.run(event, $1, false);
return '';
})
.replace(/\{%\}/ig, '%>');
return s;
},
getoption: function (data, option) {
if (!data.Variables.options) {
return null;
} else if (data.Variables.options[option]) {
return data.Variables.options[option];
} else {
return null;
}
},
customFuncs: {
data: {},
handle: {
'WSQ.ajaxget': function (param) {
var url = API_URL + "module=plugin&version=4&" + param[0] + TOOLS.getJsAuth();
TOOLS.dajax('GET', url, null, function (re) {
if (param[1] && $('#' + param[1])) {
$('#' + param[1]).html(TOOLS.stripCode(re.Variables.html));
}
}, function (error) {
TOOLS.showTips(error.messagestr, 1000);
});
},
'WSQ.ajaxpost': function (param) {
var data = $(param[1]) ? $('#' + param[1]).serialize() : null;
var url = API_URL + "module=plugin&version=4&" + param[0] + TOOLS.getJsAuth();
TOOLS.dajax('POST', url, data, function (re) {
if (param[2] && $('#' + param[2])) {
$('#' + param[2]).html(TOOLS.stripCode(re.Variables.html));
}
}, function (error) {
TOOLS.showTips(error.messagestr, 1000);
});
},
'WSQ.show': function (param) {
$('#' + param[0]).show();
},
'WSQ.hide': function (param) {
$('#' + param[0]).hide();
},
'WSQ.tip': function (param) {
TOOLS.showTips(param[0], param[1] || 1000);
},
'WSQ.dialog': function (param) {
var opts = {
'id': param['id'],
'content': TOOLS.stripCode(param['content']),
'okValue': '确定',
'ok': param['ok'] ? function () {
TOOLS.customFuncs.run(event, param['ok']);
} : null,
'cancelValue': '取消',
'cancel': param['cancel'] ? function () {
TOOLS.customFuncs.run(event, param['cancel']);
} : null,
'isMask': param['mask'] || true
};
TOOLS.dialog(opts);
},
'WSQ.location': function (param) {
TOOLS.openNewPage(param[0]);
}
},
run: function (event, funcnames, stopEvent) {
var stopEvent = stopEvent || true;
var funcnames = funcnames.split(';');
for (i in funcnames) {
var sp = funcnames[i].split('(');
var name = TOOLS.trim(sp[0]);
if (!TOOLS.customFuncs.data[name]) {
continue;
}
var func = TOOLS.customFuncs.data[name][0];
var param = TOOLS.customFuncs.data[name][1];
var handle = TOOLS.customFuncs.handle[func];
if (!func || !param || !handle) {
continue;
}
handle(param);
}
if (stopEvent) {
event.stopPropagation();
}
}
},
parseFunc: function (data) {
try {
var func = data.Variables.function;
if (typeof func === 'undefined') {
return;
}
} catch (e) {
return;
}
for (funcname in func) {
TOOLS.customFuncs.data[funcname] = func[funcname];
}
},
parseStyle: function (data) {
try {
var style = data.Variables.style;
if (typeof style === 'undefined') {
return;
}
} catch (e) {
return;
}
var style = style.replace(/(.+?)\{([\s\S]*?)\}\s*/ig, function ($0, $1, $2) {
var allowclass = [
'background', 'color', 'box-shadow', 'border-left', 'border-top', 'border-right',
'border-bottom', 'border', 'border-radius', 'padding', 'margin', 'line-height',
'text-shadow', 'font-weight'
];
var values = $2.split(';');
var result = '';
for (i in values) {
var pos = values[i].indexOf(':');
if (pos === -1) {
continue;
}
var attr = values[i].substr(0, pos).toLowerCase();
var value = values[i].substr(pos + 1);
attr = attr.replace(/(^\s*)|(\s*$)/g, '');
if (TOOLS.in_array(attr, allowclass)) {
result += attr + ':' + value + ';';
}
}
return $1 + '{' + result + '}';
});
obj = document.createElement('style');
obj.type = 'text/css';
obj.innerHTML = style;
$('head').append(obj);
},
lazyLoad: function (rule) {
var rule = rule || 'img.lazy';
$(rule).lazyload({skip_invisible: false, threshold: 200, failurelimit: 100});
},
uploadCompatible: function (uploadbtn, msgObj) {
var msg = '';
if (jQuery.os.ios) {
if (jQuery.os.version.toString() < '6.0') {
msg = '手机系统不支持图片上传,请升级到iOS6以上';
}
}
if (msg) {
jq(msgObj).html(msg);
}
},
attachUrl: function (url) {
if (url.indexOf('http:/') != -1) {
return url;
} else {
return DOMAIN + url;
}
},
parsePost: function () {
$('a[ed2k]').each(function () {
var obj = $(this);
obj.attr('href', 'ed2k://' + unescape(obj.attr('ed2k')) + '/');
obj.html(unescape(decodeURIComponent(obj.html())));
obj.removeAttr('ed2k');
});
},
showPublicEvent: function () {
if (!SITE_INFO.settings || !SITE_INFO.settings.isbind) {
return;
}
var wsqUrl = 'http://api.wsq.qq.com/publicEvent?sId=' + SITE_ID + '&resType=json&isAjax=1&_=' + Math.random();
jQuery.ajax({type: 'get', url: wsqUrl, dataType: 'json', contentType: 'application/x-www-form-urlencoded', xhrFields: {withCredentials: false},
success: function (re) {
var status = parseInt(re.errCode);
if (status === 0) {
if (jQuery.isEmptyObject(re.data.event) && jQuery.isEmptyObject(re.data.ad)) {
return false;
}
var pEvent = re.data.event, ad = re.data.ad;
var showEvent = true;
if (!jQuery.isEmptyObject(re.data.ad)) {
if (re.data.hadJoin) {
if (Math.random() * 100 > 50) {
showEvent = false;
}
} else {
showEvent = false;
}
}
if (showEvent) {
if (!re.data.hadJoin) {
return false;
}
TC.load("common.htm");
html = template.render('publicEventTpl', {});
$('#headerbanner').append(html);
$('#headerbanner').show();
$('#pEventImg').attr('src', pEvent.peBanner);
if (pEvent.showJoinNum) {
$('#pEventNum').html(pEvent.peNum || 0);
} else {
$('#pEvent p').hide();
}
if (pEvent.peMethod == 2) {
var url = pEvent.peCustomUrl;
if (url.indexOf('?') == -1) {
url += '?';
} else {
url += '&';
}
url += 'showSId=' + SITE_ID;
} else {
var url = 'http://m.wsq.qq.com/' + pEvent.peClickUrl + '?peId=' + pEvent.peId + '&sId=' + SITE_ID;
}
} else {
$('#pEventImg').attr('src', ad.banner);
$('#pEvent p').hide();
var url = ad.url;
}
$('#pEvent').on('click', function () {
TOOLS.openNewPage(url);
return false;
}).slideDown();
}
}
});
}
};
template.compile('error_tmpl', '');
jQuery.extend({
os: {
ios: false,
android: false,
version: false
}
});
template.helper('stripCode', function (s, page, styleClass, disableWord) {
return TOOLS.stripCode(s, page, styleClass, disableWord);
});