﻿
var all_js_version = "1.30";

window.isIE = function() {
  if (document.frames) {
      return true;
  }
  else {
      return false;
  }
}

document.getFrame = function(id) {
    var frame;
    if (document.frames) {
        frame = document.frames[id];
    }
    else {
        frame = document.getElementById(id).contentWindow;
    }
    
    
    return frame;
}

/**
 * 编辑器
 */
var Editor = {
    "init":""
    /**
     * 帖子提交前参数合法性检查
     */
    ,"dopost":function() {
        if (1==1) {
            try {
                //插件程序，在正常参数检查前执行
                var flag = plugin_submit_before();
                if (flag==false) {
                    return false;
                }
            }
            catch(e) {
            }
            
        }

        if (this.validate()==false) {
            return false;
        }
        else {
            try {
                //插件程序，在正常参数检查后执行
                var flag = plugin_submit();
                if (flag==false) {
                    return false;
                }
            }
            catch(e) {
            }



          var form = this.getForm();
          if (form.isautocopy.checked) { 
              //自动复制内容到剪贴板
              BbsUtil.copyText(form.content.value);
          }

			  Dwr.hasForfendKeyword(global_boardid,global_threadid,"",form.content.value,function(data){
				if(data== true){
					BbsAdmin.showDialog('严禁词', '/bbs/dialog/hasforfend.jsp?boardid='+global_boardid+'&threadid='+global_threadid);
          document.getElementById('dialog_close_btn').style.display="none";
				}else{
				  Dwr.hasSubtleKeyword(global_boardid,global_threadid,"",form.content.value,function(data){
					  if(data==true){
						  BbsAdmin.showDialog('敏感词', '/bbs/dialog/hassubtle.jsp?boardid='+global_boardid+'&threadid='+global_threadid);
					  }
					  else{
						form.submit();
						document.getElementById("btnSubmit").style.visibility ="hidden";
					  }
				  });
				}
			});

          return false;
        }
    }
    ,"formname":"frmpost"
    ,"setFormName":function(formname) {
        if (formname == null || formname == "" || typeof(formname) == "undefined") {
            this.formname = "frmpost";
        }
        else {
            this.formname = formname;
        }
    }
    /**
     * 获取发贴的form对象
     */
    ,"getForm":function() {
        return document.forms[this.formname];
    }
    /**
     * 获取正文文本框对象
     */
    ,"getContentObject":function() {
        return document.forms[this.formname].content;
    }
    /**
     *验证帖子参数合法性
     */
    ,"validate":function () {
        var form = this.getForm();


        if (1==1){
            var cids = (document.forms["frmpost"].cid);


            if (typeof(cids)=="object") {            
                if (!BbsUtil.isChecked(cids)) {
                    alert("您还未选择帖子的类别,请在帖子标题下方选择.");
                    return false;
                }
            }
        }


        if (form.title.value=="") {
            alert("随便在标题框输入点什么吧.");
            form.title.focus();
            return false;
        }


        if (form.content.value=="") {
            alert("发贴不能不填内容的哦,^_^");
            form.content.focus();
            return false;
        }
        if (1==1) {
            var checkcode = form.checkcode;
            if (typeof(checkcode) == "object") {
                if (checkcode.value == "") {
                    alert("验证码还没有输入.");
                    checkcode.focus();
                    return false;
                }
                if (checkcode.value.length != 4) {
                    alert("验证码的位数不对哦.");
                    checkcode.focus();
                    return false;
                }
            }
        }
    }
    /**
     * 插入表情
     */
    ,"insertFace":function(id) {
        this.insertContent("[face]"+id+"[/face]");
    }

    ,"showFaceDialog":function() {
        Dialog.show('插入表情', '/bbs/dialog/face.jsp', false, false);
    }

    /**
     * 修改帖子标题前的表情
     */
    ,"changeIcon":function(id) {
        var url = "http://bbs.163.com/bbs/icon/face/"+id+".gif";
        $("img_icon").src = url;
        $("icon").value = id;
        Dialog.close();
    }
    /**
     * 获取表情ID
     */
    ,"getIcon":function() {
        return $("icon").value;
    }
    ,"showIconDialog":function() {
        var icon = this.getIcon();

        if (icon >= 90){
            alert("此类型帖子不支持表情修改.");
            return;
        }

        Dialog.show('设置表情', '/bbs/dialog/icon.jsp', false, false);
        return true;
    }
    /**
     * 在正文后面追加内容
     */
    ,"insertContent_bak":function(content) {
        if(content==null || content==''){
            alert("没有需要添加的内容！");
            return;
        }
        this.getForm().content.value += content;
    }
     /**
      * 在光标处插入内容
      *
      * @param current 是否当前位置插入
      */
     ,"insertContent":function(replacement, current) {
        this.focus(); 
        var obj = this.getForm().content;

        if (document.selection) {
            current = false;//统一放到最后
            if (current) {
                var workRange=document.selection.createRange();  
                workRange.text = this.replacement(replacement, workRange.text);
            }
            else {
                obj.value += this.replacement(replacement, "");
            }
        }

        else {
            var content = obj.value;
            var left    = content.substring(0, obj.selectionStart);
            var right   = content.substring(obj.selectionEnd);
            var middle  = (content.substring(obj.selectionStart, obj.selectionEnd));
            obj.value = left + this.replacement(replacement, middle) + right;
        }
    }
    /**
     * 工具栏按钮mouseover事件
     */
    ,"openme":function(obj) { 
      obj.style.background="#CCCCCC";
    }
    /**
     * 工具栏按钮mouseout事件
     */
    ,"closeme":function(obj) {
      obj.style.background="";
    }
    /**
     * 光标定位到正文文本框
     */
    ,"focus":function() {
        this.getForm().content.focus();
    }
    /**
     * 加粗
     */
    ,"onBold":function() {  
        var replacement = "[b]$text[/b]";
        var warning = "请在内容框选中要加粗的文字，要不我不知道该做什么.";
        this.selection(replacement, warning);
        /*
        this.focus();
        var workRange=document.selection.createRange();  
        if(workRange.text) {
            workRange.text = "[b]"+workRange.text+"[/b]";
        }
        else {
            alert("请在内容框选中要加粗的文字，要不我不知道该做什么.");
        }
        */
    } 
    /**
     * 倾斜
     */
    ,"onItalic":function (){
        var replacement = "[i]$text[/i]";
        var warning = "请在内容框选中要倾斜的文字，要不我不知道该做什么.";
        this.selection(replacement, warning);
        /*
        this.focus();  
        var workRange=document.selection.createRange();  
        if(workRange.text) {
            workRange.text = "[i]"+workRange.text+"[/i]";
        }
        else {
            alert("请在内容框选中要倾斜的文字，要不我不知道该做什么.!");
        }
        */
    }
    /**
     * 加下划线
     */
    ,"onUnderline":function() {
        var replacement = "[u]$text[/u]";
        var warning = "请在内容框选中要加下划线的文字，要不我不知道该做什么.";
        this.selection(replacement, warning);
        /*
        this.focus();  
        var workRange=document.selection.createRange();  
        if(workRange.text) {
            workRange.text = "[u]"+workRange.text+"[/u]";
        }
        else {
            alert("请在内容框选中要加下划线的文字，要不我不知道该做什么.!");
        }
        */
    }
    /**
    *弹出颜色选择框
    **/
    ,"showcolor":function(){        
        var colorRange = $('posteditor_popup_forecolor_menu');
        var editorcolor = $('editorcolor');
        colorRange.style.top = event.clientX;
        colorRange.style.left = event.clientY ;
        colorRange.style.display='';
       
    }
    /**
    *关闭颜色选择框
    **/
    ,"closecolor":function(){
        var colorRange = $('posteditor_popup_forecolor_menu');
        colorRange.style.display='none';
    }
    /**
    *选择颜色
    **/
    ,"onColorSelect":function(color){
        var replacement = "[color="+color+"]$text[/color]";
        var warning = "请在内容框选中要加下划线的文字，要不我不知道该做什么.";
        this.selection(replacement, warning);
    }
    /**
     * 判断内容框有没有文字被选中
     */          
    ,"hasSelection":function() {
        this.focus(); 
        var obj = this.getForm().content;
        if (document.selection) {
            var workRange=document.selection.createRange();  
            if(workRange.text) {
                return true;
            }
            else {
                return false;
            }
        }
        else {
            var content = obj.value;
            if (obj.selectionStart<obj.selectionEnd) {
                return true;
            }
            else {
                return false;
            }
        }
    }
    /**
     * 更改选中文字
     */
    ,"selection":function(replacement, warning) {
        this.focus(); 
        var obj = this.getForm().content;
        if (document.selection) {
            var workRange=document.selection.createRange();  
            if(workRange.text) {
                workRange.text = this.replacement(replacement, workRange.text);
            }
            else {
                alert(warning);
            }
        }
        else {
            var content = obj.value;
            if (obj.selectionStart<obj.selectionEnd) {
                var left    = content.substring(0, obj.selectionStart);
                var right   = content.substring(obj.selectionEnd);
                var middle  = (content.substring(obj.selectionStart, obj.selectionEnd));
                obj.value = left + this.replacement(replacement, middle) + right;
            }
            else {
                alert(warning);
            }
        }
    }
    ,"replacement":function(replacement, content) {
        var newtext = replacement.replace(/\$text/g, content);
        return newtext;
    }

    /**
     * 插入链接
     */
    ,"insertHyperLink":function(){
        var url = prompt("请输入超链接地址):",  "http:\/\/");

        if ((url != null) && (url != "http://")) {
          if(this.hasSelection()) {
              var replacement = "[url="+url+"]$text[/url]";
              var warning = "您没有选中内容.";
              this.selection(replacement, warning);
          }
          else{
              this.getForm().content.value = this.getForm().content.value + "[url]"+url+"[/url]";
          }
        }
    }
    /**
    *插入图片或者视频
    */
    ,"insertImgorMedia":function(){
    		var form = this.getForm();
    		var objurl = BbsUtil.trim(form.insertinput.value);
    		if (objurl == "" || objurl == "http://"){
    			//alert("请输入有效的地址！");
    			document.getElementById("btnSubmit").style.visibility ="";
    			return ;	
    		}
    		var content = "";
    		var media_type = this.getMediaType(objurl);
    		
    		if (media_type == 'gif' || media_type == 'jpg' || media_type == 'jpeg' || media_type == 'png'){
    				content = "[img]" + objurl + "[/img]";
    		}
    		else if ( media_type == 'wmv' || media_type == 'wma' || media_type == 'mp3'){
    			/**
					**根据是否为吧主，判断是否能上传
					**/
    			if ( BbsBoardAdmin.isMaster() == false){
						alert("您不是本吧吧主，不能发表带视频、音频的帖子！");
						document.getElementById("btnSubmit").style.visibility ="";	
						return false;
					}
					else{	
						content = '\n[media width=\"320\" height=\"260\"]' + objurl + '[/media]\n';
					}
				}
				else if ( media_type == 'rm'){
					/**
					**根据是否为吧主，判断是否能上传
					**/
					if ( BbsBoardAdmin.isMaster() == false ){
						alert("您不是本吧吧主，不能发表带视频、音频的帖子！");	
						document.getElementById("btnSubmit").style.visibility ="";
						return false;
					}	
					content = '\n[rm width=\"320\" height=\"260\"]' + objurl + '[/rm]\n';
				}
				else if ( media_type == 'swf'){
						/**
					**根据是否为吧主，判断是否能上传
					**/
					if ( BbsBoardAdmin.isMaster() == false ){
						alert("您不是本吧吧主，不能发表带视频、音频的帖子！");	
						document.getElementById("btnSubmit").style.visibility ="";
						return false;
					}	
					content = '\n[swf width=\"320\" height=\"260\"]' + objurl + '[/swf]\n';
				}
				else
				{
					alert('输入的网址不合法，支持的格式图片：gif,jpg,jpeg,png；视频：mp3,wma,wmv,rm,swf');
					form.insertinput.focus();
    			document.getElementById("btnSubmit").style.visibility ="";
    			return false;
				}
    		//this.insertContent(content);
    		form.content.value += "\n" + content + "\n";
    		form.insertinput.value = "http://";
    }
    /**
     * 正文文本框下面的快捷插入图片
     */
    ,"insertImg":function() {
        var form = this.getForm();
        if(form.insertimg.value==''){
            alert("请填写图片地址！");
            return;
        }
        var content = "[img]" + form.insertimg.value + "[/img]";
        //form.content.value = form.content.value+'\n[img]' + form.insertimg.value+'[/img]\n';
        this.insertContent(content);
        form.insertimg.value = "";
    }
    /**
     * 工具栏的插入图片
     */
    ,"insertImage":function(){
        var url = prompt("输入图片的超链接):", "http:\/\/");

        if ((url != null) && (url != "http://")) {
            //var content = this.getContentObject();
            //content.value = content.value + "\n[img]"+url+"[/img]\n";

            var content = "[img]" + url +"[/img]";
            //form.content.value = form.content.value+'\n[img]' + form.insertimg.value+'[/img]\n';
            this.insertContent(content, true);
        }
    }
    /**
     * 插入视频
     */
    ,"insertMedia":function () {
//        if(!BbsCookie.isLogined()) {
//            //显示窗口前先判断用户是否登录，避免用户填写了内容丢失
//            alert("您还没有登录，请先登录.");
//            return;
//        }
        Dialog.show('插入视频', '/editor/new/aspx/insert_media.aspx', false, false);
        //BbsAdmin.showDialog('插入视频', '/bbs/dialog/insert_media.jsp?boardid='+global_boardid);

        /*
        var str = prompt("请输入视频地址):", "");

        if ((str != null) && str.length>0) {
            str = "\n[media width=\"320\" height=\"260\"]"+str+"[/media]\n";
            var content = this.getContentObject();
            content.value = content.value + str;
        }
        */
    }
    /**
     * 插入视频
     */
    ,"insertRm":function() {
//        if(!BbsCookie.isLogined()) {
//            //显示窗口前先判断用户是否登录，避免用户填写了内容丢失
//            alert("您还没有登录，请先登录.");
//            return;
//        }
        BbsAdmin.showDialog('插入视频', '/bbs/dialog/insert_rm.jsp?boardid='+global_boardid);

        /*
        var str = prompt("请输入视频地址):", "");

        if ((str != null) && str.length>0) {
            str = "\n[rm width=\"340\" height=\"260\"]"+str+"[/rm]\n";
            var content = this.getContentObject();
            content.value = content.value + str;
        }
        */
    }
    /**
     * 插入投票选项
     */
    ,"insertVote":function() {
//        if(!BbsCookie.isLogined()) {
//            //显示窗口前先判断用户是否登录，避免用户填写了内容丢失
//            alert("您还没有登录，请先登录.");
//            return;
//        }
        var id = 0;  //投票ID
        if (1==1) {
            //根据内容解析投票ID，只匹配第一个投票
            var content = this.getForm().content.value;
            var regex = /\[plugin:vote\]([0-9]+)\[\/plugin:vote\]/gi;
            var m = new RegExp(regex).exec(content);

            if (m != null) {
                id = parseInt(m[1]);
            }
        }
        
        if (id <=0 ) {
            Dialog.show('插入投票', '/editor/new/aspx/vote_post.aspx',false,false);
            //BbsAdmin.showDialog('插入投票', '/bbs/plugin/vote_post.jsp?boardid='+global_boardid);
        }
        else {
            Dialog.show('修改投票', '/editor/new/aspx/vote_post.aspx?id='+id,false,false);
            //BbsAdmin.showDialog('修改投票('+id+')', '/bbs/plugin/vote_post.jsp?boardid='+global_boardid+"&id="+id);
        }
        Dialog.setWidth(460);
    }

    /**
     * 插入HTML代码
     */
    ,"insertHtml":function() {
        if(!BbsCookie.isLogined()) {
            //显示窗口前先判断用户是否登录，避免用户填写了内容丢失
            alert("您还没有登录，请先登录.");
            return;
        }
        var id = 0;  //HTMLID
        if (1==1) {
            //根据内容解析投票ID，只匹配第一个投票
            var content = this.getForm().content.value;
            var regex = /\[plugin:html\]([0-9]+)\[\/plugin:html\]/gi;
            var m = new RegExp(regex).exec(content);

            if (m != null) {
                id = parseInt(m[1]);
            }
        }
        if (id <=0 ) {
            BbsAdmin.showDialog('插入HTML', '/bbs/plugin/html_post.jsp?boardid='+global_boardid);
        }
        else {
            BbsAdmin.showDialog('修改HTML', '/bbs/plugin/html_post.jsp?boardid='+global_boardid+"&id="+id);
        }
        Dialog.setWidth(600);
    }

    ,"html2ubb":function(str) {
        str = str.replace(/\r/g,"");
        str = str.replace(/on(load|click|dbclick|mouseover|mousedown|mouseup)="[^"]+"/ig,"");
        str = str.replace(/<script[^>]*?>([\w\W]*?)<\/script>/ig,"");

        str = str.replace(/<a[^>]+href="([^"]+)"[^>]*>(.*?)<\/a>/ig,"\n[url=\"$1\"]$2[/url]\n");

        str = str.replace(/<font[^>]+color=([^ >]+)[^>]*>(.*?)<\/font>/ig,"\n[color=\"$1\"]$2[/color]\n");

        str = str.replace(/<img[^>]+src="([^"]+)"[^>]*>/ig,"\n[img]$1[/img]\n");

        str = str.replace(/<([\/]?)b>/ig,"[$1b]");
        str = str.replace(/<([\/]?)strong>/ig,"[$1b]");
        str = str.replace(/<([\/]?)u>/ig,"[$1u]");
        str = str.replace(/<([\/]?)i>/ig,"[$1i]");

        str = str.replace(/&nbsp;/g," ");
        str = str.replace(/&amp;/g,"&");
        str = str.replace(/&quot;/g,"\"");
        str = str.replace(/&lt;/g,"<");
        str = str.replace(/&gt;/g,">");

        str = str.replace(/<br>/ig,"\n");
        str = str.replace(/<[^>]*?>/g,"");
        str = str.replace(/\[url=([^\]]+)\]\n(\[img\]\1\[\/img\])\n\[\/url\]/g,"$2");
        str = str.replace(/\n+/g,"\n");

        return str;
    }

    ,"paste":function (){
        if (!window.isIE()) {
            alert("该功能只能在IE下使用.");
            return;
        }
        var rtf = document.getFrame("rtf");
        rtf.focus();

        rtf.document.body.innerHTML = "";
        
        rtf.document.execCommand("paste");
        var str = rtf.document.body.innerHTML;
        if(str.length == 0) {
            alert("剪切版不存在超文本数据！");
            return "";
        }
        var ubb = this.html2ubb(str);

        this.insertContent(ubb);
    }

    ,"initPaste":function() {
      if (window.isIE()) {
        document.getFrame("rtf").document.designMode="On";
        document.getElementById("rtf").style.display = "";
        document.getElementById("btnPaste").style.display = "";
      }
    }

    /**
     * 判断是否为编辑状态
     */

     ,"isEditing":function() {
        var articleid = parseInt(this.getForm()["articleid"].value);
        return (articleid>0);
     }

     ,"voteChangeOptions":function() {
        var form = document.forms["frminsertvote"];
        var num = form.num.value;
        var obj = $("vote_options");
        var size = obj.childNodes.length;
        
        if (num >= 100) {
            alert("选项数量最大99个.");
            return;
        }
        else if (num < 2) {
            alert("选项数量最小2个.");
            return;
        }


        if (num < size) {
            //删除
            if (!confirm("选项里的内容会被删除，提交后将永久被删除，是否确认减少选项操作？")) {
                return;
            }

            for (var i=size; i>num; i--) {
                this.voteDelOptions();
            }

        }
        else {
          //添加
          for (var i=size; i<num; i++) {
              this.voteAddOptions();
          }
        }
     }
     ,"voteAddOptions":function() {
        var obj = $("vote_options");
        var nodes = obj.childNodes;
        var index = nodes.length+1;
        var html = '<li>选项'+(index<10?'0'+index:index)+'：<input name="options" size="48" type="text" value=""/><input type="hidden"  name = "pollids"  value="0"/></li>';
        new Insertion.Bottom('vote_options', html);
     }
      ,"voteDelOptions":function() {
        var obj = $("vote_options");
        var nodes = obj.childNodes;
        var index = nodes.length-1;
        obj.removeChild(nodes[index]);
        
     }
     /**
     *获取上传视频的地址的文件类型
     **/
      ,"getMediaType":function(str) {
     	 var strs = str.split(".");
     	 if (strs == null || strs.length <=0){
     	 	return "";
     	 }
   		 return strs[strs.length-1].toLowerCase();
     }
	  

}
