// Name:	common.js
// Desc:	Common functions for emsky.net
// Author:	Lendy Zhang
// Copyright (C) 2003-2004 EMAX Studio, all rights reserved.

// Environment variables:
var topicTitle		=new Array('易码首页', '技术论坛', '软件中心',	'文章中心',	'电子杂志',	'关于我们');
var topicLink		=new Array('www', 'bbs', 'soft',	'zone',	'wiki',	'#');
var webTitle		='易码工作室';
var webTitleEN		='EMAX Studio';
var webLink			='http://emsky.net';
var webMail			='webmaster@emsky.net';
var webMasterName	='Lendy Zhang';
var webMasterID		='Lendy';
var webMasterMail	='webmaster@emsky.net';
var infoPowered		='Powered by <a class="Main" href="'+webLink+'"><b>'+webTitleEN+'</b></a>. ';
var infoAuthor		='CEO: <a class="Main" href="mailto:'+webMasterMail+'"><b>'+webMasterName+'</b></a>.<br>';
var infoCopyright	='Copyright &copy; 2003-2009 <a class="Main" href="'+webLink+'"><b>'+webTitleEN+'</b></a>, all rights reserved.';

var ie4				=document.all && navigator.userAgent.indexOf("Opera") == -1;
var ns6				=document.getElementById && !document.all;

var menuLevels		=5;
var shadowSize		=3;
var shadowColor		='#808080';
var szLinkPath		='';
var szLinkTarget	=' target="_blank"';
var szLevel			=new Array('普通会员','进阶会员','高级会员','荣誉会员','VIP会员','管理员','超级管理员','首席执行官')

function GetTitleLink(i)
{
    return "http://" + topicLink[i] + ".emsky.net"
}

function GetImageLink()
{
    return GetTitleLink(1);
}


function WriteHeader(szPosition)
{
	var szSep='<img src="/images/sep0.gif" width="1" height="14" style="vertical-align: middle; margin-left: 7px; margin-right: 8px">';
	var szOutput=
	'<table border="0" width="100%" height="30" cellspacing="0" cellpadding="0" class="menuStyle">'+
	'<tr>'+
		'<td align="left" nowrap="nowrap" style="padding-left: 10px">';
			for (i=0;i<topicTitle.length;i++) {
				szOutput+='<a class="Menu" href="'+GetTitleLink(i)+'">';
				if (nTopic==i) szOutput+='<span class="markedText1">'+topicTitle[i]+'</span>'; else szOutput+=topicTitle[i];
				szOutput+='</a>'+szSep;
			}
		szOutput+=
		'</td>'+
		'<td align="right" nowrap="nowrap" style="padding-right: 10px">'+
			'<a class="Menu" href="#" onclick="JavaScript: this.style.behavior=\'url(#default#homepage)\'; this.setHomePage(\''+webLink+'\'); return false;">设为主页</a>'+szSep+'<a class="Menu" href="#" onclick="JavaScript: window.external.AddFavorite(\''+webLink+'\',\''+webTitle+'\'); return false;">收藏本站</a>'+szSep+'<a class="Menu" href="mailto:'+webMail+'">联系我们</a>'+
		'</td>'+
	'</tr>'+
	'</table>'+
	'<table width="100%" border="0" cellpadding="0" cellspacing="0">'+
		'<tr height="110"><td align="left" style="background-color: #5888BF">'+
			'<table width="100%" border="0" cellspacing="0" cellpadding="0">'+
			'<tr>'+
				'<td width="28" height="110" rowspan="2"><img src="/images/title1.gif" width="28" height="110"></td>'+
				'<td width="20" height="110" rowspan="2"><img src="/images/spacer.gif" width="20" height="110"></td>'+
				'<td width="190" height="75"><img src="/images/title2.gif" width="190" height="75"></td>'+
				'<td height="110" rowspan="2" align="right"><img src="/images/title.jpg" width="450" height="110"></td>'+
			'</tr>'+
			'<tr><td width="190" height="35">'+
				'<img src="/images/topic'+nTopic+'.gif" width="190" height="35">'+
			'</td></tr>'+
			'</table>'+
		'</td></tr>'+
	'</table>'+
	'<table border="0" width="100%" height="30" cellspacing="0" cellpadding="0" class="menuStyle">'+
	'<tr>'+
		'<td align="left" nowrap="nowrap" style="padding-left: 10px">'+
			'<img src="/images/arrow1.gif" width="20" height="13" style="vertical-align: middle"> 您的位置: <a class="Menu" href="'+webLink+'">'+webTitle+'</a> → <a class="Menu" href="'+GetTitleLink(nTopic)+'">'+topicTitle[nTopic]+'</a>'+(szPosition? szPosition : '')+
		'</td>'+
		'<td align="right" nowrap="nowrap" style="padding-right: 10px">'+
			'语言: <span class="markedText1">简体中文</span> - English'+
		'</td>'+
	'</tr>'+
	'</table>';
	document.writeln(szOutput);
}

function WriteFooter()
{
	document.writeln('<table width="100%" height="60" border="0" cellpadding="0" cellspacing="0" style="background-color: #e0e0e0; background-image: url(/images/footerbg.gif)"><tr>'+
	'<td width="100%" align="left" style="padding-left: 20px"><a href="#" onclick="JavaScript: window.scroll(0,0); return false;"><img border="0" src="/images/bottom1.jpg"></a></td>'+
	'<td class="textStyle1" nowrap="nowrap" align="right" style="font-family: Tahoma, Arial, 宋体; font-size: 8pt; padding-right: 10px">'+infoPowered+infoAuthor+infoCopyright+'</td>'+
	'</tr></table>');
}

function GetCurrentURL()
{
	var sz=window.location.toString();
	if (sz.substr(sz.length-1,1)=='/')
		return sz+'index.asp';
	else
		return sz;
}

function WriteLoginBox()
{
	document.writeln('<form name="Passport" action="'+GetCurrentURL()+'" method="post" style="margin: 0">'+
	'<p>用户姓名 <input name="Username" type="text" style="width: 100px; height: 20px"></p>'+
	'<p style="margin-top: 5px">用户密码 <input name="Password" type="password" style="width: 100px; height: 20px"></p>'+
	'<p style="margin-top: 5px">保存密码 <select name="SavePwd" style="width: 100px"><option value="0">不保存</option><option value="1">保存一天</option><option value="2">保存一月</option><option value="3" selected>保存一年</option></select>'+
	'<p style="margin-top: 5px"><input name="Passport_Login" type="submit" value="登录" class="Button2" style="width: 55px; height: 22px">&nbsp;<a class="Main" href="../register.asp">注册</a>&nbsp;<a class="Main" href="../forgetpwd.asp">忘记密码</a></p></form>');
	document.Passport.Username.focus();
}

function WritePassport()
{
	document.writeln('<table width="92%" border="0" cellspacing="0" cellpadding="0" align="center"><tr><td><span class="boldText">'+ppUsername+'</span> 欢迎您！</td></tr><tr height="56"><td>等级：'+szLevel[ppLevel]+'<br>积分：'+ppMarks+'<br>点数：<span class="markedText4">'+ppPoints+'</span></td></tr><tr><td align="center"><a class="main" href="/cp_index.asp" target="_blank">【控制面板】</a> <a class="main" href="/sms.asp" target="_blank">【短信服务】</a><br><a class="main" href="/online.asp" target="_blank">【在线名单】</a> <a class="main" href="/logout.asp">【退出登录】</a></td></tr></table>');
}

function WriteWebCounter(cntTotal,cntToday,cntYesterday,cntThisMonth,cntLastMonth,cntUser)
{
	document.writeln('<table border="0" width="100%" cellspacing="0" cellpadding="0" align="center">'+
	'<tr height="20"><td>&nbsp;累计到访： <span class="markedText1">'+cntTotal+'</span> 人次</td></tr>'+
	'<tr height="20"><td>&nbsp;本日到访： <span class="markedText1">'+cntToday+'</span> 人次</td></tr>'+
	'<tr height="20"><td>&nbsp;昨日到访： <span class="markedText1">'+cntYesterday+'</span> 人次</td></tr>'+
	'<tr height="20"><td>&nbsp;本月到访： <span class="markedText1">'+cntThisMonth+'</span> 人次</td></tr>'+
	'<tr height="20"><td>&nbsp;上月到访： <span class="markedText1">'+cntLastMonth+'</span> 人次</td></tr>'+
	'<tr height="20"><td>&nbsp;注册用户： <span class="markedText1">'+cntUser+'</span> 人</td></tr>'+
	'</table>');
}

function WriteRisenFrame(szHTML,szWidth,szHeight,szFrameStyle,szStyle,szBorderColor,szBgColor)
{
	if (!szWidth)		szWidth="100%"
	if (!szHeight)		szHeight="100%"
	if (!szFrameStyle)	szFrameStyle=""
	if (!szStyle)		szStyle=""
	if (!szBorderColor)	szBorderColor="#808080"
	if (!szBgColor)		szBgColor="#ffffff"
	document.writeln('<table width="'+szWidth+'" height="'+szHeight+'" border="0" cellspacing="0" cellpadding="0" style="'+szFrameStyle+'">'+
	'<tr height="*">'+
		'<td width="*">'+
			'<table border="0" width="100%" height="100%" cellspacing="1" cellpadding="0" style="background-color: '+szBorderColor+'">'+
			'<tr><td style="background-color: '+szBgColor+'; padding: 1px; '+szStyle+'">'+szHTML+'</td></tr>'+
			'</table>'+
		'</td>'+
		'<td width="4" valign="top" style="background-image: url(/images/shadowr.gif)"><img src="/images/shadowtr.gif" width="4" height="4"></td>'+
	'</tr>'+
	'<tr height="4">'+
		'<td width="*" style="background-image: url(/images/shadowb.gif)"><img src="/images/shadowbl.gif" width="4" height="4"></td>'+
		'<td width="4"><img src="/images/shadowbr.gif" width="4" height="4"></td>'+
	'</tr>'+
	'</table>');
}

// Separator:
function GetSepH(szStyle,nTheme)
{
	if (!szStyle)	szStyle=""
	if (!nTheme)	nTheme=0
	return '<table border="0" width="100%" height="1" cellspacing="0" cellpadding="0" style="background-image: url(/images/seppat'+nTheme+'.gif); '+szStyle+'"><tr><td></td></tr></table>';
}

function GetSepV(szStyle,nTheme)
{
	if (!szStyle)	szStyle=""
	if (!nTheme)	nTheme=0
	return '<table border="0" width="1" height="100%" cellspacing="0" cellpadding="0" style="background-image: url(/images/seppat'+nTheme+'.gif); '+szStyle+'"><tr><td></td></tr></table>';
}

function WriteFrameHeader(szCaption,szURLMore,nTheme,szStyle,szLinkEx) {
	if (!szCaption)	szCaption=''
	if (!nTheme)	nTheme=0
	if (!szStyle)	szStyle=''
	if (!szLinkEx)	szLinkEx=''
	document.writeln('<table border="0" width="100%" height="25" cellspacing="0" cellpadding="0" style="background-image: url(/images/header00.gif); '+szStyle+'"><tr>'+
	'<td width="40"><img src="/images/header'+nTheme+'.gif"></td>'+
	'<td width="*" nowrap>'+szCaption+'</td>'+
	'<td width="25"><img src="/images/header02.gif"></td>'+
	(szURLMore? '<td width="30" class="textStyle2" style="padding-left: 8px; padding-right: 8px; background-image: url(/images/header01.gif)" nowrap><a class="Main" href="'+szURLMore+'"'+szLinkEx+'><b>More</b></a></td>' : '')+
	'</tr></table>');
}

function DateDiff(szSrc,szDest)
{
	var szSrcDT=szSrc.split(" ");
	var nSrcDate=szSrcDT[0].split("-");
	var nSrcTime=szSrcDT[1].split(":");
	var szDestDT=szDest.split(" ");
	var nDestDate=szDestDT[0].split("-");
	var nDestTime=szDestDT[1].split(":");
	var date_src=new Date(nSrcDate[0],nSrcDate[1],nSrcDate[2],nSrcTime[0],nSrcTime[1],nSrcTime[2]);
	var date_dest=new Date(nDestDate[0],nDestDate[1],nDestDate[2],nDestTime[0],nDestTime[1],nDestTime[2]);
	return (date_dest.getTime()-date_src.getTime())/1000;
}

function GetMenuIndex(nID)
{
	for (i=0;i<menuItems;i++)
		if (menuID[i]==nID) return i;
	return 0;
}

function GetShortDate(sz)
{
	var szDT=sz.split(" ");
	var nDate=szDT[0].split("-");
	return ((nDate[1]<10)? "0"+nDate[1] : nDate[1])+"-"+((nDate[2]<10)? "0"+nDate[2] : nDate[2]);
}

function GetListItem(nTheme,nID,szCaption,szInfo)
{
	return '<tr><td><table border="0" width="100%" height="100%" cellspacing="0" cellpadding="0" style="margin-top: 3px; margin-bottom: 3px"><tr><td width="*">&nbsp;<img border="0" src="/images/icon'+nTheme+'.gif" width="9" height="9" style="vertical-align: middle">&nbsp;<a href="'+szLinkPath+'detail.asp?id='+nID+'"'+szLinkTarget+'>'+HTMLEncode(szCaption)+'</a></td><td align="right" nowrap><span class="markedText3">&nbsp;'+szInfo+'&nbsp;</span></td></tr></table></td></tr><tr height="1"><td>'+GetSepH("",1)+'</td></tr>';
}

function GetListItemEx(nTheme,nType,nID,szCaption,szDate,nHits)
{
	var nDays=Math.floor(DateDiff(szDate,szNow)/86400)+1
	var szOutput='<tr><td><table border="0" width="100%" height="100%" cellspacing="0" cellpadding="0" style="margin-top: 3px; margin-bottom: 3px"><tr><td width="*">&nbsp;<img border="0" src="/images/icon'+nTheme+'.gif" width="9" height="9" style="vertical-align: middle">&nbsp;<span class="markedText1">[<a class="Main" href="'+szLinkPath+'list.asp?id='+nType+'"'+szLinkTarget+'>'+menuCaption[GetMenuIndex(nType)]+'</a>]</span>&nbsp;<a href="'+szLinkPath+'detail.asp?id='+nID+'"'+szLinkTarget+'>'+HTMLEncode(szCaption)+'</a>';
	if (nDays==1) szOutput+='&nbsp;<img src="/images/new.gif" width="26" height="11" style="vertical-align: middle">';
	if (nHits/nDays>=nHotBase) szOutput+='&nbsp;<img src="/images/hot.gif" width="26" height="11" style="vertical-align: middle">';
	szOutput+='</td><td align="right" nowrap><span class="markedText3">&nbsp;'+GetShortDate(szDate)+'&nbsp;</span></td></tr></table></td></tr><tr height="1"><td>'+GetSepH("",1)+'</td></tr>';
	return szOutput;
}

function WritePicLink(szPic,nID)
{
	WriteRisenFrame('<a href="'+szLinkPath+'detail.asp?id='+nID+'"'+szLinkTarget+'><img border="0" src="'+(szPic? szPic : szNoPic)+'"></a>',1,1);
}

function WritePages(sz)
{
	document.write('<form method="get" style="margin-top: 10px; margin-bottom: 10px"><input type="hidden" name="id" value="'+nClassID+'">共<b>'+nItems+'</b>项　'+((nPage>1)? '<a href="#" onclick="return ChangePage(this,1);">首页</a> <a href="#" onclick="return ChangePage(this,'+(nPage-1)+');">上一页</a> ' : '')+'第|');
	for (i=1;i<=nPages;i++)
		document.write((i==nPage)? '<b>'+i+'</b>|' : '<a class="main" href="#" onclick="return ChangePage(this,'+i+');"><b>'+i+'</b></a>|');
	document.write('页'+((nPage<nPages)? ' <a href="#" onclick="return ChangePage(this,'+(nPage+1)+');">下一页</a> <a href="#" onclick="return ChangePage(this,'+nPages+');">尾页</a>' : ''));
	document.write('　页次：<b><span class="markedText4">'+nPage+'</span>/'+nPages+'</b>页　<b>'+nListItems+'</b>项/页　转到 <input type="text" name="page" style="width: 30px; height: 18px"> 页'+(sz? sz : '')+'</form>');
}

function ChangePage(obj,i)
{
	if (ie4)
	{
		obj.parentElement.page.value=i;
		obj.parentElement.submit();
	}
	else
	{
		obj.parentNode.page.value=i;
		obj.parentNode.submit();
	}
	return false;
}

function GetSpaceStr(n)
{
	var m;
	if (n>=1073741824)
	{
		n=Math.round(n/1073741824);
		m="GB";
	}
	else if (n>=1048576)
	{
		n=Math.round(n/1048576);
		m="MB";
	}
	else if (n>=1024)
	{
		n=Math.round(n/1024);
		m="KB";
	}
	else
		m="B";
	return n+m;
}

function StoreCaret(textEl)
{
	if(textEl.createTextRange)
		textEl.caretPos=document.selection.createRange().duplicate();
}

function InsertAtCaret(textEl,text)
{
	if (textEl.createTextRange&&textEl.caretPos)
	{
		var caretPos=textEl.caretPos;
		caretPos.text+=caretPos.text.charAt(caretPos.text.length-2)==' ' ? text+' ' : text;
	}
	else if(textEl)
		textEl.value+=text;
	else
		textEl.value=text;
}

// Encoding functions:

function TextEncode(sz)
{
	if (!sz) return '';
	sz=sz.replace(/>/ig,'&gt;');
	sz=sz.replace(/</ig,'&lt;');
	return sz;
}

function HTMLEncode(sz)
{
	if (!sz) return '';
	sz=sz.replace(/>/ig,'&gt;');
	sz=sz.replace(/</ig,'&lt;');
	sz=sz.replace(/'/ig,'&#39;');
	sz=sz.replace(/"/ig,'&quot;');
	sz=sz.replace(/\r/ig,'');
	sz=sz.replace(/\n/ig,'<br>');
	sz=sz.replace(/\t/ig,'&nbsp;&nbsp;&nbsp;&nbsp;');
	sz=sz.replace(/\x20/ig,'&nbsp;');
	return sz;
}

function URLEncode(sz)
{
	if (!sz) return '';
	sz=sz.replace(/'/ig,"%27");
	sz=sz.replace(/"/ig,"%22");
	return sz;
}

// UBB Translator
// From: blueidea.com

strIcons=1
strSmile=1
pathFileType="/images/filetype/"
pathEmotion="/images/emot/"
pathFace="/images/face/"

function TranslateUBB(strContent)
{
	var re;
	strContent=HTMLEncode(strContent);

	re=/\[IMG\](.+?)\[\/IMG\]/ig;
	strContent=strContent.replace(re,"<a href=$1 target=_blank><IMG SRC=$1 border=0 alt=按此在新窗口浏览图片 onload=\"javascript:if(this.width>screen.width-333)this.width=screen.width-333\" galleryImg=no></a>");
	re=/\[DIR=*([0-9]*),*([0-9]*)\](.*?)\[\/DIR]/ig
	strContent=strContent.replace(re,"<object classid=clsid:166B1BCA-3F9C-11CF-8075-444553540000 codebase=http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=7,0,2,0 width=$1 height=$2><param name=src value=$3><embed src=$3 pluginspage=http://www.macromedia.com/shockwave/download/ width=$1 height=$2></embed></object>")
	re=/\[QT=*([0-9]*),*([0-9]*)\](.*?)\[\/QT]/ig
	strContent=strContent.replace(re,"<embed src=$3 width=$1 height=$2 autoplay=true loop=false controller=true playeveryframe=false cache=false scale=TOFIT bgcolor=#000000 kioskmode=false targetcache=false pluginspage=http://www.apple.com/quicktime/>")
	re=/\[MP=*([0-9]*),*([0-9]*)\](.*?)\[\/MP]/ig
	strContent=strContent.replace(re,"<object align=middle classid=CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95 class=OBJECT id=MediaPlayer width=$1 height=$2 ><param name=ShowStatusBar value=-1><param name=Filename value=$3><embed type=application/x-oleobject codebase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701 flename=mp src=$3  width=$1 height=$2></embed></object>")
	re=/\[RM=*([0-9]*),*([0-9]*)\](.*?)\[\/RM]/ig
	strContent=strContent.replace(re,"<OBJECT classid=clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA class=OBJECT id=RAOCX width=$1 height=$2><PARAM NAME=SRC VALUE=$3><PARAM NAME=CONSOLE VALUE=Clip1><PARAM NAME=CONTROLS VALUE=imagewindow><PARAM NAME=AUTOSTART VALUE=true></OBJECT><br><OBJECT classid=CLSID:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA height=32 id=video2 width=$1><PARAM NAME=SRC VALUE=$3><PARAM NAME=AUTOSTART VALUE=-1><PARAM NAME=CONTROLS VALUE=controlpanel><PARAM NAME=CONSOLE VALUE=Clip1></OBJECT>")

	re=/(\[FLASH\])(.*?)(\[\/FLASH\])/ig
	strContent= strContent.replace(re,"<OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 width=500 height=400><PARAM NAME=movie VALUE=$2><PARAM NAME=quality VALUE=high><embed src=$2 quality=high pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width=500 height=400>$2</embed></OBJECT>")
	re=/(\[FLASH=*([0-9]*),*([0-9]*)\])(.*?)(\[\/FLASH\])/ig
	strContent= strContent.replace(re,"<a href=$4 TARGET=_blank><IMG SRC=pic/swf.gif border=0 alt=点击开新窗口欣赏该FLASH动画!> [全屏欣赏]</a><br><br><OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 width=$2 height=$3><PARAM NAME=movie VALUE=$4><PARAM NAME=quality VALUE=high><param name=menu value=false><embed src=$4 quality=high menu=false pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width=$2 height=$3>$4</embed></OBJECT>")

	re=/(\[UPLOAD=gif\])(.*?)(\[\/UPLOAD\])/ig
	strContent= strContent.replace(re,"<br><IMG SRC="+pathFileType+"gif.gif border=0>此主题相关图片如下：<br><A HREF=$2 TARGET=_blank><IMG SRC=$2 border=0 alt=按此在新窗口浏览图片 onload=\"javascript:if(this.width>screen.width-333)this.width=screen.width-333\"></A>")
	re=/(\[UPLOAD=jpg\])(.*?)(\[\/UPLOAD\])/ig
	strContent= strContent.replace(re,"<br><IMG SRC="+pathFileType+"jpg.gif border=0>此主题相关图片如下：<br><A HREF=$2 TARGET=_blank><IMG SRC=$2 border=0 alt=按此在新窗口浏览图片 onload=\"javascript:if(this.width>screen.width-333)this.width=screen.width-333\"></A>")
	re=/(\[UPLOAD=bmp\])(.*?)(\[\/UPLOAD\])/ig
	strContent= strContent.replace(re,"<br><IMG SRC="+pathFileType+"bmp.gif border=0>此主题相关图片如下：<br><A HREF=$2 TARGET=_blank><IMG SRC=$2 border=0 alt=按此在新窗口浏览图片 onload=\"javascript:if(this.width>screen.width-333)this.width=screen.width-333\"></A>")

	re=/(\[UPLOAD=(.[^\[]*)\])(.*?)(\[\/UPLOAD\])/ig
	strContent= strContent.replace(re,"<br><IMG SRC="+pathFileType+"$2.gif border=0> <a href=$3>点击浏览该文件</a>")

	re=/(\[URL\])(.*?)(\[\/URL\])/ig
	strContent= strContent.replace(re,"<A HREF=$2 TARGET=_blank>$2</A>")
	re=/(\[URL=(.[^\[]*)\])(.*?)(\[\/URL\])/ig
	strContent= strContent.replace(re,"<A HREF=$2 TARGET=_blank>$3</A>")

	re=/(\[EMAIL\])(.*?)(\[\/EMAIL\])/ig
	strContent= strContent.replace(re,"<img align=absmiddle src=/images/email.gif><A HREF=\"mailto:$2\">$2</A>")
	re=/(\[EMAIL=(.[^\[]*)\])(.*?)(\[\/EMAIL\])/ig
	strContent= strContent.replace(re,"<img align=absmiddle src=/images/email.gif><A HREF=\"mailto:$2\" TARGET=_blank>$3</A>")

	re =/^(http:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)/ig
	strContent = strContent.replace(re,"<img align=absmiddle src=/images/url.gif><a target=_blank href=$1>$1</a>")
	re =/(http:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)$/ig
	strContent = strContent.replace(re,"<img align=absmiddle src=/images/url.gif><a target=_blank href=$1>$1</a>")
	re =/[^>=""](http:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)/ig
	strContent = strContent.replace(re,"<img align=absmiddle src=/images/url.gif><a target=_blank href=$1>$1</a>")
	re =/^(ftp:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)/ig
	strContent = strContent.replace(re,"<img align=absmiddle src=/images/url.gif><a target=_blank href=$1>$1</a>")
	re =/(ftp:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)$/ig
	strContent = strContent.replace(re,"<img align=absmiddle src=/images/url.gif><a target=_blank href=$1>$1</a>")
	re =/[^>=""](ftp:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)/ig
	strContent = strContent.replace(re,"<img align=absmiddle src=/images/url.gif><a target=_blank href=$1>$1</a>")
	re =/^(rtsp:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)/ig
	strContent = strContent.replace(re,"<img align=absmiddle src=/images/url.gif><a target=_blank href=$1>$1</a>")
	re =/(rtsp:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)$/ig
	strContent = strContent.replace(re,"<img align=absmiddle src=/images/url.gif><a target=_blank href=$1>$1</a>")
	re =/[^>=""](rtsp:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)/ig
	strContent = strContent.replace(re,"<img align=absmiddle src=/images/url.gif><a target=_blank href=$1>$1</a>")
	re =/^(mms:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)/ig
	strContent = strContent.replace(re,"<img align=absmiddle src=/images/url.gif><a target=_blank href=$1>$1</a>")
	re =/(mms:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)$/ig
	strContent = strContent.replace(re,"<img align=absmiddle src=/images/url.gif><a target=_blank href=$1>$1</a>")
	re =/[^>=""](mms:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)/ig
	strContent = strContent.replace(re,"<img align=absmiddle src=/images/url.gif><a target=_blank href=$1>$1</a>")

	if(strIcons)
	{
		re=/(\[em(.*?)\])/ig
		strContent=strContent.replace(re,"<img src="+pathEmotion+"em$2.gif border=0 align=middle>")
	}
	if(strSmile)
	{
		re=/(\[s(\d{1,2})\])/ig
		strContent=strContent.replace(re,"<img src="+pathFace+"face$2.gif border=0 align=middle>")
	}

	re=/(\[color=(.[^\[]*)\])(.*?)(\[\/color\])/ig
	strContent=strContent.replace(re,"<font color=$2>$3</font>")
	re=/(\[face=(.[^\[]*)\])(.*?)(\[\/face\])/ig
	strContent=strContent.replace(re,"<font face=$2>$3</font>")
	re=/(\[align=(.[^\[]*)\])(.*?)(\[\/align\])/ig
	strContent=strContent.replace(re,"<div align=$2>$3</div>")

	re=/(\[QUOTE\])(.*?)(\[\/QUOTE\])/ig
	while(strContent.indexOf("[quote]")>0 && strContent.indexOf("[/quote] ")>0)
		strContent=strContent.replace(re,"<blockquote>引用:<hr><span>$2</span><hr></blockquote>");

	re=/(\[fly\])(.*?)(\[\/fly\])/ig
	strContent=strContent.replace(re,"<marquee width=90% behavior=alternate scrollamount=3>$2</marquee>")
	re=/(\[move\])(.*?)(\[\/move\])/ig
	strContent=strContent.replace(re,"<MARQUEE scrollamount=3>$2</marquee>")	
	re=/\[GLOW=*([0-9]*),*(#*[a-z0-9]*),*([0-9]*)\](.*?)\[\/GLOW]/ig
	strContent=strContent.replace(re,"<table width=$1 style=\"filter:glow(color=$2, strength=$3)\">$4</table>")
	re=/\[SHADOW=*([0-9]*),*(#*[a-z0-9]*),*([0-9]*)\](.*?)\[\/SHADOW]/ig
	strContent=strContent.replace(re,"<table width=$1 style=\"filter:shadow(color=$2, strength=$3)\">$4</table>")

	re=/(\[i\])(.*?)(\[\/i\])/ig
	strContent=strContent.replace(re,"<i>$2</i>")
	re=/(\[u\])(.*?)(\[\/u\])/ig
	strContent=strContent.replace(re,"<u>$2</u>")
	re=/(\[b\])(.*?)(\[\/b\])/ig
	strContent=strContent.replace(re,"<b>$2</b>")

	re=/(\[size=1\])(.*?)(\[\/size\])/ig
	strContent=strContent.replace(re,"<font size=1>$2</font>")
	re=/(\[size=2\])(.*?)(\[\/size\])/ig
	strContent=strContent.replace(re,"<font size=2>$2</font>")
	re=/(\[size=3\])(.*?)(\[\/size\])/ig
	strContent=strContent.replace(re,"<font size=5>$2</font>")
	re=/(\[size=4\])(.*?)(\[\/size\])/ig
	strContent=strContent.replace(re,"<font size=6>$2</font>")
	
	re=/\[size=([+|-]?[0-7])\](.*?)(\[\/size\])/ig
	strContent=strContent.replace(re,"<font size=$1>$2</font>")
	
	re=/(\[list\])(.+?)(\[\/list\])/ig;
    strContent=strContent.replace(re,"<UL TYPE=SQUARE>$2<\/UL>");
    re=/(\[list=)(A|1)(\])(.+?)(\[\/list\])/ig;
    strContent=strContent.replace(re,"<OL TYPE=$2>$4<\/OL>");
    re=/(\[\*\])/ig;
    strContent=strContent.replace(re,"<LI>");

	re=/(\[center\])(.*?)(\[\/center\])/ig
	strContent=strContent.replace(re,"<center>$2</center>")

	re=/(\[table=(#*[a-z0-9]*),(#*[a-z0-9]*),(#*[a-z0-9]*)\])(.*?)(\[\/table\])/ig
	strContent=strContent.replace(re,"<table border=0 cellpadding=5 cellspacing=1 bgcolor=$2><tr><td bgcolor=$3><font color=$4>$5</font></td></tr></table>")

	return(strContent);
}

// Menu Engine
// Programmed by Lendy Zhang, 2005

// Create menu layers:
for (i=0; i<menuLevels; i++)
	document.writeln('<div id="popmenu'+i+'" class="popMenuStyle" nowrap></div>');

// Create shadow layers (only for IE4.0 or better):
if (ie4)
	for (i=0;i<menuLevels;i++)
	{
		eval('var shadowObj'+i+'=new Array(shadowSize);');
		menuObj=eval('document.all.popmenu'+i);
		menuObj.style.zIndex=(i+1)*(shadowSize+1);
		var shadowObj=eval("shadowObj"+i);
		for (j=shadowSize;j>0;j--)
		{
			shadowObj[j-1]=document.createElement('div');
			var rs=shadowObj[j-1].style;
			rs.position='absolute';
			rs.zIndex=menuObj.style.zIndex-j;
			rs.backgroundColor=shadowColor;
			rs.visibility="hidden";
			var opacity=1-j/(j+1);
			rs.filter='alpha(opacity='+(100*opacity)+')';
			menuObj.insertAdjacentElement('afterEnd',shadowObj[j-1]);
		}
	}

function WriteMainMenu()
{
	var szSep='<img src="/images/sep0.gif" width="1" height="14" style="vertical-align: middle; margin-left: 7px; margin-right: 8px">';
	var szOut='';
	for (i=0;i<menuItems;i++)
		if (menuParent[i]==-1)
			szOut+=szSep+'<a href="'+menuLink[i]+'" onmouseover="javascript:ShowMenu(event,'+menuID[i]+',0);">'+menuCaption[i]+'</a>'
	document.writeln(szOut);
}

function ShowMenu(e,id,n)
{
	if (!n) n=0;
	if (!document.all&&!document.getElementById&&!document.layers) return;
	HideMenu(n);
	menuobj=ie4? eval('document.all.popmenu'+n) : document.getElementById('popmenu'+n);
	menuobj.thestyle=menuobj.style;
	var szItems='<table border="0" cellspacing="0" cellpadding="0">';
	for (i=0;i<menuItems;i++)
		if (menuParent[i]==id)
		{
			szItems+='<tr height="20"><td class="menuItemNormal" onmouseover="javascript: this.className=\'menuItemHover\'" onmouseout="javascript: this.className=\'menuItemNormal\'">&nbsp;&nbsp;&nbsp;<a href="'+menuLink[i]+'" onmouseover="';
			if (bSub=FindSubMenu(menuID[i]))
				szItems+='ShowMenu(event,'+menuID[i]+','+(n+1)+');';
			else
				szItems+='HideMenu('+(n+1)+');';
			szItems+='">'+menuCaption[i]+'</a>&nbsp;';
			szItems+=(bSub)? '<img src="/images/mexpand.gif" width="12" height="7" style="vertical-align: middle">' : '&nbsp;&nbsp;';
			szItems+='</td></tr>';
		}
	szItems+="</table>";
	menuobj.innerHTML=szItems;
	menuobj.contentwidth=menuobj.offsetWidth;
	menuobj.contentheight=menuobj.offsetHeight;
	
	eventX=ie4? event.clientX : e.clientX;
	eventY=ie4? event.clientY : e.clientY;
	
	if (n==0)
	{
		menuOffX=0;
		menuOffY=18;
	}
	else if (ie4)
	{
		menuOffX=event.srcElement.offsetWidth+10;
		menuOffY=-2;
	}
	else
	{
		menuOffX=30;
		menuOffY=-2;
	}
	menuobj.thestyle.top=ie4? IE_Y(event.srcElement)+menuOffY : window.pageYOffset+eventY+5;
		
	var rightedge=ie4? document.body.clientWidth-IE_X(event.srcElement)-menuOffX : window.innerWidth-eventX-menuOffX;
	if (rightedge<menuobj.contentwidth)
		menuobj.thestyle.left=ie4? (n? IE_X(event.srcElement)-menuobj.contentwidth-5 : document.body.scrollLeft+document.body.clientWidth-shadowSize-menuobj.contentwidth+menuOffX) : window.pageXOffset+eventX-menuobj.contentwidth;
	else
		menuobj.thestyle.left=ie4? IE_X(event.srcElement)+menuOffX : window.pageXOffset+eventX+menuOffX;

	menuobj.thestyle.visibility="visible";
	if (ie4) IE_DropShadow(menuobj,n);
	return false;
}

function FindSubMenu(id)
{
	for (j=0;j<menuItems;j++)
		if (menuParent[j]==id) return true;
	return false;
}

function GetMenuCaption(nID)
{
	var i;
	for (i=0;i<menuItems;i++)
		if (menuID[i]==nID)
			return menuCaption[i];
	return '';
}

function IE_Y(e)
{
	var t=e.offsetTop;
	while(e=e.offsetParent) t+=e.offsetTop;
	return t;
}
function IE_X(e)
{
	var l=e.offsetLeft;
	while(e=e.offsetParent) l+=e.offsetLeft;
	return l;
}

function IE_DropShadow(el,n)
{
	if (!n) n=0;
	var shadowObj=eval('shadowObj'+n);
	for (i=shadowSize;i>0;i--)
	{
		var ss=shadowObj[i-1].style;
		ss.left=(el.style.posLeft+i)+'px';
		ss.top=(el.style.posTop+i)+'px';
		ss.width=el.offsetWidth+'px';
		ss.height=el.offsetHeight+'px';
		ss.visibility='visible';
	}
}
function IE_ClearShadow(n)
{
	if (!n) n=0;
	var shadowObj=eval('shadowObj'+n);
	for (i=0;i<shadowSize;i++)
		if (shadowObj[i]) shadowObj[i].style.visibility='hidden';
}

function Contains_NS6(a,b)
{
	while (b.parentNode)
		if ((b=b.parentNode)==a) return true;
	return false;
}

function HideMenu(n)
{
	var menuObj;
	if (!n) n=0;
	for (i=menuLevels-1;i>=n;i--)
	{
		if (ie4)
			menuObj=eval('document.all.popmenu'+i);
		else
			menuObj=document.getElementById('popmenu'+i);
		if (menuObj.style.visibility!='hidden')
		{
			if (ie4) IE_ClearShadow(i);
			menuObj.style.visibility='hidden';
		}
	}
}

function DynamicHide(e)
{
	if (ie4&&!menuobj.contains(e.toElement))
		HideMenu();
	else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
		HideMenu();
}

function DelayHideMenu()
{
	if (ie4||ns6||ns4)
		delayhide=setTimeout("HideMenu()",500);
}

function ClearHideMenu()
{
	if (window.delayhide) clearTimeout(delayhide);
}

function HighLightMenu(e,state)
{
	if (document.all)
		source_el=event.srcElement;
	else if (document.getElementById)
		source_el=e.target;
	if (source_el.className=="menuitems")
		source_el.id=(state=="on")? "mouseoverstyle" : "";
	else
		while(source_el.id!="popmenu")
		{
			source_el=document.getElementById? source_el.parentNode : source_el.parentElement;
			if (source_el.className=="menuitems") source_el.id=(state=="on")? "mouseoverstyle" : "";
		}
}

function GetRelation()
{
	if (!szRelation) return ' → 首页';
	if (szRelation=='|') return ' → '+TextEncode(szSubTitle);
	var sz1=szRelation.substring(1,szRelation.length-1);
	var sz2=sz1.split('|');
	var sz='';
	for (i=0;i<sz2.length;i++)
		for (j=0;j<menuItems;j++)
			if (menuID[j]==sz2[i])
			{
				sz+=' → <a href="list.asp?id='+menuID[j]+'">'+menuCaption[j]+'</a>';
				break;
			}
	return sz+' → '+TextEncode(szSubTitle);
}

