var canedit,AutoDetectPasteFromWord
canedit=true;
AutoDetectPasteFromWord=true;



// 浏览器版本检测
var BrowserInfo = new Object() ;
BrowserInfo.MajorVer = navigator.appVersion.match(/MSIE (.)/)[1] ;
BrowserInfo.MinorVer = navigator.appVersion.match(/MSIE .\.(.)/)[1] ;
BrowserInfo.IsIE55OrMore = BrowserInfo.MajorVer >= 6 || ( BrowserInfo.MajorVer >= 5 && BrowserInfo.MinorVer >= 5 ) ;

// 清除WORD冗余格式并粘贴
function cleanAndPaste( html ) {
	// Remove all SPAN tags
	html = html.replace(/<\/?SPAN[^>]*>/gi, "" );
	// Remove Class attributes
	html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3") ;
	// Remove Style attributes
	html = html.replace(/<(\w[^>]*) style="([^"]*)"([^>]*)/gi, "<$1$3") ;
	// Remove Lang attributes
	html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ;
	// Remove XML elements and declarations
	html = html.replace(/<\\?\?xml[^>]*>/gi, "") ;
	// Remove Tags with XML namespace declarations: <o:p></o:p>
	html = html.replace(/<\/?\w+:[^>]*>/gi, "") ;
	// Replace the &nbsp;
	html = html.replace(/&nbsp;/, " " );
	// Transform <P> to <DIV>
	var re = new RegExp("(<P)([^>]*>.*?)(<\/P>)","gi") ;	// Different because of a IE 5.0 error
	html = html.replace( re, "<div$2</div>" ) ;
	
	insertHTML( html ) ;
}

// 取剪粘板中的HTML格式数据
function GetClipboardHTML() {
	var oDiv = document.getElementById("mode_html")
	oDiv.innerHTML = "" ;
	
	var oTextRange = document.body.createTextRange() ;
	oTextRange.moveToElementText(oDiv) ;
	oTextRange.execCommand("Paste") ;
	
	var sData = oDiv.innerHTML ;
	oDiv.innerHTML = "" ;
	
	return sData ;
}


//复制
function onPaste(){
	var html = GetClipboardHTML() ;
	if (AutoDetectPasteFromWord==true && BrowserInfo.IsIE55OrMore) {
		var re = /<\w[^>]* class="?MsoNormal"?/gi ;
		if ( re.test(html)){
			htmlwordencode( html ) ;
			return false ;
		}
		mode.document.selection.createRange().pasteHTML(html) ;
		return false;
	}
}

// 在当前文档位置插入.
function insertHTML(html) {
	if(canedit==false){
		alert('请转换编辑状态！');
		return true;
	}
	if (mode.document.selection.type.toLowerCase() != "none")
		mode.document.selection.clear() ;
	mode.document.selection.createRange().pasteHTML(html) ; 
}

//得到焦点
function VerifyFocus() {
	if ( mode )
		mode.focus();
}

// 替换特殊字符
function HTMLEncode(text){
	text = text.replace(/&/g, "&amp;") ;
	text = text.replace(/"/g, "&quot;") ;
	text = text.replace(/</g, "&lt;") ;
	text = text.replace(/>/g, "&gt;") ;
	text = text.replace(/'/g, "&#146;") ;
	text = text.replace(/\ /g,"&nbsp;");
	text = text.replace(/\n/g,"<br>");
	text = text.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;");
	return text;
}

//替换WORD中的字符
function htmlwordencode(text){
	text = text.replace(/&/g, "&amp;") ;
	text = text.replace(/"/g, "&quot;") ;
	text = text.replace(/</g, "&lt;") ;
	text = text.replace(/>/g, "&gt;") ;
	text = text.replace(/'/g, "&#146;") ;
	text = text.replace(/\ /g,"&nbsp;");
	text = text.replace(/\n/g,"<br>");
	text = text.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;");
	
	text = text.replace(/<\/?SPAN[^>]*>/gi, "" );
	text = text.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3") ;
	text = text.replace(/<(\w[^>]*) style="([^"]*)"([^>]*)/gi, "<$1$3") ;
	text = text.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ;
	text = text.replace(/<\\?\?xml[^>]*>/gi, "") ;
	text = text.replace(/<\/?\w+:[^>]*>/gi, "") ;
	text = text.replace(/&nbsp;/, " " );
	var re = new RegExp("(<P)([^>]*>.*?)(<\/P>)","gi") ;	// Different because of a IE 5.0 error
	text = text.replace( re, "<div$2</div>" ) ;

	return text
}

// 从Word中粘贴，去除格式
function PasteWord(){
	if (!validateMode()) return;
	mode.focus();
	if (BrowserInfo.IsIE55OrMore)
		cleanAndPaste( GetClipboardHTML() ) ;
	else if ( confirm( "此功能要求IE5.5版本以上，你当前的浏览器不支持，是否按常规粘贴进行？" ) )
		format("paste") ;
	mode.focus();
}


function onKeyDown(event){
	var key = String.fromCharCode(event.keyCode).toUpperCase();
	if (event.ctrlKey){
		if (key == "V"){
//			onPaste()
		   PasteWord();
		   return false;
		}
   // Ctrl+B,I,U
		if ((key == "B")||(key == "I")||(key == "U"))return false;
	}
}


// 取编辑器的内容
function editHTML() {
	if(bEdit){
		return mode.document.body.innerHTML;
	}else{
		return mode.document.body.innerText;
	}
}

// 在尾部追加内容
function appendHTML(html) {
	if (!validate()) return;
	if(bEdit){
		mode.document.body.innerHTML += html;
	}else{
		mode.document.body.innerText += html;
	}
}

//普通插入
function format(what,opt){
	if(canedit==false){
		alert('请转换编辑状态！');
		return true;
	}
	if (opt==null) mode.document.execCommand(what);
	else mode.document.execCommand(what,"",opt);
	mode.focus();
}

//插入信息
function insert(what){
	if(canedit==false){
		alert('请转换编辑状态！');
		return true;
	}
	mode.focus();
	var wangdd=mode.document.selection.createRange();
	
	switch(what){
	case "nowdate": 	//系统当前日期
		var dd= new Date();
		insertHTML(dd.toLocaleDateString());
		break;
	case "nowtime":		//当前系统时间
		var dd=new Date();
		insertHTML(dd.toLocaleTimeString());
		break;
	case "br":			//插入换行符
		insertHTML("<br>");
		break;
	case "big":			//字体变大
		insertHTML("<big>"+wangdd.text+"</big>");
		break;
	case "small":		//字体变小
		insertHTML("<smaill>"+wangdd.text+"</small>");
		break;
	case "code":		// 代码片段样式
		insertHTML('<table width=95% border="0" align="Center" cellpadding="6" cellspacing="0" style="border: 1px Dotted #6595d6; TABLE-LAYOUT: fixed"><tr><td bgcolor=#e8f4ff style="WORD-WRAP: break-word"><font style="color: #990000;font-weight:bold">以下是代码片段：</font><br>'+HTMLEncode(wangdd.text)+'</td></tr></table>');
		break;
	case "quote":		// 引用片段样式
		insertHTML('<table width=95% border="0" align="Center" cellpadding="6" cellspacing="0" style="border: 1px Dotted #6595d6; TABLE-LAYOUT: fixed"><tr><td bgcolor=#e8f4ff style="WORD-WRAP: break-word"><font style="color: #990000;font-weight:bold">以下是引用片段：</font><br>'+HTMLEncode(wangdd.text)+'</td></tr></table>');
		break;
	case "page":		// 插入EXCEL表格
		insertHTML("$Split_Page$");
		break;
	default:
		alert("错误！");
	}
	wangdd=null;
	mode.focus();
}


//转换模式
function setmode(NewMode){
	switch (NewMode){
		case "code":
			canedit=true;
			mode.document.body.disabled=false;		
			if (mode.document.designMode=="On") {
				mode.document.body.innerText=mode.document.body.innerHTML;
			}
			break;
		case "edit":
			canedit=true;
			mode.document.body.disabled=false;
			if (mode.document.designMode=="On") {
				mode.document.body.innerHTML=mode.document.body.innerText;
			}
			break;
		}
		mode.focus();
}

//显示无模式对话框
function modewindow(url,width,height){
	if(canedit==false){
		alert("请转换编辑状态！");
		return true;
	}
	var arr = showModalDialog(url, window, "dialogWidth:" + width + "px;dialogHeight:" + height + "px;help:no;scroll:no;status:no");
	mode.focus();
}

// 检测当前是否允许编辑
function validateMode() {
	if (canedit) return true;
	alert("需转换为编辑状态后才能使用编辑功能！");
	mode.focus();
	return false;
}