/// 彩字秀 (http://www.czxiu.com) - 外部站点嵌入JS模板
///
/// Created By Hightman - http://www.hightman.cn - 2006/05/03
/// Updated by original author on 2007/10/12
///
/// The file was updated by PHP script automatically
///
/// Usage manual:
/// Put the following codes to your web page:
/************* Embed javascript code *******************************************
<script language="javascript">
  czxiu_icon_height = 16;
  czxiu_icon_width = 16;
  czxiu_icon_align = 'top';
  czxiu_icon_border = '1px solid orange';
  czxiu_do_convert = 'yes';
  czxiu_do_bind = 'yes';
  czxiu_do_bind_input = 'no';
  czxiu_conv_depth = 1000;
</script>
<script type="text/javascript" src="http://www.czxiu.com/cz.js"></script>

<input class="zBindYes">
<textarea class="zBindNo">...
<iframe ...></iframe>
********************************************************************************/

///
/// *** DO-NOT *** CHANGE THE FOLLOWING CODE
///
if (!document.zLoadFlag || document.zLoadFlag != true)
{
  document.zLoadFlag = true;
  var zBaseUrl = 'http://www.czxiu.com';
  var zReadyTag = 'CZXIU_READY';
  var zLoadTag = 'CZXIU_LOADED';
  var zIconSrc = zBaseUrl + '/img/cz_icon.gif';

  /// '风格 “%n” 最多 %m 字，请输入想要文字：'
  var zInfoNotice = unescape('%u98CE%u683C%20%u201C%25n%u201D%20%u6700%u591A%20%25m%20%u5B57%uFF0C%u8BF7%u8F93%u5165%u60F3%u8981%u6587%u5B57%uFF1A');
  /// '我爱你'
  var zInfoDefault = unescape('%u6211%u7231%u4F60');
  /// '彩字秀(炫酷)'
  var zInfoMenu = unescape('%u5F69%u5B57%u79C0%28%u7CBE%u54C1%29');
  /// '彩字秀 - 彩色动态闪字'
  var zPlusName = unescape('%u5F69%u5B57%u79C0%20-%20%u5F69%u8272%u52A8%u6001%u95EA%u5B57');
  /// '此风格最多只支持%d个字，现在长度为：'
  var zInfoLong = unescape('%u6B64%u98CE%u683C%u6700%u591A%u53EA%u652F%u6301%25d%u4E2A%u5B57%uFF0C%u73B0%u5728%u957F%u5EA6%u4E3A%uFF1A');
  var zWordLineLen = 8;
  var zIsIE = (navigator.appVersion.indexOf("MSIE") != -1);
  var zIsFF = (navigator.userAgent.indexOf("Firefox") != -1);

  /// {'G风格五彩字', '摩法棒', '小猴摇旗' };
  var zTypeList = new Array(
    /// zTypeList BEGIN --
    {name:'rpcount', title:'%E4%BA%BA%E5%93%81%E8%AE%A1%E7%AE%97%E5%99%A8%28%E4%BA%BA%E7%89%A9%E7%89%88%29', demo:'%E6%9D%8E%E4%B8%96%E6%B0%91', maxword:10 },
    {name:'brain', title:'%E4%BD%A0%E7%9A%84%E8%84%91%E5%86%85%E5%9B%BE', demo:'%E5%A5%BD%E5%AD%A9%E5%AD%90', maxword:12 },
    {name:'default', title:'G%E9%A3%8E%E6%A0%BC%E5%BD%A9%E5%AD%97', demo:'HelloKitty', maxword:14 },
    {name:'nature', title:'%E6%80%A7%E6%A0%BC%E8%89%B2%E5%BD%A9%E5%88%86%E6%9E%90', demo:'%E4%BB%A4%E7%8B%90%E5%86%B2', maxword:10 },
    {name:'lovelyshine', title:'%E5%8F%AF%E7%88%B1%E9%97%AA%E5%AD%97', demo:'%E5%8F%AF%E7%88%B1%E9%97%AA%E5%AD%97', maxword:14 },
    {name:'ancient', title:'%E4%BD%A0%E7%9A%84%E5%8F%A4%E4%BB%A3%E8%81%8C%E4%B8%9A', demo:'%E6%9D%8E%E4%B8%96%E6%B0%91', maxword:10 },
    {name:'tt_wormonk', title:'%E7%88%AC%E7%88%AC%E8%99%AB%E5%B0%8F%E7%8C%B4', demo:'%E6%88%91%E7%88%AC%E5%91%80%E7%88%AC', maxword:8 },
    {name:'gx_daoying1', title:'%E5%8F%AF%E7%88%B1%E5%80%92%E5%BD%B1%E5%AD%97', demo:'%E5%80%92%E5%BD%B1%E4%B9%9F%E8%BF%B7%E4%BD%A0', maxword:14 },
    {name:'0808monkey', title:'%E6%BB%9A%E6%BB%9A%E5%B0%8F%E7%8C%B4', demo:'%E5%A4%A7%E7%8E%8B%E6%B4%BE%E6%88%91%E6%9D%A5%E5%B7%A1%E5%B1%B1%E5%93%AA%E5%93%9F%7E', maxword:10 },
    {name:'sz_lovelyheart', title:'%E5%BF%83%E5%BD%A2%E9%97%AA%E5%AD%97', demo:'%E6%88%91%E7%88%B1%E7%88%B1%E4%BD%A0', maxword:14 },
    {name:'080101rainbows', title:'%E5%BD%A9%E8%99%B9%E5%BD%A9%E8%99%B9', demo:'%E9%9D%92%E6%98%A5%E6%97%A0%E6%82%94', maxword:14 },
    {name:'sz_colorball2', title:'%E5%BD%A9%E7%90%83%E9%A3%98%E9%A3%98', demo:'%E6%96%B0%E5%B9%B4%E5%A5%BD', maxword:14 },
    {name:'starshine', title:'%E6%BC%82%E4%BA%AE%E9%97%AA%E7%83%81', demo:'%E5%A4%A9%E4%B8%8A%E6%98%9F%E4%BA%AE%E6%99%B6%E6%99%B6', maxword:14 },
    {name:'component', title:'%E5%88%86%E6%9E%90%E6%82%A8%E7%9A%84%E6%88%90%E5%88%86', demo:'%E5%A5%A5%E7%89%B9%E6%9B%BC', maxword:10 },
    {name:'hnote', title:'%E7%88%B1%E7%9A%84%E7%95%99%E8%A8%80', demo:'%E6%88%91%E5%B0%B1%E5%9C%A8%E4%BD%A0%E7%9A%84%E8%BA%AB%E8%BE%B9%EF%BC%8C%E8%80%8C%E4%BD%A0%E5%8D%B4%E4%B8%8D%E7%9F%A5%E9%81%93%E6%88%91%E7%88%B1%E4%BD%A0', maxword:17 },
    {name:'maozedong', title:'%E6%AF%9B%E6%B3%BD%E4%B8%9C%E5%AD%97%E4%BD%93', demo:'%E7%83%AD%E7%88%B1%E6%AF%9B%E4%B8%BB%E5%B8%AD', maxword:14 },
    {name:'2009qingren', title:'%E6%83%85%E4%BA%BA%E8%8A%82%E5%8D%A1%E7%89%87', demo:'%E4%BA%B2%E7%88%B1%E7%9A%84%E8%93%89%E5%84%BF%EF%BC%9A%E6%83%85%E4%BA%BA%E8%8A%82%E5%BF%AB%E4%B9%90%EF%BC%81%E3%80%80%E3%80%80%E3%80%80%E9%9D%96%E5%93%A5%E5%93%A5', maxword:18 },
    {name:'xiannv', title:'%E4%BB%99%E5%A5%B3%E9%AD%94%E6%B3%95%E5%AD%97', demo:'%E6%88%91%E6%98%AF%E5%B0%8F%E4%BB%99%E5%A5%B3', maxword:11 },
    {name:'0810ck', title:'%E9%BB%91%E5%9C%88%E5%9C%88', demo:'%E6%88%91%E7%88%B1%E5%9C%88%E5%9C%88', maxword:12 },
    {name:'201008color', title:'%E7%88%B1%E5%BF%83', demo:'%E6%88%91%E7%88%B1%E4%BD%A0', maxword:14 },
    {name:'hx_moflag3', title:'%E5%B0%8F%E7%8C%B4%E7%BE%A4%E6%91%87%E6%97%97%E5%8A%A0%E9%95%BF%E7%89%88', demo:'%E5%A4%A7%E7%8E%8B%E6%B4%BE%E6%88%91%E4%BB%AC%E6%9D%A5%E5%B7%A1%E5%B1%B1', maxword:8 },
    {name:'pinkpen', title:'%E4%B9%A6%E5%86%99%E5%BF%AB%E4%B9%90', demo:'%E5%85%AD%E4%B8%80%E5%84%BF%E7%AB%A5%E8%8A%82%E5%BF%AB%E4%B9%90', maxword:12 },
    {name:'2010redheart', title:'%E7%BA%A2%E5%BF%83', demo:'%E8%80%81%E9%BC%A0%E7%88%B1%E5%A4%A7%E7%B1%B3', maxword:14 },
    {name:'0807iloveyou', title:'%E6%88%91%E7%88%B1%E4%BD%A0', demo:'%E8%AF%B8%E8%91%9B%E5%AD%94%E6%98%8E', maxword:8 },
    {name:'1001heart', title:'%E5%BD%A9%E8%99%B9%E5%BF%83', demo:'%E6%88%91%E7%88%B1%E4%BD%A0', maxword:14 },
    {name:'hx_benpao1', title:'%E6%B8%90%E5%87%BA%E8%B7%B3%E5%AD%97', demo:'%E8%B5%B6%E7%B4%A7%E8%B7%91%E5%93%A6', maxword:8 },
    {name:'0807walkpig', title:'%E5%B0%8F%E7%8C%AA%E6%9D%A5%E4%BA%86', demo:'%E5%B0%8F%E7%8C%AA%E6%9D%A5%E4%BA%86', maxword:12 },
    {name:'sz_crystalball', title:'%E7%94%B5%E9%97%AA%E5%BD%A9%E7%90%83', demo:'%E6%B5%AA%E6%BC%AB%E6%B0%B4%E6%99%B6%E7%90%83', maxword:14 },
    {name:'papermm', title:'%E6%88%91%E8%A6%81%E5%91%8A%E8%AF%89%E4%BD%A0', demo:'%E4%BB%8A%E6%99%9A%E8%B7%9F%E6%9D%B0%E4%BC%A6%E4%B8%80%E8%B5%B7%E5%90%83%E9%A5%AD', maxword:18 },
    {name:'0809note', title:'%E5%B0%8F%E4%BE%BF%E6%9D%A1', demo:'%E4%BA%B2%E7%88%B1%E7%9A%84%E5%B0%8F%E8%BF%9C%E8%BF%9C%3A%E6%88%91%E6%B0%B8%E8%BF%9C%E7%88%B1%E4%BD%A0%21%E7%A5%9D%E4%BD%A0%E6%B0%B8%E8%BF%9C%E5%B9%B8%E7%A6%8F%21', maxword:20 },
    {name:'marrycert', title:'%E7%BB%93%E5%A9%9A%E8%AF%81%E4%B9%A6', demo:'%E6%9E%97%E5%A4%A9%E5%AE%9D%E5%92%8C%E7%8E%89%E5%84%BF', maxword:8 },
    {name:'sz_star', title:'%E6%98%9F%E6%98%9F%E9%97%AA%E5%AD%97', demo:'%E2%98%85%E6%98%9F%E6%98%9F%E7%82%B9%E7%81%AF%E2%98%86', maxword:14 },
    {name:'sz_heartflower', title:'%E5%BF%83%E8%8A%B1%E9%97%AA%E5%AD%97', demo:'%E6%88%91%E6%9C%80%E7%88%B1%E4%BD%A0', maxword:14 },
    /// zTypeList END --
    null
  );
  
  /// 以下部分请不要修改, 除非你知道自己在做什么
  var zDomType ='';
  var zMenuObject = false;

  // set the zDomType
  if (document.getElementById) zDomType = "std";
  else if (document.all) zDomType = "ie4";
  else if (document.layers) zDomType = "ns4";  

  /// objects cache
  function zGetObject(id)
  {
    switch (zDomType)
    {
      case 'ie4' : return document.all[id];
      case 'ns4' : return document.layers[id];
      case 'std' :
      default : return document.getElementById(id);
    }
  }

  /// cz Name convertor
  function zGetFilename(str)
  {
    var ptr = '_\\/?*:|<>"';
    var fname = '';
    var code = 0;

    // dircode
    for (var i = 0; i < str.length; i++)
    {
      cc = str.charCodeAt(i);
      if (cc < 0x80) code += (cc ^ 0x80);
      else if (cc < 0x800)
      {
        code += (0x40|(cc>>6));
        if (code >= 0x400) break;
        code += (cc & 0x3f);
      }
      else
      {
        code += (0x60|(cc>>12));
        if (code >= 0x400) break;
        code += ((cc>>6)&0x3f);
        if (code >= 0x400) break;
        code += (cc & 0x3f);
      }
      if (code >= 0x400) break;            
    }

    // filename
    for (var i = 0; i < str.length; i++)
    {
      ch = str.substring(i,i+1);
      xp = ptr.indexOf(ch);
      if (xp < 0) fname += ch;
      else fname += '_' + xp;
    }

    var d1 = ((code>>8)&0x0f);
    var d2 = (code & 0x0f);
    var ret = d1.toString(16) + '/' + d2.toString(16) + '/';
    ret += encodeURIComponent(fname);
    return ret;
  }

  /// zMenuCalss
  function zMenuClass()
  {
    this.menuFlag = false;

    this.buffermenu = function()
    {
      if (this.menuFlag) return;
          
      zMenuObject = document.createElement("DIV");
      zMenuObject.id = "zBindRmenu";
      zMenuObject.style.display = "none";
      zMenuObject.style.position = "absolute";
      zMenuObject.style.zIndex = "99";

      document.body.insertBefore(zMenuObject, document.body.firstChild);
      this.menuFlag = true;

      /// generate the html page
      var html = '<div style="border:2px outset;width:146px;background:#ddc;">';
      html += '<div style="background:#68b;font-size:12px;color:#eff;padding:2px;" align="right">' + zInfoMenu;
      html += '&nbsp;&nbsp;&nbsp;<button style="width:18px;height:18px;font-size:11px;font-weight:bold;" onclick="zMenu.hidecontextmenu()">&times</button></div>';
      html += '<div style="height:200px;background:#fff;overflow-y:scroll;overflow-x:none;">';
      for (var i = 0; i < zTypeList.length; i++)
      {
        if (zTypeList[i] == null) break;
        html += '<div align="center" style="background-color:#C6D3EF;padding:2px;" onMouseover="this.style.backgroundColor=\'#E30400\';" onMouseout="this.style.backgroundColor=\'#C6D3EF\';">';
        html += '<a href="javascript:void(zMenu.checkType(' + i + '))" title="' + decodeURIComponent(zTypeList[i].title) + '"><img src="' + zBaseUrl + '/z/' + zTypeList[i].name + '/' + zGetFilename(decodeURIComponent(zTypeList[i].demo)) + '_s.gif" border="0" width="120" alt="' + decodeURIComponent(zTypeList[i].title) + '" /></a>';
        html += '</div>';
      }
      html += '</div>';
      html += '<div align="right" style="padding:2px;"><a href="' + zBaseUrl + '" target="_blank" style="font-size:12px;text-decoration:underline;color:blue;">&#26356;&#22810;&#39118;&#26684;&gt;&gt;</a></div>';
      html += '</div>';
      
      zMenuObject.innerHTML = html;
    }

    this.showcontextmenu = function()
    {
      var evt;
      try{
        if(arguments[0]) evt = arguments[0];
        else evt = window.event;
        var srcElement = evt.srcElement? evt.srcElement : evt.target;
      }
      catch(e) { return; }

      var ex = 0, ey = 0;
      if (zIsFF) 
      {
        ex = evt.pageX;
        ey = evt.pageY;
      }
      else if(zIsIE)
      {
        ex = (document.documentElement.scrollLeft || document.body.scrollLeft) + evt.clientX;
        ey = (document.documentElement.scrollTop || document.body.scrollTop) + evt.clientY;
      }

      if ((ex + 140) > document.body.clientWidth)
        ex -= 140;           
      if ((ey + 240) > document.body.clientHeight)
        ey -= 240;

      zMenuObject.style.top = ey + 'px';
      zMenuObject.style.left = ex + 'px';
      zMenuObject.style.display = 'block';
      evt.cancelBubble = true;
      return false;
    }

    this.hidecontextmenu = function(evt)
    {
      zMenuObject.style.display = 'none';
    }

    this.checkType = function(i)
    {
      zAddUbbContent(zTypeList[i]);
      zWordLineLen = zTypeList[i].maxword;
    }

    this.bind = function(obj)
    {
      if (obj.attachEvent)
      {
        obj.attachEvent('onclick', this.showcontextmenu);
        obj.attachEvent('onmouseover', this.showcontextmenu);
        document.body.attachEvent('onclick', this.hidecontextmenu);
      }
      else if (obj.addEventListener)
      {
        obj.addEventListener('click', this.showcontextmenu, true);
        obj.addEventListener('mouseover', this.showcontextmenu, true);
        document.addEventListener('click', this.hidecontextmenu, true);
      }
    }
  } /// end for zMenuClass

  /// Init Function
  function zInit()
  {
    /// 放到太前面, document.body 也没有?
    if (!document.body || document.zHasInit) return;
    document.zHasInit = true;

    /// hightman: 统一都移到这里, 先 convert 再 bindzObject
    if (typeof czxiu_do_bind == 'undefined' || czxiu_do_bind != 'no')
    {
      zMenu.buffermenu();
      zBindInput();
    }

    /// hightman: 将标签转换为真正彩字图片
    if (typeof czxiu_do_convert == 'undefined' || czxiu_do_convert != 'no')
    {
      zConvert();
    }
  }

  /// Convert the TagText -> CzxiuImage
  function zConvert()
  {
    zControlDepth = 0;
    zAllNodes = new Array();
    zGetChildNodes(document.body.childNodes);

    for (var i = 0; i < zAllNodes.length; i++)
    {
      var s = zAllNodes[i];
      var bText = false;
      var shtmlstr = '';      

      if (!s.nodeName || s.nodeName.match(/SCRIPT/gi)) continue;      
      if (zIsIE && s.outerHTML && s.outerHTML != '')       
        shtmlstr = s.outerHTML;      
      else if (!zIsIE && s.innerHTML && s.innerHTML != '')       
        shtmlstr = s.innerHTML;      
      else if (s.nodeName.toUpperCase() == "#TEXT" && s.nodeValue && s.nodeValue != '')
      {
        bText = true;
        shtmlstr = s.nodeValue;
      }
      else continue;
      
      if (shtmlstr.match(/\[z(=[0-9a-z_-]+)?\]([^\r\n]+?)\[\/z\]/gi))
      {
        shtmlstr = shtmlstr.replace(/(title=["']?.*?)\[z(?:=[0-9a-z_-]+)?\]([^\r\n]+?)\[\/z\](.*?["']?)/ig, "$1$2$3");
        shtmlstr = shtmlstr.replace(/\[z(?:=?([0-9a-z_-]+))?\]([^\r\n]+?)\[\/z\]/gi, '<a href="' + zBaseUrl + '" target=_blank><img src="' + zBaseUrl + '/img/wait.gif" title="$2" alt="$1" name="' + zReadyTag + '" border="0" align="absMiddle" /></a>');
        if (bText)
        {
          var objTemp = document.createElement('SPAN');
          objTemp.innerHTML = shtmlstr;
          if (s.parentNode)
          {
            objTemp = s.parentNode.insertBefore(objTemp,s);
            objTemp.parentNode.removeChild(s);
            s = objTemp;
          }
        }
        else
        {
          if (zIsIE) s.outerHTML = shtmlstr;
          else s.innerHTML = shtmlstr;
        }
      }
    }

    // replace the img src
    var iObj = document.getElementsByName(zReadyTag);    
    if (iObj)
    {
      for (var i = 0; i < iObj.length; i++)
      {
        if (iObj[i].alt == '') iObj[i].alt = 'default';
        iObj[i].src = zBaseUrl + '/z/' + iObj[i].alt + '/' + zGetFilename(iObj[i].title) + '.gif';
        iObj[i].name = zLoadTag;
      }
    }
  }

  function zGetChildNodes(NodeArray)
  {
    if (zControlDepth > zControlDepthMax || NodeArray.length == 0) return;
    zControlDepth++;

    for (var i=0; i < NodeArray.length; i++)
    {
      var cNode = NodeArray[i];
      if (cNode.hasChildNodes() && cNode.childNodes.length != 0)
        zGetChildNodes(cNode.childNodes);
      else
      {
        if (cNode.nodeName 
          && cNode.nodeName.match(/^(INPUT|BUTTON|SCRIPT|IMG|TEXTAREA|A)$/gi))
        {
          continue;
        }
        if (cNode.parentNode && cNode.parentNode.nodeName 
          && cNode.parentNode.nodeName.match(/^(BUTTON|SCRIPT|TEXTAREA)$/gi))
        {
          continue;
        }
        zAllNodes.push(cNode);
      }
    }
  }

  /// bind the input icon
  function zBindInput()
  {
    var objImgAll = document.getElementsByTagName("IMG");
    var objImgBold = false, objImgBoldPosition = false;

    for (var i = 0; i < objImgAll.length; i++)
    {
      var objTemp = objImgAll[i];
      if (objTemp.src == '') continue;
      if (objTemp.src.match(/\/[0-9a-z\-_]*bold\.gif$/gi))
      {
        objImgBold = objTemp;
        if (objTemp.parentNode && objTemp.parentNode.nodeName.toUpperCase() == 'A')
          objImgBoldPosition = objTemp.parentNode;        
        else
          objImgBoldPosition = objTemp;        
        break;
      }
      else if (objTemp.src.match(/\/b\.gif$/gi) && objImgAll[i+1] && objImgAll[i+1].src && objImgAll[i+1].src.match(/\/i\.gif$/gi))
      {
        objImgBold = objTemp;
        if(objTemp.parentNode && objTemp.parentNode.nodeName.toUpperCase() == 'A')        
          objImgBoldPosition = objTemp.parentNode;        
        else        
          objImgBoldPosition = objTemp;        
        break;
      }
    }

    objImgBold = zBindObjectAction(objImgBold, objImgBoldPosition, 'IFRAME');
    objImgBold = zBindObjectAction(objImgBold, objImgBoldPosition, 'TEXTAREA');
    if (typeof czxiu_do_bind_input != 'undefined' && czxiu_do_bind_input == 'yes')    
      objImgBold = zBindObjectAction(objImgBold, objImgBoldPosition, 'INPUT');    
  }

  function zBindObjectAction(objImgBold, objImgBoldPosition, objType)
  {
    var objTempAll = document.getElementsByTagName(objType);
    for (var i = 0; i < objTempAll.length; i++)
    {
      var objTemp = objTempAll[i];
      
      if (objTemp.className && objTemp.className.match(/zBindNo/gi)) continue;
      if (objType == 'IFRAME')
      {
        if (objTemp.id && objTemp.id.match(/edit/gi)) ;
        else if (objTemp.className != '' && objTemp.className.match(/zBindYes/gi)) ;
        else continue;
      }
      else if (objType == 'TEXTAREA')
      {
      }
      else if (objType == 'INPUT')
      {
        if (!objTemp.type.match(/text/gi)) continue;
        ///else if (objTemp.className != '' && objTemp.className.match(/zBindYes/gi)) ;
        else if (objTemp.name && objTemp.name.match(/username|name|user|mail|perm/gi)) continue;
      }
      else
      {
        continue;
      }

      /// fliter the hidden block?
      if (objTemp.style)
      {
        if (objTemp.style.display && objTemp.style.display.match(/none/gi)) continue;
        else if (objTemp.style.visibility && objTemp.style.visibility.match(/hidden/gi)) continue;
      }

      /// hightman: readOnly or disabled
      if ((objTemp.disabled && objTemp.disabled == true) || (objTemp.readOnly && objTemp.readOnly == true))
        continue;

      var zIcon = document.createElement('IMG');
      zIcon.width = (objImgBold ? objImgBold.width : 21);
      zIcon.height = (objImgBold ? objImgBold.height : 21);
      zIcon.align = (objImgBold ? objImgBold.align : 'top');
      zIcon.hspace = (objImgBold ? objImgBold.hspace : 0);
      zIcon.vspace = (objImgBold ? objImgBold.vspace : 0);

      if (typeof czxiu_icon_border != 'undefined') zIcon.style.border = czxiu_icon_border;
      if (typeof czxiu_icon_width != 'undefined') zIcon.width = parseInt(czxiu_icon_width);
      if (typeof czxiu_icon_height != 'undefined') zIcon.height = parseInt(czxiu_icon_height);
      if (typeof czxiu_icon_align != 'undefined') zIcon.align = czxiu_icon_align;

      zIcon.style.height = zIcon.height + 'px';
      zIcon.style.width = zIcon.width + 'px';
      zIcon.src = zIconSrc;
      zIcon.border = 0;
      zIcon.alt = zPlusName;
      zIcon.title = zPlusName;
      if (zIcon.addEventListener)
      {
        zIcon.addEventListener('click', zInsert, true);
        zIcon.addEventListener('mouseover', zInsert, true);
      }
      else if (zIcon.attachEvent)
      {
        zIcon.attachEvent('onclick', zInsert);
        zIcon.attachEvent('onmouseover', zInsert);
      } 
      else
      {
        zIcon.onclick = function(evt) { zInsert(evt); }
        zIcon.onmouseover = function (evt) { zInsert(evt); }
      }

      /// set the position
      var objPositionTarget = (objImgBold ? objImgBoldPosition : objTemp);
      if (objPositionTarget.previousSibling && objPositionTarget.previousSibling.nodeName 
        && objPositionTarget.previousSibling.nodeName.toUpperCase() == 'IMG')
      {
        if (objPositionTarget.previousSibling.src.toUpperCase() == zIconSrc.toUpperCase())
          objPositionTarget.parentNode.removeChild(objPositionTarget.previousSibling);
      }

      zIcon.id = 'zObj_' + objType + '_' + i;
      objPositionTarget.parentNode.insertBefore(zIcon, objPositionTarget);
      zActObjs[zIcon.id] = objTemp;
      zMenu.bind(zIcon);
    }
    return false;
  }

  function zInsert()
  {
    var evt;
    try{
      if(arguments[0]) evt = arguments[0];
      else evt = window.event;
      var srcElement = evt.srcElement? evt.srcElement : evt.target;
    }
    catch(e) { return; }
    zActivObj = zActObjs[srcElement.id];
  }

  function zFormatText(tpl, txt)
  {
    var ret = '', tmp = '';    
    for (var i = 0; i < txt.length; i++)
    {
      ch = txt.substring(i,i+1);
      if (ch == '\r' || ch == '\n')
      {
        if (tmp != '')
        {
          tmp = '';
          ret += tpl.replace(/\[tpl_ubb\]/, tmp);
        }
        ret += ch;
      }
      else
      {
        tmp += ch;
        if (tmp.length >= zWordLineLen)
        {
          ret += tpl.replace(/\[tpl_ubb\]/, tmp);
          tmp = '';
        }
      }
    }

    if (tmp != '')    
      ret += tpl.replace(/\[tpl_ubb\]/, tmp);
    
    return ret;
  }

  function zAddUbbContent(zType)
  {
    var element = zActivObj;
    var template = '[z=' + zType.name + '][tpl_ubb][/z]';

    if (document.selection)
    {
      if (element.nodeName && element.nodeName.toUpperCase() == 'IFRAME')
      {
        element.contentWindow.focus();
        var sel = element.contentWindow.document.selection.createRange();
      }
      else
      {
        element.focus();
        var sel = document.selection.createRange();
      }

      if (sel.text.length > 0)
      {
        sel.text = zFormatText(template, sel.text);
        return;
      }
    }
    else if (element.selectionStart || element.selectionStart == '0')
    {
      var startPos = element.selectionStart;
      var endPos = element.selectionEnd;
      if (startPos != endPos)
      {
        var word1 = element.value.substring(0, startPos);
        var word2 = zFormatText(template, element.value.substring(startPos, endPos));
        var word3 = element.value.substring(endPos, element.value.length);
        element.value = word1 + word2 + word3;
        element.selectionStart = element.value.length;
        return ;
      }
    }

    // input type user
    var prompt_str = zInfoNotice;
    prompt_str = prompt_str.replace(/%n/, decodeURIComponent(zType.title));
    prompt_str = prompt_str.replace(/%m/, zType.maxword);
    var input = prompt(prompt_str, decodeURIComponent(zType.demo));

    if (input == '' || input == null) return;
    if (element.nodeName && element.nodeName.toUpperCase() == 'IFRAME')
    {
      element.contentWindow.focus();
      if (!document.selection)
      {
        var objTemp = element.contentWindow.document.createElement("SPAN");
        objTemp.innerHTML = zFormatText(template, input);
        element.contentWindow.document.body.appendChild(objTemp);
      }
      else
      {
        var sel = element.contentWindow.document.selection.createRange();
        sel.pasteHTML(zFormatText(template, input));
      }
    }
    else
    {
      element.value += zFormatText(template, input);
    }
  }

  // Other variables base on the object or functions define on the above.
  var zAllNodes = false;
  var zActObjs = Array();
  var zControlDepth = 0;
  var zActivObj = false;
  var zMenu = new zMenuClass();
  var zControlDepthMax = (typeof czxiu_conv_depth == 'undefined' ? 1000 : parseInt(czxiu_conv_depth));
}

/// Bind the init function after page loaded.
if (typeof window.attachEvent != 'undefined')
{
  window.attachEvent('onload', zInit);
}
else if (typeof window.addEventListener != 'undefined')
{
  window.addEventListener('load', zInit, false);
}
else
{
  window.onload = function() { zInit(); }
}
zInit();

