if (!window.ubbcode)var ubbcode={}
if (!window.__IMGPATH)var __IMGPATH = 'http://img4.ngacn.cc/ngabbs'

ubbcode.smiles = {
1:__IMGPATH+'/post/smile/smile.gif',
2:__IMGPATH+'/post/smile/mrgreen.gif',
3:__IMGPATH+'/post/smile/question.gif',
4:__IMGPATH+'/post/smile/wink.gif',
5:__IMGPATH+'/post/smile/redface.gif',
6:__IMGPATH+'/post/smile/sad.gif',
7:__IMGPATH+'/post/smile/cool.gif',
8:__IMGPATH+'/post/smile/crazy.gif',
32:__IMGPATH+'/post/smile/12.gif',
33:__IMGPATH+'/post/smile/13.gif',
34:__IMGPATH+'/post/smile/14.gif',
30:__IMGPATH+'/post/smile/10.gif',
29:__IMGPATH+'/post/smile/09.gif',
28:__IMGPATH+'/post/smile/08.gif',
27:__IMGPATH+'/post/smile/07.gif',
26:__IMGPATH+'/post/smile/06.gif',
25:__IMGPATH+'/post/smile/05.gif',
24:__IMGPATH+'/post/smile/04.gif',
35:__IMGPATH+'/post/smile/15.gif',
36:__IMGPATH+'/post/smile/16.gif',
37:__IMGPATH+'/post/smile/17.gif',
38:__IMGPATH+'/post/smile/18.gif',
39:__IMGPATH+'/post/smile/19.gif',
40:__IMGPATH+'/post/smile/20.gif',
41:__IMGPATH+'/post/smile/21.gif',
42:__IMGPATH+'/post/smile/22.gif',
43:__IMGPATH+'/post/smile/23.gif'
}

ubbcode.checkLinkTable = {
'worldofwarcraft.com':1,
'ofcard.com':1,
'uusee.com':1,
'youtube.com':1,
'youku.com':1,
'weplay.cn':1,
'tudou.com':1,
'ngacn.cc':1,
'uencn.com':1,
'sc2.cc':1,
'ngacn.com':1,
'wowchina.com':1,
'microsoft.com':1,
'dmzj.com':1,
'178.com':1,
'com.cn':'add1',
'pixiv.net':'add1',
'embed.pixiv.net':1,
'sina.com.cn':1,
'bilibili.us':1
}

ubbcode.checkIframeTable = {
1:'http://embed.pixiv.net/code.php?id=',
2:'http://poll.178.com/cache/'
}

ubbcode.regexplock = false;
ubbcode.videonum = 0;

if (window.sRand)ubbcode.sRand = window.sRand
else
	ubbcode.sRand={
		'seed':2110032,
		'rnd':function(){this.seed = (this.seed*9301+49297) % 233280;
			return this.seed/(233280.0);
			},
		'rand':function(){
			return this.rnd();
			}
		}

ubbcode.genRandSeed=function(tid,pid,uid,mid){
if(uid=parseInt(uid,10)){
	if (pid=parseInt(pid,10))
		return pid+uid
	else if (tid=parseInt(tid,10))
		return tid+uid
	else if (mid=parseInt(mid,10))
		return mid+uid
	}
return Math.floor(Math.random()*10000);
}

ubbcode.secure_text=function(t)
{
t = t.replace('<','&lt;');
t = t.replace('>','&gt;');
t = t.replace('"','&quot;');
t = t.replace("'",'&#39;');
t = t.replace(/&lt;br&gt;/gi,'<br />');
return t;
}
//fe

ubbcode.bbscode=function(o,noimg,tid,pid,uid)
{
if (this.regexplock)
	{
	var self = this
	window.setTimeout(function(){self.bbscode(o,noimg,tid,pid,uid)},50);
	}
else
	{
	this.regexplock = true;
	this.sRand.seed = this.genRandSeed(tid,pid,uid)
	if (typeof(o)=='string')o=document.getElementById(o)
	o.className+=' ubbcode'
	o.innerHTML = this.bbscode_common(this.secure_text(o.innerHTML),noimg);
	this.regexplock = false;
	}
}

ubbcode.bbscode_common=function(c,noimg)
{

var self = this

c = c.replace(/\r/g,'');

c = c.replace(/\n/g,' ');


c = c.replace(/\[code(=[^\]]+)?\](.+?)\[\/code\]/gi,function($0,$1,$2){
	var s = $2;
	var l = null;
	var h = null;
	var hh = null;
	if ($1)l = $1.substr(1);
	switch (l)
		{
		case 'lua':
			h = "/js_highlighter.lua.js";
			break;
		case 'php':
			h = "/js_highlighter.php.js";
			break;
		case 'c':
			h = "/js_highlighter.c.js";
			break;
		case 'js':
			h = "/js_highlighter.js.js";
			break;
		case 'xml':
			h = "/js_highlighter.xml.js";
			break;
		case 'css':
			h = "/js_highlighter.css.js";
			break;
		default :
			s=s.replace(/\[/g,'&#91;').replace(/\]/g,'&#93;').replace(/ /g,'&nbsp;');
			return ("<br/><br/><span class='orange'>Code:</span><br><div class='textfield'>"+s+"</div><br/><br/>");
		}
	if (typeof(window.Highlighter)=='undefined')
		{
		window.Highlighter={'Brushes':{}};
		commonui.loadScriptInOrder(Array(__COMMONRES_PATH+"/js_highlighter.js"),function(){});
		}
	var id = 'code'+Math.floor(Math.random()*1000);
	s = s.replace(/<br\s*\/?>/ig,"\r\n").replace(/ /g,'&nbsp;').replace(/\[/g,'&#91;').replace(/\]/g,'&#93;');
	s = "<br/><br/><span class='orange'>Code <span class='gray'>("+l+")</span>:</span><br><div class='textfield'></div><textarea id='"+id+"' style='display:none'>"+s+"</textarea><br/><br/>";
	var prase = function(){$(id).previousSibling.innerHTML=Highlighter.Execute($(id).value,l);$(id).previousSibling.style.height='auto'}
	window.setTimeout(function(){commonui.loadScriptInOrder(__COMMONRES_PATH+h,prase)},1000);
	return s;
	}
	
	);//[code]


c = c.replace(/(<br\s*\/?>)*\s*\[table\]\s*(<br\s*\/?>)*\s*(.+?)\s*(<br\s*\/?>)*\s*\[\/table\]\s*(<br\s*\/?>)*/gi,"<div><table cellspacing='0px' style='border:1px solid #aaa;width:99.9%'>$3</table></div>");//[table]
c = c.replace(/(<br\s*\/?>)*\s*\[tr\]\s*(<br\s*\/?>)*\s*(.+?)\s*(<br\s*\/?>)*\s*\[\/tr\]\s*(<br\s*\/?>)*/gi,"<tr>$3</tr>");//[tr]
c = c.replace(/(<br\s*\/?>)*\s*\[td\s*(\d{0,2})\]\s*(<br\s*\/?>)*\s*(.+?)\s*(<br\s*\/?>)*\s*\[\/td\]\s*(<br\s*\/?>)*/gi,function($0,$1,$2,$3,$4){if($2){$2='width:'+$2+'%;'} return "<td style='"+$2+"border-left:1px solid #aaa;border-bottom:1px solid #aaa'>"+$4+"</td>"});//[td]

c = c.replace(/\[del\](.+?)\[\/del\]/gi,"<del class='gray'> $1 </del>");//[del]
c = c.replace(/\[u\](.+?)\[\/u\]/gi,"<u>$1</u>");//[u]
c = c.replace(/\[b\](.+?)\[\/b\]/gi,"<b>$1</b>");//[b]
c = c.replace(/\[i\](.+?)\[\/i\]/gi,"<i style='font-style:italic'>$1</i>");//[i]

c = c.replace(/\[dice\]([\dd+\s]+?)\[\/dice\]/gi,function($0,$1){
var sum = 0;
var rr = $1;
$1 = '+'+$1;
$1 = $1.replace(/(\+)(\d{0,10})(?:(d)(\d{1,10}))?/gi,function($0,$1,$2,$3,$4){
	if($2)$2 = parseInt($2,10); else if($3)$2=1; else $2=0;
	$4 = parseInt($4,10);
	var r = '';
	if(!$3){if(typeof(sum)!='string')sum+=$2;return '+'+$2}
	if($2>10 || $4>1000){sum='ERROR';return'+OUT OF LIMIT'};
	for (var i=0; i<$2; i++)
		{
		var rand = Math.floor(this.sRand.rand()*$4)+1
		r+='+d'+$4+'('+rand+')';
		if(typeof(sum)!='string')sum+=rand;
		}
	return r;
	});
return "<table class='dice'><tr><td><b>ROLL : "+rr+'</b>='+$1.substr(1)+'=<b>'+sum+"</b></td></tr></table>";
});//[dice]

c = c.replace(/(<br\s*\/?>)*\s*\[(\/?)list(=.+?)?\]\s*(<br\s*\/?>)*/gi,function ($0,$1,$2,$3){ if($3){return("<"+$3+"ul type"+$3+">")}else{return("<"+$2+"ul>")} } );//[list]
c = c.replace(/\[\*\]/gim,"<li>");//[list]

c = c.replace(/\[quote\](.+?)\[\/quote\]/gi,"<div class='quote'>$1</div>");//[quote]

//c = c.replace(/\[say\](.+?)\[\/say\]/gi,"<div class='say'>$1</div>");//[say]

c = c.replace(/\[lessernuke\](.+?)\[\/lessernuke\]/gi,"<div class='lessernuke'><span class='crimson'>用户因此贴被暂时禁言，此效果不会累加</span> <a href='javascript:void(0)' onclick='nextElement(this).style.display=\"block\"'>点击查看</a><div style='display:none'>$1</div></div>");//[lessernuke]

c = c.replace(/\[color=(skyblue|royalblue|blue|darkblue|orange|orangered|crimson|red|firebrick|darkred|green|limegreen|seagreen|teal|deeppink|tomato|coral|purple|indigo|burlywood|sandybrown|sienna|chocolate|silver|gray)\](.+?)\[\/color\]/gi,"<span class='$1'>$2</span>");//[color]

c = c.replace(/\[email=(.{1,50}?)\](.+?)\[\/email\]/gi,"<a href='mailto:$1'>$2</a>");//[email\]

c = c.replace(/\[email\](.+?)\[\/email\]/gi,"<a href='mailto:$1'>$1</a>");//[email\]

c = c.replace(/\[size=(\d{1,3})%\](.+?)\[\/size\]/gi,function($0,$1,$2){return "<span style='font-size:"+$1+"%;line-height:"+$1+"%'>"+$2+"</span>"});//[size\]

c = c.replace(/\[font=(simsun|simhei|Arial|Arial Black|Book Antiqua|Century Gothic|Comic Sans MS|Courier New|Georgia|Impact|Tahoma|Times New Roman|Trebuchet MS|Script MT Bold|Stencil|Verdana|Lucida Console)\](.+?)\[\/font\]/gi,"<span style='font-family:$1'>$2</span>");//[font]

c = c.replace(/(\[align=)(left|center|right)(\])(.+?)(\[\/align\])/gi,"<div style='text-align:$2'>$4</div>");//[align]

var img_count = 0;
if (!noimg || typeof(noimg)=='object')
	{
	c = c.replace(/\[img(\d{0,3})\](.+?)\[\/img\]/gi,function($0,$1,$2){
		if($2.match(/^[\x00-\x7F]+$/)) 
			var src=$2; 
		else
			var src='';
		if (src && src.substr(0,2).toLowerCase()=='./')
			src = __ATTACH_BASE+'/'+src.substr(2);
		if(src && src.substr(0,7).toLowerCase()!='http://') 
			src = 'http://'+src;
		if($1 && $1<=100 && $1>0) 
			$1="style='width:"+($1-0.1)+"%'";
		else
			$1='';
		var tmp ='';
		if (typeof(noimg)=='object')
			{
			if (noimg.h)
				tmp+= 'if(this.offsetHeight>'+noimg.h+')this.style.height="'+noimg.h+'px";';
			if (noimg.w)
				tmp+= 'if(this.offsetWidth>'+noimg.w+')this.style.height="'+noimg.w+'px";';
			}
		if (src.match(/ngacn\.cc/gi))
			{
			img_count++
			if (img_count>5)
				{
				return("<a href='"+src+"' title='为了保证正常浏览，暂不显示全部大图'><img src='"+src+".thumb.jpg' onerror='this.onerror=null;this.parentNode.title=\"\";this.src=\""+src+"\"'/></a>")
				}
			}
		//if(src.match(/ngacn\.cc/gi))return "为了保证正常浏览，暂不显示签名中的图片";
		return("<img "+$1+" src='"+src+"' alt='' onload='"+tmp+"' onerror='this.nextSibling.style.display=\"inline\"'/><span class='silver' style='display:none'> [ "+$2+" ] </span>")
		});//[img]

	c = c.replace(/\[flash\](.+?)\[\/flash\]/gi,function($0,$1){ var u=$1;if(u.substr(0,7).toLowerCase()!='http://'){u = 'http://'+u} if (self.checklink(u,1)==1 && self.videonum<1) {var w=425;var h=350;if(u.indexOf('pl.bilibili.us')!=-1){w=540;h=450}self.videonum++;return("<object class='video' width='"+w+"' height='"+h+"' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0'><param name='movie' value='"+u+"'><embed src='"+u+"' quality='high' type='application/x-shockwave-flash' width='"+w+"' height='"+h+"' allowfullscreen='true'></embed></object>");} else {return("<a href='"+u+"' target='_blank'>"+u+"</a>");} } );//[flash]

	c = c.replace(/\[iframe=(\d+),(\d+)\](https?)(.+?)\[\/iframe\]/gi,function($0,$1,$2,$3,$4){
		$1 = parseInt($1,10);$2 = parseInt($2,10)
		$1 = (!$1 || $1>1000)? 500 : $1
		$2 = (!$2 || $2>1000)? 500 : $2
		var u = $3+$4;
		for (var k in self.checkIframeTable)
			if(u.indexOf(self.checkIframeTable[k])==0)
				return "<div style='border:1px solid #444;width:"+$1+"px;height:"+($2+10)+"px;overflow:hidden'><div style='font-size:8px;line-height:10px;height:10px;overflow:hidden'>IFRAME:"+u+"</div><iframe frameborder=0 marginheight=0 marginwidth=0 scrolling='no' style='border:none;width:"+$1+"px;height:"+$2+"px;overflow:hidden;margin:0;background:transparent' src='"+u+"'></iframe></div>";
		return "<span><span class='chocolate'><span class='urltip chocolate' style='font-size:11px;padding:2px;text-align:center;line-height:15px'>"+u+"<br/>此网页不属于NGA网站，NGA不保证其安全性<br/><a href='"+u+"' onclick='this.parentNode.style.display=\"none\"' target='_blank'>继续访问</a> <a href='javascript:void(0)' onclick='this.parentNode.style.display=\"none\"'>取消</a></span>[</span> <a href='"+u+"' target='_blank'  onclick='this.parentNode.firstChild.firstChild.style.display=\"inline\";return false'>"+u+"</a> <span class='chocolate'>]</span></span>";
		});//[iframe]
	}

c = c.replace(/\[url=(https?|ftp|gopher|news|telnet|mms|rtsp|)(.+?)\](.+?)\[\/url\]/gi,function($0,$1,$2,$3){if(!$1)$1='http://';return(self.writelink($1+$2,$3))});//[url]

c = c.replace(/\[url\](https?|ftp|gopher|news|telnet|mms|rtsp)(.+?)\[\/url\]/gi,function($0,$1,$2){return(self.writelink($1+$2,$1+$2))});//[url]

c = c.replace(/\[(tid|pid)=?(\d{0,20})\](.+?)\[\/(tid|pid)\]/gi,function($0,$1,$2,$3,$4){
	if ($2)
		{return self.writelink('/read.php?'+$1+'='+$2,$3)}
	else
		{
		if ($1=='tid')
			var txt = '主题'
		else
			var txt = '回复'
		return self.writelink('/read.php?'+$1+'='+$3,txt+$3)}
	})

c = c.replace(/\[s:(\d{1,11})\]/gi,function($0,$1){ return("<img src='"+self.smiles[$1]+"' alt=''/>") } );//[smile]

c = c.replace(/\[h\](.*?)\[\/h\]/gi,function($0,$1){if($1){return "<h4>"+$1+"</h4>"}else{return "<h4 class='subtitle' style='line-height:0;font-size:0;padding:0;margin:0 0 3px 0;height:0'></h4>"}});//[h]
c = c.replace(/={3,100}(.+?)={3,100}/gi,function($0,$1){if($1=='=')$1=''; return "<h4 class='subtitle'>"+$1+"</h4>"});//[h]
c = c.replace(/\s*(<br\s*\/?>)+\s*<(\/?)h4>\s*(<br\s*\/?>)+\s*/gi,"<$1h4>");//[h]


c = c.replace(/(<br\s*\/?>)*\s*\[l(\d*)\]\s*(<br\s*\/?>)*\s*(.+?)\s*(<br\s*\/?>)*\s*\[\/l\]\s*(<br\s*\/?>)*/gi,function($0,$1,$2,$3,$4){if($2<=100){$2="style='width:"+($2-0.1)+"%'"}else{$2=''}return "<div "+$2+" class='left'>"+$4+"</div>"});//[left]
c = c.replace(/(<br\s*\/?>)*\s*\[r(\d*)\]\s*(<br\s*\/?>)*\s*(.+?)\s*(<br\s*\/?>)*\s*\[\/r\]\s*(<br\s*\/?>)*/gi,function($0,$1,$2,$3,$4){if($2<=100){$2="style='width:"+($2-0.1)+"%'"}else{$2=''}return "<div "+$2+" class='right'>"+$4+"</div>"});//[right]

c = c.replace(/p_w_upload/gi,"attachment");//[img]

return c;
}

ubbcode.writelink=function(u,n,h,frame)
{
u=u.replace(/http:\/\/([^\.]+)\.ngacn\.com/i,'http://$1.ngacn.cc')
var c = '';
var a = '';
var s = this.checklink(u);
if (!h)
	{
		if (u != n)
			{
				h = u;
			}
		else
			{
				h = '';
			}
	}
switch (s)
	{
		case 0:
			c = 'silver';
			break;
		case 1:
			c = 'silver';
			break;
		case 2:
			c = 'chocolate';
			break;
		case 3:
			c = 'red';
			break;
	}
if (h)
	{
		h = " onmouseover='this.childNodes[0].style.display=\"inline\"' onmouseout='this.childNodes[0].style.display=\"none\"'><span class='urltip "+c+"'>"+h+"</span>";
	}
else 
	{
		h = ">";
	}
if (s>1)
	{
		h = " onclick='prevElement(this).childNodes[0].style.display=\"inline\";return false' "+h;
		a = "<span class='urltip "+c+"' style='font-size:11px;padding:2px;text-align:center;line-height:15px'>"+u+"<br/>此网页不属于NGA网站，NGA不保证其安全性<br/><a href='"+u+"' onclick='this.parentNode.style.display=\"none\"' target='_blank'>继续访问</a> <a href='javascript:void(0)' onclick='this.parentNode.style.display=\"none\"'>取消</a> <a href='"+u+"' "+(window.cookieFuncs ? "onclick='this.parentNode.style.display=\"none\";cookieFuncs.setMiscCookieInSecond(\"ngabbsnochecklink\",1,1296000)' target='_blank'>不再提示我</a>" : '')+"</span>";
	}
return ("<span class='"+c+"'>"+a+"[</span> <a href='"+u+"' target='_blank' "+h+n+"</a> <span class='"+c+"'>]</span>");
}
//fe

ubbcode.checklink=function(u,nocookie,tbl)
{
if(!tbl)tbl=this.checkLinkTable
var c = false
if (window.cookieFuncs)c = cookieFuncs.getMiscCookie('ngabbsnochecklink')
if (!c || nocookie)
	{
	if (u.charAt(0)=='/')return 1;
	u = u.toLowerCase().match(/^http:\/\/([^\/]+)/);
	if (u && u[1])
		{
		u = u[1].split('.');
		var x = u[u.length-2]+'.'+u[u.length-1];
		if(tbl[x])
			if (tbl[x]=='add1')
				{
				if (u[u.length-3])
					x=u[u.length-3]+'.'+x
				if(tbl[x])return tbl[x]
				}
			else
				return tbl[x]
		}
	return 2;
	}
else
	return 0;
}
//fe

ubbcode.sc2reply_draw=function(r,thumbbase,oi,od,oa){
if (!oa)
	return
var h = '地图: <b>'+r.map+'</b><br/>';
if (r.time)
	{
	var ih = Math.floor(r.time/3600)
	var im = Math.floor((r.time-ih*3600)/60)
	var is = Math.floor(r.time-ih*3600-im*60)
	h+='时长: <b>'+ih+':'+im+':'+is+'</b><br/>'
	}
var c = '';
var n = '';
for (var i in r.player )
	{
	c=''
	if (r.player[i][2])
		c = ' style="color:#'+r.player[i][2]+'"'
	if (r.player[i][0]){
		h+= '<b'+c+'>'+r.player[i][0]+'</b> <span class=gray>('+r.player[i][1]+')</span><br/>'
		n+= '_'+r.player[i][0]+'_['+r.player[i][1]+']'
		}
	}
oi.src=thumbbase+'/'+r.thumb
oi.onerror=null
od.innerHTML = h+od.innerHTML
oa.href += '?filename='+r.map+n+'.sc2replay'
}//fe
