﻿/*
Javascript incude file 0.84 versios
publish date:2007/06/04
coder by nt2003
*/

/* XMLHTTP状态显示字符 */
var xml_http_building_link = '建立连接';
var xml_http_sending = '发送命令';
var xml_http_loading = '接收回传';
var xml_http_data_in_processed = '处理数据';
var xml_http_load_failed = '服务器响应错,错误代码:[err:errcode]';

/* 浏览器判断 */
var userAgent = navigator.userAgent.toLowerCase();
var is_webtv = userAgent.indexOf('webtv') != -1;
var is_kon = userAgent.indexOf('konqueror') != -1;
var is_mac = userAgent.indexOf('mac') != -1;
var is_saf = userAgent.indexOf('applewebkit') != -1 || navigator.vendor == 'Apple Computer, Inc.';
var is_opera = userAgent.indexOf('opera') != -1 && opera.version();
var is_moz = (navigator.product == 'Gecko' && !is_saf) && userAgent.substr(userAgent.indexOf('firefox') + 8, 3);
var is_ns = userAgent.indexOf('compatible') == -1 && userAgent.indexOf('mozilla') != -1 && !is_opera && !is_webtv && !is_saf;
var is_ie = (userAgent.indexOf('msie') != -1 && !is_opera && !is_saf && !is_webtv) && userAgent.substr(userAgent.indexOf('msie') + 5, 3);

/* 基础函数 */
function $(id) {
    return document.getElementById(id);
}

function in_array(targetstr, sourcearry) {
    if (typeof sourcearry == 'string') {
        for (var i in sourcearry) {
            if (sourcearry[i] == targetstr)
            { return true; }
        }
    }
    return false;
}

function add2array(targetarry, newstr) {
    targetarry[targetarry.length] = newstr;
    return targetarry.length;
}

function del4array(targetarry, newstr) {
    for (i in targetarry) {
        if (targetarry[i] == newstr) {
            targetarry[i] = null;
        }
    }
    return targetarry;
}

var Ajaxs = new Array();
function AjaxRequest(recvType, targetId) {
    var ajax = new Object();
    ajax.targetId = targetId ? document.getElementById(targetId) : null;
    ajax.targetUrl = '';
    ajax.para = '';
    ajax.paratype = '';
    ajax.recvType = recvType ? recvType : 'XML';
    ajax.resultHandle = null;
    ajax.labelname = '';
    ajax.currentpage = '';
    ajax.sourcename = '';
    ajax.total = '';
    ajax.pagesize = '';

    ajax.createXMLHttpRequest = function () {
        var oXmlHttp = false;
        if (window.XMLHttpRequest) {
            oXmlHttp = new XMLHttpRequest();
            if (oXmlHttp.overrideMimeType) {
                oXmlHttp.overrideMimeType('text/xml');
            }
        } else if (window.ActiveXObject) {
            var xmlobjectarry = ["Microsoft.XMLHTTP", "MSXML.XMLHTTP", "Msxml2.XMLHTTP.7.0", "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP"];
            for (var i = 0; i < xmlobjectarry.length; i++) {
                try {
                    oXmlHttp = new ActiveXObject(xmlobjectarry[i]);
                    if (oXmlHttp) {
                        return oXmlHttpt;
                    }
                } catch (oError) { }
            }
        }
        return oXmlHttp;
    }
    ajax.XMLHttpRequest = ajax.createXMLHttpRequest();

    ajax.processHandle = function () {
        if (ajax.targetId) {
            ajax.targetId.style.display = '';
        }
        if (ajax.XMLHttpRequest.readyState == 1 && ajax.targetId) {
            ajax.targetId.innerHTML = xml_http_building_link;
        } else if (ajax.XMLHttpRequest.readyState == 2 && ajax.targetId) {
            ajax.targetId.innerHTML = xml_http_sending;
        } else if (ajax.XMLHttpRequest.readyState == 3 && ajax.targetId) {
            ajax.targetId.innerHTML = xml_http_loading;
        } else if (ajax.XMLHttpRequest.readyState == 4) {
            if (ajax.XMLHttpRequest.status == 200) {
                Ajaxs = del4array(Ajaxs, ajax.targetUrl);
                if (ajax.recvType == 'HTML') {
                    ajax.resultHandle(ajax.XMLHttpRequest.responseText);
                } else if (ajax.recvType == 'XML') {
                    if (window.XMLHttpRequest) {
                        ajax.resultHandle(ajax.XMLHttpRequest.responseText);
                    }
                    else {
                        ajax.resultHandle(ajax.XMLHttpRequest.responseXML);
                    }
                }
            } else {
                if (ajax.targetId) {
                    ajax.targetId.innerHTML = xml_http_load_failed.replace('[err:errcode]', ajax.XMLHttpRequest.status);
                }
            }
        }
    }

    ajax.createXmlDom = function (xmlstry) {
        var oXmlDom = false;
        if (document.implementation && document.implementation.createDocument) {
            oXmlDom = document.implementation.createDocument("", "", null);
        }
        else {
            var aVersions = ["Microsoft.XMLDOM", "MSXML2.DOMDocument.6.0", "MSXML2.DOMDocument.5.0", "Msxml2.DOMDocument.4.0", "MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument"];
            for (var i = 0; i < aVersions.length; i++) {
                try {
                    oXmlDom = new ActiveXObject(aVersions[i]);
                    if (oXmlDom) {
                        break;
                    }
                }
                catch (oError) { }
            }
        }

        if (xmlstry != null) {
            oXmlDom.async = false;
            if (!is_ie) {
                var oParser = new DOMParser();
                oXmlDom = oParser.parseFromString(xmlstry, "text/xml");
            }
            else {
                if (is_ie == '7.0') {
                    oXmlDom.loadXML(xmlstry);
                }
                else {
                    if (window.XMLHttpRequest) {
                        oXmlDom.loadXML(xmlstry);
                    } else {
                        oXmlDom.load(xmlstry);
                    }
                }
            }
        }

        return oXmlDom;
    }

    ajax.get = function (targetUrl, resultHandle) {
        if (in_array(targetUrl, Ajaxs)) {
            return false;
        } else {
            add2array(Ajaxs, targetUrl);
        }
        ajax.targetUrl = targetUrl;
        ajax.XMLHttpRequest.onreadystatechange = ajax.processHandle;
        ajax.resultHandle = resultHandle;
        if (window.XMLHttpRequest) {
            ajax.XMLHttpRequest.open('GET', ajax.targetUrl);
            ajax.XMLHttpRequest.send(null);
        } else {
            ajax.XMLHttpRequest.open("GET", targetUrl, true);
            ajax.XMLHttpRequest.send();
        }
    }

    ajax.post = function (usemethod, targetUrl, resultHandle) {
        if (in_array(targetUrl, Ajaxs)) {
            return false;
        } else {
            add2array(Ajaxs, targetUrl);
        }
        ajax.targetUrl = targetUrl;

        var xml_dom = ajax.createXmlDom();
        xml_dom.async = false;

        if (!is_opera) /* opera不需要声明这一段 */
        {
            var xmlproperty = xml_dom.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\"");
            xml_dom.appendChild(xmlproperty);
        }

        var objRoot = xml_dom.createElement("root");

        var objField = xml_dom.createElement("type");
        var oText = xml_dom.createTextNode(usemethod);
        objField.appendChild(oText);
        objRoot.appendChild(objField);

        switch (usemethod) {
            case 'updatelabel':
                objField = xml_dom.createElement("labelname");
                oText = xml_dom.createTextNode(ajax.labelname);
                objField.appendChild(oText);
                objRoot.appendChild(objField);

                objField = xml_dom.createElement("currentpage");
                oText = xml_dom.createTextNode(ajax.currentpage);
                objField.appendChild(oText);
                objRoot.appendChild(objField);

                var objattrib;

                for (var i = 0; i < ajax.para.length; i++) {
                    objField = xml_dom.createElement("attrib");
                    if (i < ajax.paratype.length) {
                        switch (ajax.paratype[i]) {
                            case 'innerhtml':
                                objattrib = xml_dom.createElement(ajax.para[i]);
                                oText = xml_dom.createTextNode($(ajax.para[i]).innerHTML);
                                break;
                            case 'innertext':
                                objattrib = xml_dom.createElement(ajax.para[i]);
                                oText = xml_dom.createTextNode($(ajax.para[i]).innerText);
                                break;
                            case 'value':
                                objattrib = xml_dom.createElement(ajax.para[i]);
                                oText = xml_dom.createTextNode($(ajax.para[i]).value);
                                break;
                            case 'text':
                                objattrib = xml_dom.createElement(ajax.para[i]);
                                oText = xml_dom.createTextNode($(ajax.para[i]).Text);
                                break;
                            case 'select':
                                var optionCount = $(ajax.para[i]).length;
                                for (var m = 0; m < optionCount; m++) {
                                    var option = $(ajax.para[i]).options[m];
                                    if (option.selected) {
                                        oText = xml_dom.createTextNode(option.value);
                                    }
                                }
                                break;
                            case 'innerhtml.nohtml':
                                objattrib = xml_dom.createElement(ajax.para[i]);
                                oText = xml_dom.createTextNode(removehtml($(ajax.para[i]).innerHTML));
                                break;
                            case 'innertext.nohtml':
                                objattrib = xml_dom.createElement(ajax.para[i]);
                                oText = xml_dom.createTextNode(removehtml($(ajax.para[i]).innerText));
                                break;
                            case 'value.nohtml':
                                objattrib = xml_dom.createElement(ajax.para[i]);
                                oText = xml_dom.createTextNode(removehtml($(ajax.para[i]).value));
                                break;
                            case 'text.nohtml':
                                objattrib = xml_dom.createElement(ajax.para[i]);
                                oText = xml_dom.createTextNode(removehtml($(ajax.para[i]).Text));
                                break;
                            default:
                                objattrib = xml_dom.createElement(ajax.para[i].split('=')[0]);
                                oText = xml_dom.createTextNode(ajax.para[i].split('=')[1]);
                                break;
                        }
                    }
                    else {
                        objattrib = xml_dom.createElement(ajax.para[i].split('=')[0]);
                        oText = xml_dom.createTextNode(ajax.para[i].split('=')[1]);
                    }

                    objattrib.appendChild(oText);
                    objField.appendChild(objattrib);
                    objRoot.appendChild(objField);
                }
                break;
            case 'updatepage':
                objField = xml_dom.createElement("labelname");
                oText = xml_dom.createTextNode(ajax.labelname);
                objField.appendChild(oText);
                objRoot.appendChild(objField);

                objField = xml_dom.createElement("sourcename");
                oText = xml_dom.createTextNode(ajax.sourcename);
                objField.appendChild(oText);
                objRoot.appendChild(objField);

                objField = xml_dom.createElement("currentpage");
                oText = xml_dom.createTextNode(ajax.currentpage);
                objField.appendChild(oText);
                objRoot.appendChild(objField);

                objField = xml_dom.createElement("total");
                oText = xml_dom.createTextNode(ajax.total);
                objField.appendChild(oText);
                objRoot.appendChild(objField);

                objField = xml_dom.createElement("pagesize");
                oText = xml_dom.createTextNode(ajax.pagesize);
                objField.appendChild(oText);
                objRoot.appendChild(objField);
                break;
            default:
                for (var i = 0; i < ajax.para.length; i++) {

                    if (ajax.para[i].indexOf('=') >= 0) {
                        objField = xml_dom.createElement(ajax.para[i].split('=')[0]);
                        oText = xml_dom.createTextNode(ajax.para[i].split('=')[1]);
                        objField.appendChild(oText);
                        objRoot.appendChild(objField);
                    }
                    else {
                        objField = xml_dom.createElement(ajax.para[i]);
                        if (i < ajax.paratype.length) {
                            if ($(ajax.para[i]) != null) {
                                switch (ajax.paratype[i]) {
                                    case 'innerhtml':
                                        oText = xml_dom.createTextNode($(ajax.para[i]).innerHTML);
                                        break;
                                    case 'innertext':
                                        oText = xml_dom.createTextNode($(ajax.para[i]).innerText);
                                        break;
                                    case 'text':
                                        oText = xml_dom.createTextNode($(ajax.para[i]).Text);
                                        break;
                                    case 'select':
                                        var optionCount = $(ajax.para[i]).length;
                                        for (var m = 0; m < optionCount; m++) {
                                            var option = $(ajax.para[i]).options[m];
                                            if (option.selected) {
                                                oText = xml_dom.createTextNode(option.value);
                                            }
                                        }
                                        break;
                                    case 'innerhtml.nohtml':
                                        oText = xml_dom.createTextNode(removehtml($(ajax.para[i]).innerHTML));
                                        break;
                                    case 'innertext.nohtml':
                                        oText = xml_dom.createTextNode(removehtml($(ajax.para[i]).innerText));
                                        break;
                                    case 'nohtml':
                                        oText = xml_dom.createTextNode(removehtml($(ajax.para[i]).value));
                                        break;
                                    case 'text.nohtml':
                                        oText = xml_dom.createTextNode(removehtml($(ajax.para[i]).Text));
                                        break;
                                    default:
                                        oText = xml_dom.createTextNode($(ajax.para[i]).value);
                                        break;
                                }
                                objField.appendChild(oText);
                            }
                        }
                        else {
                            if ($(ajax.para[i]) != null) {
                                oText = xml_dom.createTextNode($(ajax.para[i]).value);
                                objField.appendChild(oText);
                            }
                        }
                        objRoot.appendChild(objField);
                    }

                }
                break;
        }
        xml_dom.appendChild(objRoot);

        ajax.XMLHttpRequest.onreadystatechange = ajax.processHandle;
        ajax.resultHandle = resultHandle;
        ajax.XMLHttpRequest.open('POST', targetUrl);
        ajax.XMLHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        ajax.XMLHttpRequest.send(xml_dom);
    }
    return ajax;
}

/* 用户登录部分 */
function showuserlogin(showuserstat) {
    var x = new AjaxRequest('XML', showuserstat);
    if (getloginedusername() == "err") {
        x.labelname = "用户登录界面";
    }
    else {
        x.labelname = '用户登录成功';
    }
    x.pagename = "";
    x.currentpage = 1;
    x.post('updatelabel', '/ajax.aspx', function (s) {
        var xml = x.createXmlDom(s);
        $(showuserstat).innerHTML = xml.getElementsByTagName("body")[0].firstChild.data;
    });
}

function senduserlogin(showrequeststat, showuserstat) {
    var x = new AjaxRequest('XML', showrequeststat);
    x.para = ['username', 'password', 'checkcode'];
    x.post('userlogin', '/ajax.aspx', function (s) {
        var xml = x.createXmlDom(s);
        if (xml.getElementsByTagName("status")[0].firstChild.data == "ok") {
            $(showrequeststat).style.display = 'none';
            showuserlogin(showuserstat);
        }
        else {
            $(showrequeststat).innerHTML = xml.getElementsByTagName("body")[0].firstChild.data; ;
        }
    });
}

function quitlogin() {
    var x = new AjaxRequest('XML', '');
    x.post('userlogout', '/ajax.aspx', function (s) { });
}

function getloginedusername() {
    var outstr;
    var x = new AjaxRequest('XML', '');
    var xml_dom = x.createXmlDom();
    xml_dom.async = false;

    if (!is_opera) /* opera不需要声明这一段 */
    {
        var xmlproperty = xml_dom.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\"");
        xml_dom.appendChild(xmlproperty);
    }
    var objRoot = xml_dom.createElement("root");
    var objField = xml_dom.createElement("type");
    var oText = xml_dom.createTextNode("logincheck");
    objField.appendChild(oText);
    objRoot.appendChild(objField);
    xml_dom.appendChild(objRoot);
    var userhttp = x.createXMLHttpRequest();
    userhttp.open("POST", "/ajax.aspx", false);
    userhttp.onreadystatechange = function () {
        if (userhttp.readyState == 4 && userhttp.status == 200) {
            var xml = x.createXmlDom(userhttp.responseText);
            outstr = xml.getElementsByTagName("username")[0].firstChild.data;
        }
    }
    userhttp.send(xml_dom);
    return outstr;
}

/* 用户注册部分 */
function regusernamecheck(showuserstat) {
    var x = new AjaxRequest('XML', showuserstat);
    x.para = ['username'];
    x.post('usercheck', '/ajax.aspx', function (s) {
        var xml = x.createXmlDom(s);
        if (xml.getElementsByTagName("status")[0].firstChild.data == "ok") {
            $(showuserstat).innerHTML = "本用户可以注册";
        }
        else {
            $(showuserstat).innerHTML = "本用户已存在，请另换一个用户名";
        }
    });
}

/* 重写FireFox下的xmldocument.xml与innerText方法 */
if (is_moz) {
    Node.prototype.__defineGetter__
(
	"xml",
	function () {
	    return (new XMLSerializer).serializeToString(this);
	}
);

    HTMLElement.prototype.__defineGetter__
(
    "innerText",
    function () {
        return this.textContent;
    }
);

    HTMLElement.prototype.__defineSetter__
(
    "innerText",
    function (sText) {
        this.textContent = sText;
    }
);
};

/* 过滤HTML符号 */
function removehtml(instr) {
    var d = document.createElement("DIV");
    d.innerHTML = instr;
    d.id = "tempremovehtmlcontent";
    d.style.display = "none";
    return d.innerText;
}

/* 改变图片大小 */
function resizepic(thispic) {
    if (thispic.width > 550) { thispic.height = thispic.height * 550 / thispic.width; thispic.width = 550; }
}

/* 无级缩放图片大小 */
function bbimg(o) {
    return true;
}

/* 隐藏域 */
function HiddenCoupon(me) {
    if (me.checked) {
        document.getElementById('divCoupon').style.display = '';
    }
    else {
        document.getElementById('divCoupon').style.display = 'none';
    }
}

/* 留言内容页复制代码 */
function copyCode(id){
	var testCode=document.getElementById(id).value;
	if(copy2Clipboard(testCode)!=false){
		alert("代码已复制成功！您可以马上粘贴到QQ空间中使用啦！谢谢对泡泡花QQ代码站的支持!");
	}
}
copy2Clipboard=function(txt){
	if(window.clipboardData){
		window.clipboardData.clearData();
		window.clipboardData.setData("Text",txt);
	}
	else if(navigator.userAgent.indexOf("Opera")!=-1){
		window.location=txt;
	}
	else if(window.netscape){
		try{
			netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
		}
		catch(e){
			alert("您的firefox安全限制限制您进行剪贴板操作，请打开’about:config’将signed.applets.codebase_principal_support’设置为true’之后重试，相对路径为firefox根目录/greprefs/all.js");
			return false;
		}
		var clip=Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
		if(!clip)return;
		var trans=Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
		if(!trans)return;
		trans.addDataFlavor('text/unicode');
		var str=new Object();
		var len=new Object();
		var str=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
		var copytext=txt;str.data=copytext;
		trans.setTransferData("text/unicode",str,copytext.length*2);
		var clipid=Components.interfaces.nsIClipboard;
		if(!clip)return false;
		clip.setData(trans,null,clipid.kGlobalClipboard);
	}
}

domain = "www.qqliver.com/tool/ubb"

function callclip(param)
{
	eval(param).focus();
	eval(param).document.execCommand("selectAll");
	eval(param).document.execCommand("Copy");
	alert('复制成功！');
}
function clearALL()
{
	if(confirm('这个操作很可能让您前功尽弃,是否要清空所有内容?')){
		//删除及建立数组
		delete arrUndo;	
		arrUndo = new Array();
		document.getElementById('main_editer').focus();
		document.getElementById('main_editer').document.execCommand("selectAll");
		document.getElementById('main_editer').document.execCommand('Copy');
		document.getElementById('main_editer').value='';
		previw(1);
		document.getElementById('main_editer').focus();
	}
}

var UBBrange;

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;
	}
}

function get_textarea()	//获取文本
{
	var post = main_editer;
	var selected = '';
	if(post.isTextEdit){ 
			post.focus();
			var sel= document.selection;
			var rng= sel.createRange();
			rng.colapse;
			if((sel.type =="Text" || sel.type == "None") && rng !=null){
					if(rng.text.length > 0)        selected = rng.text;
			}
	}        
	return selected;
}

function set_textarea(str)		//应用文本
{
	var r=document.selection.createRange();
	if(r.text==''){
		document.all ? insertAtCaret(main_editer, str) : main_editer.value += str;
	}else{
		r.text=str;
	}
	newUndo(document.getElementById("main_editer").value);
	previw(0);
}
function show_win(win_name,flag){
	if(flag==0){
		if(document.all[win_name].style.display==''){
			document.all[win_name].style.display='none';
		}else{
			document.all[win_name].style.display='';
		}
	}else if(flag==1){
		document.all[win_name].style.display='';
	}else if(flag==2){
		document.all[win_name].style.display='none';
	}
}
function set_font()		//设置字体
{
	var s = get_textarea();
	if(selFont.selectedIndex!=0){
	s = '[ftf=' + selFont.options[selFont.selectedIndex].value + ']'+ s + '[/ft]';
	}
	selFont.selectedIndex=0;
	set_textarea(s);
}
function set_fontsize()		//设置字体大小
{
	var s = get_textarea();
	if(selFontSize.selectedIndex!=0){
		s = '[fts=' + selFontSize.options[selFontSize.selectedIndex].value + ']'+ s + '[/ft]';
	}
	selFontSize.selectedIndex=0;
	set_textarea(s);
}
function be_bold()	//加粗
{
	var s = get_textarea();
	s = '[B]'+ s + '[/B]';
	set_textarea(s);
}
function be_italicize()	//加斜体
{
	var s = get_textarea();
	s = '[I]'+ s + '[/I]';
	set_textarea(s);
}
function be_underline()	//加下划线
{
	var s = get_textarea();
	s = '[U]'+ s + '[/U]';
	set_textarea(s);
}
function set_color(s_col,s_col2,flag,s)	//设置颜色
{
	if(s=='') s = get_textarea();
	if(flag){
		s = '[ffg,'+s_col+','+s_col2+']'+s+'[/ft]'
	}else{
		s = '[ftc='+ s_col + ']' + s + '[/ft]';
	}
	set_textarea(s);
}
function be_url()	//设置超级链接
{
	var s = get_textarea();
	s = '[url='+ s + ']'+ s + '[/url]';
	set_textarea(s);
}
function be_email()	//设置超级链接
{
	var s = get_textarea();
	s = '[email]'+ s + '[/email]';
	set_textarea(s);
}
function set_face(s_face)	//设置表情
{
	var s = get_textarea();
	s = s + '[em]' + s_face + '[/em]';
	set_textarea(s);
}
function be_image(s)	//设置图片
{
	if(s=='') s = get_textarea();
	s = '[img]'+ s + '[/img]';
	set_textarea(s);
}
function be_center()	//置中
{
	var s = get_textarea();
	s = '[M]'+ s + '[/M]';
	set_textarea(s);
}
function be_right()	//置右
{
	var s = get_textarea();
	s = '[R]'+ s + '[/R]';
	set_textarea(s);
}
function set_flash()		//设置flash
{
	var s = get_textarea();
	var wfh,wfw,wfl,wft;
	if(win_flash_bg.checked){
		if(win_flash_autosize.checked){
			wfw=350;
			wfh=300;
		}else{
			wfw=win_flash_width.value;
			wfh=win_flash_height.value;
		}
		wfl=win_flash_left.value;
		wft=win_flash_top.value;
		s='[flasht,' + wfw + ',' + wfh + ',' + wfl + ',' + wft + ']' + win_flash_url.value + '[/flasht]'
	}else{
		if(win_flash_autosize.checked){
			s='[flash]' + win_flash_url.value + '[/flash]'
		}else{
			wfw=win_flash_width.value;
			wfh=win_flash_height.value;
			s='[flash,' + wfw + ',' + wfh + ']' + win_flash_url.value + '[/flash]'
		}
	}
	set_textarea(s);
	show_win("win_flash",2);
}
function set_video()		//设置video
{
	var s = get_textarea();
	var wvh,wvw,wvap,wvar
	if(win_video_autoplay.checked){wvap='true';}else{wvap='false';}
	if(win_video_autoreplay.checked){wvar='true';}else{wvar='false';}
	if(win_video_autosize.checked){
		s='[video,'+ wvar +','+ wvap +']' + win_video_url.value + '[/video]'
	}else{
		wvw=win_video_width.value;
		wvh=win_video_height.value;
		s='[video,'+ wvw +','+ wvh +','+ wvar +','+ wvap +']' + win_video_url.value + '[/video]'
	}
	set_textarea(s);
	show_win("win_video",2);
}
function set_audio()		//设置audio
{
	var s = get_textarea();
	var waar,waap,wah
	if(win_audio_autoplay.checked){waap='true';}else{waap='false';}
	if(win_audio_autoreplay.checked){waar='true';}else{waar='false';}
	if(win_audio_hide.checked){wah='true';}else{wah='false';}
	s='[audio,'+ waar +','+ waap +','+ wah +']' + win_audio_url.value + '[/audio]'
	set_textarea(s);
	show_win("win_audio",2);
}
function set_rainbow(){	//设置彩虹文字
	
	var wr_text = win_rainbow_text.value;
	var wr_code,wr_rgb,r,g,b,i,j,istep
	var wr_rgb1,wr_rgb2,r1,g1,b1,r2,g2,b2
	
	r1=g1=b1=r2=g2=b2=0;
	r=0;g=0;b=0;istep=0;
	wr_code='';
	
	if(wr_text==''){
		show_win('win_rainbow',0);
		return;
	}
	
	if(win_rainbow_style1.checked){
		istep=40;
		r=255;i=1;j=0;
		do{
			if(wr_text.charCodeAt(j) != 32){
				if(g+istep<256){
					if(i==1)g+=istep;
				}else if(i==1){
					i=2;g=255;
				}
				if(r-istep>-1){
					if(i==2)r-=istep;
				}else if(i==2){
					i=3;r=0;
				}
				if(b+istep<256){
					if(i==3)b+=istep;
				}else if(i==3){
					i=4;b=255;
				}
				if(g-istep>-1){
					if(i==4)g-=istep;
				}else if(i==4){
					i=5;g=0;
				}
				if(r+istep<256){
					if(i==5)r+=istep;
				}else if(i==5){
					i=6;r=255;
				}
				if(b-istep>-1){
					if(i==6)b-=istep;
				}else if(i==6){
					i=1;b=0;
				}
				wr_rgb='';
				wr_rgb+=parseInt(r).toString(16).length==1 ? 0+parseInt(r).toString(16) : parseInt(r).toString(16);
				wr_rgb+=parseInt(g).toString(16).length==1 ? 0+parseInt(g).toString(16) : parseInt(g).toString(16);
				wr_rgb+=parseInt(b).toString(16).length==1 ? 0+parseInt(b).toString(16) : parseInt(b).toString(16);
				wr_rgb=wr_rgb.toUpperCase();
				wr_code+='[ftc='+ wr_rgb +']'+wr_text.charAt(j)+'[/ft]';
			}else{
				wr_code+=wr_text.charAt(j);
			}
			j++;
		}while (j<wr_text.length);
	}else if(win_rainbow_style2.checked){
		istep=255/wr_text.length;
		for(i=1;i<wr_text.length+1;i++){
			if(wr_text.charCodeAt(i-1)!=32){
				r+=istep;
				g+=istep;
				b+=istep;
				if(r>255) r=255;
				if(g>255) g=255;
				if(b>255) b=255;
				wr_rgb='';
				wr_rgb+=parseInt(r).toString(16).length==1 ? 0+parseInt(r).toString(16) : parseInt(r).toString(16);
				wr_rgb+=parseInt(g).toString(16).length==1 ? 0+parseInt(g).toString(16) : parseInt(g).toString(16);
				wr_rgb+=parseInt(b).toString(16).length==1 ? 0+parseInt(b).toString(16) : parseInt(b).toString(16);
				wr_rgb=wr_rgb.toUpperCase();
				wr_code+='[ftc='+ wr_rgb +']'+wr_text.charAt(i-1)+'[/ft]';
			}else{
				wr_code+=wr_text.charAt(i-1);
			}
		}
	}else if(win_rainbow_style3.checked){
		istep=255/wr_text.length;
		for(i=1;i<wr_text.length+1;i++){
			if(wr_text.charCodeAt(i-1)!=32){
				r+=istep;
				g=29;
				b=36;
				if(r>255) r=255;
				if(g>255) g=255;
				if(b>255) b=255;
				wr_rgb='';
				wr_rgb+=parseInt(r).toString(16).length==1 ? 0+parseInt(r).toString(16) : parseInt(r).toString(16);
				wr_rgb+=parseInt(g).toString(16).length==1 ? 0+parseInt(g).toString(16) : parseInt(g).toString(16);
				wr_rgb+=parseInt(b).toString(16).length==1 ? 0+parseInt(b).toString(16) : parseInt(b).toString(16);
				wr_rgb=wr_rgb.toUpperCase();
				wr_code+='[ftc='+ wr_rgb +']'+wr_text.charAt(i-1)+'[/ft]';
			}else{
				wr_code+=wr_text.charAt(i-1);
			}
		}
	}else if(win_rainbow_style4.checked){
		istep=255/wr_text.length;
		for(i=1;i<wr_text.length+1;i++){
			if(wr_text.charCodeAt(i-1)!=32){
				r=0;
				g=174;
				b+=istep;
				if(r>255) r=255;
				if(g>255) g=255;
				if(b>255) b=255;
				wr_rgb='';
				wr_rgb+=parseInt(r).toString(16).length==1 ? 0+parseInt(r).toString(16) : parseInt(r).toString(16);
				wr_rgb+=parseInt(g).toString(16).length==1 ? 0+parseInt(g).toString(16) : parseInt(g).toString(16);
				wr_rgb+=parseInt(255-b).toString(16).length==1 ? 0+parseInt(255-b).toString(16) : parseInt(255-b).toString(16);
				wr_rgb=wr_rgb.toUpperCase();
				wr_code+='[ftc='+ wr_rgb +']'+wr_text.charAt(i-1)+'[/ft]';
			}else{
				wr_code+=wr_text.charAt(i-1);
			}
		}
	}else if(win_rainbow_style5.checked){
		if(win_rainbow_A.value.length!=6||win_rainbow_B.value.length!=6){
			alert('颜色代码错误！');
			return;
		}else{
			wr_rgb1=win_rainbow_A.value;
			wr_rgb2=win_rainbow_B.value;
			r1=parseInt("0x"+String(wr_rgb1).substr(0,2));
			g1=parseInt("0x"+String(wr_rgb1).substr(2,2));
			b1=parseInt("0x"+String(wr_rgb1).substr(4,2));
			r2=parseInt("0x"+String(wr_rgb2).substr(0,2));
			g2=parseInt("0x"+String(wr_rgb2).substr(2,2));
			b2=parseInt("0x"+String(wr_rgb2).substr(4,2));;
			if(isNaN(r1)) r1=0
			if(isNaN(g1)) g1=0
			if(isNaN(b1)) b1=0
			if(isNaN(r2)) r2=0
			if(isNaN(g2)) g2=0
			if(isNaN(b2)) b2=0
			istep=255/wr_text.length;
			for(i=1;i<wr_text.length+1;i++){
				if(wr_text.charCodeAt(i-1)!=32){
					wr_rgb='';
					wr_rgb+=parseInt(r1).toString(16).length==1 ? 0+parseInt(r1).toString(16) : parseInt(r1).toString(16);
					wr_rgb+=parseInt(g1).toString(16).length==1 ? 0+parseInt(g1).toString(16) : parseInt(g1).toString(16);
					wr_rgb+=parseInt(b1).toString(16).length==1 ? 0+parseInt(b1).toString(16) : parseInt(b1).toString(16);
					wr_rgb=wr_rgb.toUpperCase();
					wr_code+='[ftc='+ wr_rgb +']'+wr_text.charAt(i-1)+'[/ft]';
					r1>r2?r1-=istep:r1+=istep;
					g1>g2?g1-=istep:g1+=istep;
					b1>b2?b1-=istep:b1+=istep;
					if(r1>255) r1=255;
					if(r1<0) r1=0;
					if(g1>255) g1=255;
					if(g1<0) g1=0;
					if(b1>255) b1=255;
					if(b1<0) b1=0;
				}else{
				wr_code+=wr_text.charAt(i-1);
				}
			}
		}
	}
	set_textarea(wr_code);
	show_win("win_rainbow",0);
}

function be_marquee()	//滚动文字
{
	var s = get_textarea();
	s = '[marque]'+ s + '[/marque]';
	set_textarea(s);
}

var me_value;
function previw(flag) {
	if(flag==1||auto_preview.checked){
		if(me_value!=main_editer.value){
			pr.innerHTML=ubbReplace(main_editer.value,'all');
			me_value=main_editer.value;
			move_all_div();
		}
	}
}
//用来移动浮动FLASH，使之能正确显示在相对位置
function move_all_div()
{
	//try{
	var tmp_adv=0;
	var tmp_x=0;
	var tmp_y=0;
	var int_x=0,int_y=0;
	if(adv_mode!=undefined){tmp_adv=adv_mode;}else{tmp_adv=0}
	if(flas_div_x!=undefined){tmp_x=flas_div_x;}else{tmp_x=200}
	if(flas_div_y!=undefined){tmp_y=flas_div_y;}else{tmp_y=320}
	if(tmp_adv!=1){
		var arrDiv = document.getElementsByTagName("EMBED");
		for(var i=0; i<arrDiv.length; i++){
			int_x=0;
			int_y=0;
			if(arrDiv[i].id=='preFlash'){
				if(isNaN(parseInt(arrDiv[i].style.top,10))){int_y=0;}else{int_x=parseInt(arrDiv[i].style.top,10);}
				if(isNaN(parseInt(arrDiv[i].style.left,10))){int_x=0;}else{int_x=parseInt(arrDiv[i].style.left,10);}
				if(isNaN(int_x)){int_x=0};
				if(isNaN(int_y)){int_y=0};
				int_x+=tmp_x;
				int_y+=tmp_y;
				arrDiv[i].style.top=int_y+"px";
				arrDiv[i].style.left=int_x+"px";
			}
			//arrDiv[i].style.left=parseInt(arrDiv[i].style.top)+280+"px"
			//arrDiv[i].style.left=(document.documentElement.scrollWidth-parseInt(arrDiv[i].width))/2+"px"
		}
	}
	//}catch(e){}
}
//写图片集的代码
function write_moreimage_list(){
	var s;
	s='';
	//Cyworld的像素画，总量 496 张
	s+="<option name ='Cyworld' value='496' selected>Cyworld 像素画</option>";
	//从网上手机的分隔栏 728 张
	s+="<option name ='fgx' value='728'>各种分隔线</option>";
	//精美的像素画
	s+="<option name ='pix01' value='200'>精美的像素画</option>";
	//糖提供的图片仓库的GIF
	s+="<option name ='pix02' value='336'>挂件1(by糖)</option>";
	document.write(s);
}
//图片集翻页
function win_moreimage_page(ipage){
	var pagenum = 20;
	var s,t;
	
	var maxIndex = parseInt(win_moreimage_list.options[win_moreimage_list.selectedIndex].value);
	var path = win_moreimage_list.options[win_moreimage_list.selectedIndex].name;
	
	if(ipage<1) ipage=1;
	if((ipage-1)*pagenum>maxIndex){
		if(maxIndex % pagenum==0){ipage=maxIndex/pagenum;}else{ipage=parseInt(maxIndex/pagenum+1);}
	}
	
	s='';
	
	s+="<img src='sbb_Previous2.gif' onClick='win_moreimage_page("+(ipage-5)+");' alt='前 5 页'> "
	s+="<img src='sbb_Previous.gif' onClick='win_moreimage_page("+(ipage-1)+");' alt='前一页'> "
	for(var i=ipage-2;i<ipage+3;i++){
		if(i>0&&(i-1)*pagenum<maxIndex){
			if(i==ipage){
				s+="<B>"+i+"</B> "
			}else{
				s+="<a href='#' onClick='win_moreimage_page("+i+")';>" + i + "</a> ";
			}
		}
	}
	s+="<img src='sbb_next.gif' onClick='win_moreimage_page("+(ipage+1)+");' alt='下一页'> "
	s+="<img src='sbb_next2.gif' onClick='win_moreimage_page("+(ipage+5)+");' alt='下 5 页'> "
	s+="<br>";
	
	for(var i=(ipage-1)*pagenum+1;i<ipage*pagenum+1;i++){
		if(i<maxIndex+1){
			t=i.toString();
			if(t.length==1) t="00"+t;
			if(t.length==2) t="0"+t;
			s+="<img src='"+path+"/img"+t+".gif' class='moreimage' onClick='be_moreimage(this.src);'>";
		}
	}
	win_moreimage_bar.innerHTML = s;
}
function be_moreimage(str){
	be_image(str);
	show_win("win_moreimage",0);
}

///FLASH集代码.......................
function write_moreflash_list(){
	var s;
	s='';
	//来自21CN的FLASH漂浮
	s+="<option name ='21cn' value='209' selected>漂浮(21cn)</option>";
	s+="<option name ='kiss'  value='18'>漂浮(18)</option>";
	s+="<option name ='flash4'  value='42'>漂浮(42I)</option>";
	s+="<option name ='flash5'  value='42'>漂浮(42II)</option>";
	s+="<option name ='flash3'  value='49'>漂浮(杂)</option>";
	document.write(s);
}
//FLASH集翻页
function win_moreflash_page(ipage){
	var pagenum = 1;
	var s,t;
	
	var maxIndex = parseInt(win_moreflash_list.options[win_moreflash_list.selectedIndex].value);
	var path = win_moreflash_list.options[win_moreflash_list.selectedIndex].name;
	
	if(ipage<1) ipage=1;
	if((ipage-1)*pagenum>maxIndex){
		if(maxIndex % pagenum==0){ipage=maxIndex/pagenum;}else{ipage=parseInt(maxIndex/pagenum+1);}
	}
	
	s='';
	
	s+="<img src='sbb_Previous2.gif' onClick='win_moreflash_page("+(ipage-5)+");' alt='前第 5 个'> "
	s+="<img src='sbb_Previous.gif' onClick='win_moreflash_page("+(ipage-1)+");' alt='前一个'> "
	s+=" "+ ipage +" ";
	s+="<img src='sbb_next.gif' onClick='win_moreflash_page("+(ipage+1)+");' alt='下一个'> "
	s+="<img src='sbb_next2.gif' onClick='win_moreflash_page("+(ipage+5)+");' alt='下第 5 个'><BR>"
	for(var i=ipage-49;i<ipage+50;i++){
		if(i>0&&(i-1)*pagenum<maxIndex){
			if(i==ipage){
				s+="<B>"+i+"</B> "
			}else{
				s+="<a href='javascript:win_moreflash_page("+i+")';>" + i + "</a> ";
			}
		}
	}
	s+="<br>";
	s+="　　<font color='#FFFFFF' style='background-color:#000000;' onMousemove='thePreFlashDiv.style.backgroundColor=\"#000000\";'> 黑 </font>　<font color='#000000' style='background-color:#FFFFFF;' onMousemove='thePreFlashDiv.style.backgroundColor=\"#FFFFFF\";'> 白 </font><br>";
	
	for(var i=(ipage-1)*pagenum+1;i<ipage*pagenum+1;i++){
		if(i<maxIndex+1){
			t=i.toString();
			if(t.length==1) t="00"+t;
			if(t.length==2) t="0"+t;
			s+="<div id='thePreFlashDiv' style='background-color:#000000;' width='500' height='400'><EMBED id='thePreFlash'  width='500' height='400' allowscriptaccess='never' wmode='transparent' menu='false' src='"+path+"/flash"+t+".swf'  type='application/octet-stream' quality='high' /></div>"
			//s+="<img src='"+path+"/img"+t+".gif' class='moreflash' onClick='be_moreflash(this.src);'>";
		}
	}
	s+="<br><input type=button class='inputbutton' value='提交' onclick='be_moreflash(thePreFlash.src);'>"
	win_moreflash_bar.innerHTML = s;
}
function be_moreflash(str){
	set_textarea('[flasht,' + 640 + ',' + 480 + ',' + 0 + ',' + 0 + ']http://'+ domain + "/" + str + '[/flasht]');
	show_win("win_moreflash",0);
}


///符号集代码.......................
function write_moretext_list(){
	var s;
	s='';
	s+="<option value='。，、；：？！…—·ˉˇ¨‘’“”々～‖∶＂＇｀｜〃〔〕〈〉《》「」『』．〖〗【】（）［］｛｝' selected>标点符号集</option>";
	s+="<option value='αβγδεζηθικλμνξοπρστυφχψωΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ'>希腊字母</option>";
	s+="<option value='абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'>俄文</option>";
	s+="<option value='ㄅㄉㄓㄚㄞㄢㄦㄆㄊㄍㄐㄔㄗㄧㄛㄟㄣㄇㄋㄎㄑㄕㄘㄨㄜㄠㄤㄈㄏㄒㄖㄙㄩㄝㄡㄥ'>注音符号</option>";
	s+="<option value='āáǎàōóǒòêēéěèīíǐìūúǔùǖǘǚǜü'>拼音</option>";
	s+="<option value='ぁぃぅぇぉかきくけこんさしすせそたちつってとゐなにぬねのはひふへほゑまみむめもゃゅょゎをあいうえおがぎぐげござじずぜぞだぢづでどぱぴぷぺぽばびぶべぼらりるれろやゆよわ'>日文平假名</option>";
	s+="<option value='ァィゥヴェォカヵキクケヶコサシスセソタチツッテトヰンナニヌネノハヒフヘホヱマミムメモャュョヮヲアイウエオガギグゲゴザジズゼゾダヂヅデドパピプペポバビブベボラリルレロヤユヨワ'>日文片假名</option>";
	s+="<option value='ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩①②③④⑤⑥⑦⑧⑨⑩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇'>数字序号</option>";
	s+="<option value='≈≡≠＝≤≥＜＞≮≯∷±＋－×÷／∫∮∝∞∧∨∑∏∪∩∈∵∴⊥∥∠⌒⊙≌∽√'>数学符号</option>";
	s+="<option value='┌┍┎┏┐┑┒┓─┄┈├┝┞┟┠┡┢┣│┆┊┬┭┮┯┰┱┲┳┼┽┾┿╀╁╂╃└┕┖┗┘┙┚┛━┅┉┤┥┦┧┨┩┪┫┃┇┋┴┵┶┷┸┹┺┻╄╅╆╇╈╉╊╋≡ ╝╚╔ ╗╬ ═ ╓ ╩'>制表符</option>";
	s+="<option value='§№☆★○●◎◇◆□■△▲▼▽※→←↑↓〓＃＆＠＼＾＿￣'>特殊符号</option>";
	s+="<option value='▁▂▃▄▅▆▇█▉▊▋▌▍▎▏▓▔▕◢◣◤◥☉♀♂'>方块符号</option>";
	document.write(s);
}
//符号集显示
function win_moretext_page(){
	var s='';
	var sText = win_moretext_list.options[win_moretext_list.selectedIndex].value;
	s+="<table cellpadding='0' cellspacing='0'><tr></tr>";
	for(var i=0;i<sText.length;i++){
		if(i%12==0) s+="</tr><tr>"
		s+="<td width=30 align='center' valign='middle' class='border_color' style='height: 30px;font-size: 12px;position: static;font-family: Verdana, Arial;cursor: hand;' onMouseOver='this.style.fontSize=\"18px\";' onMouseOut='this.style.fontSize=\"12px\";' onClick='set_textarea(this.innerHTML);'>"+sText.substr(i,1)+"</td>";
	}
	s+='</tr></table>';
	win_moretext_bar.innerHTML = s;
}

//去除代码
function be_nocode(sExp)
{
	var s = get_textarea();
	if(s==''){
		alert('请选中要去除代码的文字！');
		return;
	}
	var rExp=new RegExp(sExp,"g");
	set_textarea(s.replace(rExp,""));
}

//撤销功能
var arrUndo = new Array();
function newUndo(str){
	if(str==undefined){str='';}
	if(str!=arrUndo[arrUndo.length-1]){arrUndo.push(str);}
}
function getUndo(obj){
	if(arrUndo.length>0){
		arrUndo.pop();
		obj.value = arrUndo[arrUndo.length-1]==undefined?'':arrUndo[arrUndo.length-1];
		previw(0);
	}
}

//从腾讯QQ空间上要来的代码，稍作更改
//**********************************
//**********************************
//**********************************
//**********************************
//**********************************
//**********************************
//**********************************
var imgcacheDomain='imgcache.qq.com';
var isIE=1;
	
function ubbReplace(srcString, replacewhat) {
	
	srcString =	Text2HTML(entityReplace(srcString));
	srcString = srcString.replace(/([ -!:-@\[-`\{-~、。·ˉˇ¨〃々～‖…‘’“”〔〕〈〉！＂＃￥％＆＇（）＊＋，－．／０１２３４５６７８９：；＜＝＞？＠ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ［＼］＾＿｀ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ｛｜｝ˊˋ﹐﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜﹝﹞﹟﹠﹡﹢﹣﹤﹥﹦﹨﹩﹪﹫]{18})/g,"$1<wbr>")
	//表情
	if(/(all)|(face)/.test(replacewhat))
		srcString = srcString.replace(/\[em\]e(\d{1,3})\[\/em\]/g, "<img src='http://"+domain+"/images/em/e$1.gif' hspace='3' vspace='3' align='absmiddle'><wbr>");

	//超链接
	if(/(all)|(anchor)/.test(replacewhat))
		srcString = srcString.replace(/\[url=(http[^\]\"\']+)]([^\[]+)\[\/url\]/g, "<a href='$1' target='_blank'>$2</a><wbr>").replace(/\[url=([^\]\"\']+)](http[^\[]+)\[\/url\]/g, "<a href='$2' target='_blank'>$1</a><wbr>").replace(/\[url]([^\[\"\']+)\[\/url\]/g, "<a href='$1' target='_blank'>$1</a><wbr>");

	if(/all/.test(replacewhat))
		srcString = srcString.replace(/\[ppk_url=(http[^\]\"\']+)]([^\[]+)\[\/ppk_url\]/g, "<a href='$1' target='_blank' style='color:#EF6EA8'>$2</a><wbr>").replace(/\[url=([^\]\"\']+)](http[^\[]+)\[\/url\]/g, "<a href='$2' target='_blank'>$1</a><wbr>").replace(/\[url]([^\[\"\']+)\[\/url\]/g, "<a href='$1' target='_blank'>$1</a><wbr>");

	//图片
	if(/(all)|(image)/.test(replacewhat))	{
		srcString=srcString.replace(/\[img\][^\[]+((&#)|(")|(&quot;)|(my22)|(isme)|(r1\.cn)|(139\.com)|(eex\.cn)|(q-zone)|(qzone)|(cgi_client_entry)|([\'\"]))[^\[]+\[\/img\]/i, "[非法图片链接]");
 		var w = /sign/.test(replacewhat)?"670,160":"670,999";
        if (/imageLimit/.test(replacewhat)) {
        	var limitCount=0
			var regstr = /\[img\]http(.[^\]\'\"]*)\[\/img\]/i;		
        	while (regstr.exec(srcString) != null) {
        		if (limitCount>=1)
					srcString = srcString.replace(regstr, " <a href='http$1' target='_blank'>[图片链接]<a> ");
 				  else
 					srcString = srcString.replace(regstr, "<a href='http$1' target='_blank'><img onload='picsize(this,"+w+")'  src='about:blank' onerror=\"regImg(this,'http$1')\" border='0'><a> ");
	       		limitCount++
        	}
        }
		else 
		srcString = srcString.replace(/\[img\]http(.[^\]\'\"]*)\[\/img\]/ig, "<a href='http$1' target='_blank'><img onload='picsize(this,"+w+")'  src='about:blank' onerror=\"regImg(this,'http$1')\" border='0'><a> ");
	}
	 //flash
	if(/(all)|(flash)/.test(replacewhat))
	{
		var regstr = new RegExp("\\[flash,([0-9]{1,3}),([0-9]{1,3})\\]([\u2E80-\u9FFF0-9a-zA-Z&#=;.:_\\-?~\%/+;\/]{1,})\\[\\/flash\\]", "g");
		srcString = srcString.replace(regstr, "<EMBED allowscriptaccess='never' menu='false' src='$3' width='$1' height='$2'/><wbr>");
		var regstr = new RegExp("\\[flasht,([0-9]{1,4}),([0-9]{1,4}),([0-9]{1,4}),([0-9]{1,4})\\]([\u2E80-\u9FFF0-9a-zA-Z&#=;.:_\\-?~\%/+\/]{1,})\\[\\/flasht\\]", "g");
		//srcString = srcString.replace(regstr, "<EMBED allowscriptaccess='never' wmode='transparent' menu='false' src='$5' width='$1' height='$2' type='application/octet-stream' wmode='transparent' quality='high' style='position: absolute; left: $3; top: $4'/><wbr>");
		//将原来的绝对位置换成相对位置。
		//srcString = srcString.replace(regstr, "<div name='fl' style='position: absolute;left: $3; top: $4;' width='$1' height='$2'><EMBED allowscriptaccess='never' wmode='transparent' menu='false' src='$5' width='$1' height='$2' type='application/octet-stream' wmode='transparent' quality='high'/></div><wbr>");
		srcString = srcString.replace(regstr, "<EMBED id='preFlash' allowscriptaccess='never' wmode='transparent' menu='false' src='$5' width='$1' height='$2' type='application/octet-stream' wmode='transparent' quality='high' style='position: absolute;left: $3; top: $4;' width='$1' height='$2' /><wbr>");

	  var regstr = new RegExp("\\[flash\\]([\u2E80-\u9FFF0-9a-zA-Z&#=;.:_\\-?&~\%/+\/]{1,})\\[\\/flash\\]", "g");
		srcString = srcString.replace(regstr, "<EMBED allowscriptaccess='never' menu='false' src='$1'/><wbr>");
	}
	 //video
	if(/(all)|(video)/.test(replacewhat))
	{
		var regstr = new RegExp("\\[video,([0-9]{1,3}),([0-9]{1,3}),([truefals]{4,5}),([truefals]{4,5})\\]([\u2E80-\u9FFF0-9a-zA-Z&#=;.:_\\-?\%/+\/]{1,})\\[\\/video\\]", "g");
		srcString = srcString.replace(regstr, "<EMBED allowscriptaccess='never' enableContextMenu='False' src='$5' width='$1' height='$2' loop = '$3' autostart='$4' showstatusbar='1'/><wbr>");
		var regstr = new RegExp("\\[video,([truefals]{4,5}),([truefals]{4,5})\\]([\u2E80-\u9FFF0-9a-zA-Z&#=;.:_\\-?\%/+\/]{1,})\\[\\/video\\]", "g");
		srcString = srcString.replace(regstr, "<EMBED allowscriptaccess='never' enableContextMenu='False' src='$3' loop = '$1' autostart='$2' showstatusbar='1'/><wbr>");
	}

	//quote
	if(/(all)|(quote)/.test(replacewhat)){
			var srcString = srcString.replace(/\[quote=([^\]]*)\]/g,"\x00$1<br />\x02").replace(/\[\/quote\]/g,"\x01").replace(/\[quote\]/g,"\x00");
			var maxQuote = 2;
			for(var i=0;i<maxQuote;i++)
				srcString = srcString.replace(/\x00([^\x00\x01\x02]*)\x02?([^\x00\x01\x02]*)\x01/g, function(a,b,c){
					if(c=="")//alert("["+b+"]"+"\n"+"["+c+"]");
						return "<div class=\"mode_table_quote\"><span class=\"mode_table_quote_title\">引用内容：</span><br/>"+b+"</div>";
					else
						return "<div class=\"mode_table_quote\"><span class=\"mode_table_quote_title\">"+b+"引用内容：</span><br/>"+c+"</div>";
				});
			srcString=srcString.replace(/[\x00\x02\x01]/g,"");
	}
	//font
	var fontCount = 0;var a;

	//glow
	if(/(all\b)|(glow\b)/.test(replacewhat) && isIE){
		var regstr = /\[ffg,([a-zA-z#0-9]{1,10}),([a-zA-z&#=;0-9]{1,10})\]/g
		if(a = srcString.match(regstr)){
			fontCount+=a.length;
			srcString = srcString.replace(regstr, '<font style="filter: glow(color=$1,strength=3); height:10px; color:$2; padding:1px">');
		}
	}else	if(/glow_limit/.test(replacewhat) && isIE){
		var regstr = /\[ffg,([a-zA-z#0-9]{1,10}),([a-zA-z&#=;0-9]{1,10})\](.{1,30})\[\/ft\]/
		if(a = srcString.match(regstr)){
			if(!/\[f/.test(a[3]))
				srcString = srcString.replace(regstr, '<font style="filter: glow(color=$1,strength=3); height:10px; color:$2; padding:1px">$3</font>');
		}
	}

	//glow For msg
	if(/(all\b)|(glow_msg\b)/.test(replacewhat) && isIE){
		srcString = srcString.replace(/\[cx1\]([^\r]*?)\[\/cx1\]/g, '<span class="title_cx1">$1</span>');
		srcString = srcString.replace(/\[cx2\]([^\r]*?)\[\/cx2\]/g, '<span class="title_cx2">$1</span>');
	}

	var regstr = /\[ffg,([a-zA-z#0-9]{1,10}),([a-zA-z&#=;0-9]{1,10})\]/g
	if(a = srcString.match(regstr)){
		fontCount+=a.length;
		srcString = srcString.replace(regstr, "<font color='$1'><wbr>");
	}
	
	regstr = new RegExp("\\[ft=([^\\]]+)\\]", "g");
	if(a = srcString.match(regstr)){
		fontCount+=a.length;
		srcString = srcString.replace(regstr, function(){
			var s = arguments[1].split(",");
			var color = s[0]?' color='+s[0]:'';
			var size = s[1]?' size='+s[1]:'';		
			var face = s[2]?' face='+s[2]:'';
			return '<font'+color+size+face+' style="line-height:1.3em">'
		});
	}
	
	// color
	var regstr = new RegExp("\\[ftc=([a-zA-z#0-9]{1,10})\\]", "g");
	if(a = srcString.match(regstr)){
		fontCount+=a.length;
		srcString = srcString.replace(regstr, "<font color='$1'><wbr>");
	}
	// size
	var regstr = new RegExp("\\[fts=([1-6]{1,1})\\]", "g");
	if(a = srcString.match(regstr)){
		fontCount+=a.length;
		srcString = srcString.replace(regstr, "<font size='$1'  style='line-height:1.5em'><wbr>");
	}
	// font familly
	var regstr = new RegExp("\\[ftf=([\u4E00-\u9FFFa-zA-Z_0-9\,&#=;\\ ]{1,})\\]", "g");
	if(a = srcString.match(regstr)){
		fontCount+=a.length;
		srcString = srcString.replace(regstr, "<font face='$1'><wbr>");
	}


	var regstr = /\[\/ft\]/g;
	if(a = srcString.match(regstr)){
		fontCount-=a.length;
		srcString = srcString.replace(regstr, "</font><wbr>");
	}
	if(fontCount>0){
		srcString += (new Array(fontCount+1)).join("</font><wbr>");
	}

	//email
	if(/(all)|(email)/.test(replacewhat))
	{
		var regstr = new RegExp("\\[email\\]([0-9a-zA-Z&#=;._@\\@-]{1,})\\[\\/email\\]", "g");
		srcString = srcString.replace(regstr, "<a href='mailto:$1' target='_blank'>$1</a><wbr>");
		var regstr = new RegExp("\\[email=([\u4E00-\u9FFFa-zA-Z&#=;\\ ,.]{1,})\\]([0-9a-zA-Z&#=;._@\\@-]{1,})\\[\\/email\\]", "g");
		srcString = srcString.replace(regstr, "<a href='mailto:$2' target='_blank'>$1</a><wbr>");
	}

	//<j> replace font style

		var regstr = new RegExp("\\[B\\]", "g");
		srcString = srcString.replace(regstr, "<B><wbr>");

		var regstr = new RegExp("\\[\\/B\\]", "g");
		srcString = srcString.replace(regstr, "</B><wbr>");

		var regstr = new RegExp("\\[M\\]", "g");
		srcString = srcString.replace(regstr, "<center>");

		var regstr = new RegExp("\\[\\/M\\]", "g");
		srcString = srcString.replace(regstr, "</center>");

		var regstr = new RegExp("\\[R\\]", "g");
		srcString = srcString.replace(regstr, "<center style='text-align: right'>");

		var regstr = new RegExp("\\[\\/R\\]", "g");
		srcString = srcString.replace(regstr, "</center>");

		var regstr = new RegExp("\\[U\\]", "g");
		srcString = srcString.replace(regstr, "<U><wbr>");

		var regstr = new RegExp("\\[\\/U\\]", "g");
		srcString = srcString.replace(regstr, "</U><wbr>");

		var regstr = new RegExp("\\[I\\]", "g");
		srcString = srcString.replace(regstr, "<I><wbr>");

		var regstr = new RegExp("\\[\\/I\\]", "g");
		srcString = srcString.replace(regstr, "</I><wbr>");

	//marquee
	if(/(all)|(marquee)/.test(replacewhat))
	{
		var regstr = new RegExp("\\[marque\\]", "g");
		srcString = srcString.replace(regstr, "<marquee><wbr>");

		var regstr = new RegExp("\\[\\/marque\\]", "g");
		srcString = srcString.replace(regstr, "</marquee><wbr>");
	}

	if(/(all)|(audio)/.test(replacewhat)){
    //audio For New Ubb
	srcString=srcString.replace(/\[audio,(true|false),(true|false)(\]|,true\]|,false\])([\u2E80-\u9FFF0-9a-zA-Z&#=;.:_\-?\%/+\/]{1,})\[\/audio\]/ig,function(a,a1,a2,a3,a4,b){return '<EMBED allowscriptaccess="never" src="'+a4+'" loop="'+a1+'" autostart="'+a2+'"'+((a3==',true]')?' height="0" width="0"':'')+' showstatusbar="1" /><wbr>';});
	}

	return srcString;
}

function entityReplace(str)
{
	return str.replace(/&#38;?/g,"&amp;").replace(/&#(\d+);?/g,function(a,b){return String.fromCharCode(b)}).replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,"\"").replace(/&nbsp;/g," ").replace(/&#13;/g,"\n").replace(/(&#10;)|(&#x\w*;)/g,"").replace(/&amp;/g,"&");
}
function Text2HTML(str){
	return str.replace(/\x0a/g,"<br>").replace(/ /g,"&nbsp;")
}

function picsize(obj,MaxWidth,MaxHeight){
	obj.onload=null;
	img=new Image();
	img.src=obj.src;
	if (img.width>MaxWidth && img.height>MaxHeight){
		if (img.width/img.height>MaxWidth/MaxHeight) {
			obj.height=MaxWidth*img.height/img.width;
			obj.width=MaxWidth;
		}else {
			obj.width=MaxHeight*img.width/img.height;
			obj.height=MaxHeight;
		}
	}else if (img.width>MaxWidth) {
		obj.height=MaxWidth*img.height/img.width;
		obj.width=MaxWidth;
	}else if (img.height>MaxHeight) {
		obj.width=MaxHeight*img.width/img.height;
		obj.height=MaxHeight;
	}else{
		obj.width=img.width;
		obj.height=img.height;
	}
}

// 以 <img src="about:blank" onerror=regImg(this,"http://...gif") /> 的方式定义图片可以避
// 免重复加载和图片堵塞页面问题。建议在发现图片下载造成页面延迟的情形下使用。
function regImg(e,src)
{
	if(!window.imgHash) window.imgHash = new Object();
	if(src.indexOf("[%")>0)return;
	src = src.replace(/<%.*%>/g,"")
	var a = imgHash[src];
	e.onerror=null;
	if(a==null) {
		e.style.display="none";
		a=imgHash[src]=[];
		a[0]=new Image();
		a[1]=e;
		a[0].onload=function(){setImges(a)};
		a[0].src=src;
	}else{
		if(a[0].readyState=="complete")
			e.src=src;
		else{
			e.style.display="none";
			a[a.length]=e;
		}
	}
}

function setImges(a){
	for(var i=1;i<a.length;i++){
		a[i].src=a[0].src;
		a[i].style.display="";
	}
	a.length=1;
	a[0].onload=null;
}