var gSetColorType = "";
var gIsIE = document.all;
var gIEVer = fGetIEVer();
var gLoaded = false;
var ev = null;


function fGetEv(e){
	ev = e;
}
function fGetIEVer(){
	var iVerNo = 0;
	var sVer = navigator.userAgent;
	if(sVer.indexOf("MSIE")>-1){
		var sVerNo = sVer.split(";")[1];
		sVerNo = sVerNo.replace("MSIE","");
		iVerNo = parseFloat(sVerNo);
	}
	return iVerNo;
}
function fSetEditable(){
	var f = window.frames["HtmlEditor"];
	f.document.designMode="on";
	if(!gIsIE)	{
		f.document.execCommand("useCSS",false, true);
	}
}
function fSetFrmClick(){
	var f = window.frames["HtmlEditor"];
	f.document.onmousemove = function(){
		window.onblur();
	};
	f.document.onclick = function(){
		fHideMenu();
	};
}
function fSetHtmlContent(){

	//var header = "<head><link rel=\"stylesheet\" type=\"text/css\" href=\"editorArea.css\" /></head><body>" ;
	var header = "<head><style>body,a,table,div,span,td,th,input,select{font-size:9pt;font-family:'宋体,Verdana,Arial';Color:#000000;}</style></head><body MONOSPACE>" ;
	var f = window.frames["HtmlEditor"];
	f.document.open();
	//f.document.getElementsByTagName("BODY")[0].innerHTML = oLinkField.value;
	f.document.write(header);
	f.document.close();
}
function fSetColor(){
	var dvForeColor =document.getElementById("dvForeColor");
	if(dvForeColor.getElementsByTagName("TABLE").length == 1){
		dvForeColor.innerHTML = drawCube() + dvForeColor.innerHTML;
	}
}
//var oURL = document.referrer;
var oURL = location.href;
var offset = oURL.lastIndexOf("ID=");
if (offset == -1)
{
	alert("请传入调用参数ID，即隐藏的内容表单项ID！");
} else {
	offset = offset + 3;
}
var sLinkFieldName = oURL.substring(offset);
var oLinkField = window.parent.document.getElementsByName(sLinkFieldName)[0];
var oForm = oLinkField.form ;

window.onload = function(){
	try{
		gLoaded = true;
		fSetEditable();
		fSetFrmClick();
		fSetHtmlContent();
		setLinkedField();
		changeLengthTip();
	}catch(e){
		// window.location.reload();
	}
}
window.onblur =function(){
	var dvForeColor =document.getElementById("dvForeColor");
	var dvPortrait =document.getElementById("dvPortrait");
	dvForeColor.style.display = "none";
	dvPortrait.style.display = "none";
	if(!gIsIE || 1==1){
		fHideMenu();
	}
}
window.onerror = function(){return true;};
document.onmousemove = function(e){
	if(gIsIE) var el = event.srcElement;
	else var el = e.target;
	var tdView = document.getElementById("tdView");
	var tdColorCode = document.getElementById("tdColorCode");
	var dvForeColor =document.getElementById("dvForeColor");
	var dvPortrait =document.getElementById("dvPortrait");
	var fontsize =document.getElementById("fontsize");
	var fontface =document.getElementById("fontface");
//	if(el.tagName == "IMG"){
//		el.style.borderRight="1px #cccccc solid";
//		el.style.borderBottom="1px #cccccc solid";
//	}else{
//		fSetImgBorder();
//	}
	if(el.tagName == "IMG"){
		try{
			if(fCheckIfColorBoard(el)){
				tdView.bgColor = el.parentNode.bgColor;
				tdColorCode.innerHTML = el.parentNode.bgColor;
			}
		}catch(e){}
	}else{
		dvForeColor.style.display = "none";
		if(!fCheckIfPortraitBoard(el)) dvPortrait.style.display = "none";
		if(!fCheckIfFontFace(el)) fontface.style.display = "none";
		if(!fCheckIfFontSize(el)) fontsize.style.display = "none";
	}
}
document.onclick = function(e){
	if(gIsIE) var el = event.srcElement;
	else var el = e.target;
	var dvForeColor =document.getElementById("dvForeColor");
	var dvPortrait =document.getElementById("dvPortrait");
	if(el.id == "imgFontface" || el.id == "imgFontsize"){

	}else{
		fHideMenu();
	}
	if(el.tagName == "IMG"){
		try{
			if(fCheckIfColorBoard(el)){
				format(gSetColorType, el.parentNode.bgColor);
				dvForeColor.style.display = "none";
				return;
			}
		}catch(e){}
		try{
			if(fCheckIfPortraitBoard(el)){
				format("InsertImage", el.src);
				dvPortrait.style.display = "none";
				return;
			}
		}catch(e){}
	}
}
function format(type, para){
	var f = window.frames["HtmlEditor"];
	var sAlert = "";
	if(!gIsIE){
		switch(type){
			case "Cut":
				sAlert = "你的浏览器安全设置不允许编辑器自动执行剪切操作,请使用键盘快捷键(Ctrl+X)来完成";
				break;
			case "Copy":
				sAlert = "你的浏览器安全设置不允许编辑器自动执行拷贝操作,请使用键盘快捷键(Ctrl+C)来完成";
				break;
			case "Paste":
				sAlert = "你的浏览器安全设置不允许编辑器自动执行粘贴操作,请使用键盘快捷键(Ctrl+V)来完成";
				break;
		}
	}
	if(sAlert != ""){
		alert(sAlert);
		return;
	}
	f.focus();
	if(!para)
		if(gIsIE)
			f.document.execCommand(type);
		else
			f.document.execCommand(type,false,false);
	else
		f.document.execCommand(type,false,para);
	f.focus();
}
function setMode(bStatus){	
	var sourceEditor = document.getElementById("sourceEditor");
	var HtmlEditor = document.getElementById("HtmlEditor");
	var f = window.frames["HtmlEditor"];
	var body = f.document.getElementsByTagName("BODY")[0];

	if(bStatus){
		sourceEditor.style.display = "";
		HtmlEditor.style.display = "none";
		sourceEditor.value = body.innerHTML;
		document.getElementById("standard").style.display="none";
	}else{
		sourceEditor.style.display = "none";
		HtmlEditor.style.display="";
		sourceEditor.value = DecodeFilter(sourceEditor.value,"script");
		//sourceEditor.value = DecodeFilter(sourceEditor.value,"div");
		sourceEditor.value = DecodeFilter(sourceEditor.value,"style");
		
		body.innerHTML = sourceEditor.value;
		document.getElementById("standard").style.display="";
		//fSetEditable();
	}

	body.innerHTML = DecodeFilter(body.innerHTML,"href");
	sourceEditor.value = DecodeFilter(sourceEditor.value,"href");
}

function synSourceIframe()	{
	var f = window.frames["HtmlEditor"];
	var body = f.document.getElementsByTagName("BODY")[0];
	sourceEditor.value = DecodeFilter(sourceEditor.value,"script");
	sourceEditor.value = DecodeFilter(sourceEditor.value,"style");
	//sourceEditor.value = DecodeFilter(sourceEditor.value,"div");
	body.innerHTML = sourceEditor.value;
}

function foreColor(e) {
	var sColor = fDisplayColorBoard(e);
	gSetColorType = "foreColor";
	if(gIsIE) format(gSetColorType, sColor);
}
function backColor(e){
	var sColor = fDisplayColorBoard(e);
	if(gIsIE)
		gSetColorType = "backcolor";
	else
		gSetColorType = "backcolor";
	if(gIsIE) format(gSetColorType, sColor);
}
function fDisplayColorBoard(e){
	if(gIsIE){
		var e = window.event;
	}
	if(gIEVer<=5.01 && gIsIE){
		var arr = showModalDialog("ColorSelect.htm", "", "font-family:Verdana; font-size:12; status:no; dialogWidth:21em; dialogHeight:21em");
		if (arr != null) return arr;
		return;
	}
	var dvForeColor =document.getElementById("dvForeColor");
	fSetColor();
	var iX = e.clientX;
	var iY = e.clientY;
	dvForeColor.style.display = "";
	dvForeColor.style.left = (iX-140) + "px";
	dvForeColor.style.top = (iY-10) + "px";
	return true;
}
function createLink() {
	var sURL=window.prompt("输入链接地址 (e.g. http://www.tom.com):", "http://");
	if ( (sURL!=null) && (sURL!="http://")) {
		if ( sURL.indexOf("http://") == -1) {
			sURL = "http://" + sURL;
		} 
		format("CreateLink", sURL);
	}
}
function createImg()	{
	var sPhoto=prompt("请输入图片位置:", "http://");
	if ((sPhoto!=null) && (sPhoto!="http://")){
		if ( sPhoto.indexOf("http://") == -1) {
			sPhoto = "http://" + sPhoto;
		} 
		format("InsertImage", sPhoto);
	}
}
function addPortrait(e){
	if(gIEVer<=5.01 && gIsIE){
		var imgurl = showModalDialog("portraitSelect.htm","", "font-family:Verdana; font-size:12; status:no; unadorned:yes; scroll:no; resizable:yes;dialogWidth:40em; dialogHeight:20em");
		if (imgurl != null)	format("InsertImage", imgurl);
		return;
	}
	var dvPortrait =document.getElementById("dvPortrait");
	var tbPortrait = document.getElementById("tbPortrait");
	var iX = e.clientX;
	var iY = e.clientY;
	dvPortrait.style.display = "";
	if(window.screen.width == 1024){
		dvPortrait.style.left = (iX-280) + "px";
	}else{
		if(gIsIE)
			dvPortrait.style.left = (iX-280) + "px";
		else
			dvPortrait.style.left = (iX-280) + "px";
	}
	dvPortrait.style.top = (iY-6) + "px";
	dvPortrait.innerHTML = '<table width="100%" border="0" cellpadding="5" cellspacing="1" style="cursor:hand" bgcolor="black" ID="tbPortrait"><tr align="left" bgcolor="#f8f8f8" class="unnamed1" align="center" ID="trContent">'+ drawPortrats() +'</tr>	</table>';
}
function fCheckIfColorBoard(obj){
	if(obj.parentNode){
		if(obj.parentNode.id == "dvForeColor") return true;
		else return fCheckIfColorBoard(obj.parentNode);
	}else{
		return false;
	}
}
function fCheckIfPortraitBoard(obj){
	if(obj.parentNode){
		if(obj.parentNode.id == "dvPortrait") return true;
		else return fCheckIfPortraitBoard(obj.parentNode);
	}else{
		return false;
	}
}
function fCheckIfFontFace(obj){
	if(obj.parentNode){
		if(obj.parentNode.id == "fontface") return true;
		else return fCheckIfFontFace(obj.parentNode);
	}else{
		return false;
	}
}
function fCheckIfFontSize(obj){
	if(obj.parentNode){
		if(obj.parentNode.id == "fontsize") return true;
		else return fCheckIfFontSize(obj.parentNode);
	}else{
		return false;
	}
}
function fImgOver(el){
	if(el.tagName == "IMG"){
		el.style.borderRight="1px #cccccc solid";
		el.style.borderBottom="1px #cccccc solid";
	}
}
function fImgMoveOut(el){
	if(el.tagName == "IMG"){
		el.style.borderRight="1px #F3F8FC solid";
		el.style.borderBottom="1px #F3F8FC solid";
	}
}
String.prototype.trim = function(){
	return this.replace(/(^\s*)|(\s*$)/g, "");
}
function fSetBorderMouseOver(obj) {
	obj.style.borderRight="1px solid #aaa";
	obj.style.borderBottom="1px solid #aaa";
	obj.style.borderTop="1px solid #fff";
	obj.style.borderLeft="1px solid #fff";
	/*var sd = document.getElementsByTagName("div");
	for(i=0;i<sd.length;i++) {
		sd[i].style.display = "none";
	}*/
}

function fSetBorderMouseOut(obj) {
	obj.style.border="none";
}

function fSetBorderMouseDown(obj) {
	obj.style.borderRight="1px #F3F8FC solid";
	obj.style.borderBottom="1px #F3F8FC solid";
	obj.style.borderTop="1px #cccccc solid";
	obj.style.borderLeft="1px #cccccc solid";
}

function fDisplayElement(element,displayValue) {
	if(gIEVer<=5.01 && gIsIE){
		if(element == "fontface"){
			var sReturnValue = showModalDialog("FontFaceSelect.htm","", "font-family:Verdana; font-size:12; status:no; unadorned:yes; scroll:no; resizable:yes;dialogWidth:112px; dialogHeight:271px");;
			format("fontname",sReturnValue);
		}else{
			var sReturnValue = showModalDialog("FontSizeSelect.htm","", "font-family:Verdana; font-size:12; status:no; unadorned:yes; scroll:no; resizable:yes;dialogWidth:130px; dialogHeight:250px");;
			format("fontsize",sReturnValue);
		}
		return;
	}
	if(element == "fontface"){
		var fontsize = document.getElementById("fontsize");
		fontsize.style.display = "none";
	}else if(element == "fontsize"){
		var fontface = document.getElementById("fontface");
		fontface.style.display = "none";
	}
	if ( typeof element == "string" )
		element = document.getElementById(element);
	if (element == null) return;
	element.style.display = displayValue;
	if(gIsIE){
		var e = event;
	}else{
		var e = ev;
	}
	var iX = e.clientX;
	var iY = e.clientY;
	element.style.display = "";
	element.style.left = (iX-40) + "px";
	element.style.top = (iY-10) + "px";
	return true;
}
function fSetModeTip(obj){
	var x = f_GetX(obj);
	var y = f_GetY(obj);
	var dvModeTip = document.getElementById("dvModeTip");
	if(!dvModeTip){
		var dv = document.createElement("DIV");
		dv.style.position = "absolute";
		dv.style.top = (y+20) + "px";
		dv.style.left = (x-40) + "px";
		dv.style.zIndex = "999";
		dv.style.fontSize = "12px";
		dv.id = "dvModeTip";
		dv.style.padding = "2 2 0 2px";
		dv.style.border = "1px #000000 solid";
		dv.style.backgroundColor = "#FFFFCC";
		dv.style.height = "12px";
		dv.innerHTML = "编辑源码";
		document.body.appendChild(dv);
	}else{
		dvModeTip.style.display = "";
	}
}
function fHideTip(){
	document.getElementById("dvModeTip").style.display = "none";
}
function f_GetX(e)
{
	var l=e.offsetLeft;
	while(e=e.offsetParent){
		l+=e.offsetLeft;
	}
	return l;
}
function f_GetY(e)
{
	var t=e.offsetTop;
	while(e=e.offsetParent){
		t+=e.offsetTop;
	}
	return t;
}
function fHideMenu(){
	var fontface = document.getElementById("fontface");
	var fontsize = document.getElementById("fontsize");
	fontface.style.display = "none";
	fontsize.style.display = "none";
}
// 替换特殊字符
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;
}
//===============================================
// 单个过滤
// 输入参数：
//	s_Content	:	要转换的数据字符串
//	s_Filter	:	要过滤掉的单个格式
//===============================================
function DecodeFilter(html, filter){
	switch(filter.toUpperCase()){
	case "SCRIPT":		// 去除所有客户端脚本javascipt,vbscript,jscript,js,vbs,event,...
//		html = execRE("</?script[^>]*>", "", html);
//		html = execRE("(javascript|jscript|vbscript|vbs):", "$1：", html);
//		html = execRE("on(mouse|exit|error|click|key|change)", "<I>on$1</I>", html);
//		html = execRE("&#", "<I>&#</I>", html);
		var patrn=/&nbsp;\s*<SCRIPT[^>]*>/i;
		if (!patrn.exec(html)) {
			html = execRE("(<script[^>]*>)","&nbsp;$1",html);
		}
		break;
	case "TABLE":		// 去除表格<table><tr><td><th>
		html = execRE("</?table[^>]*>", "", html);
		html = execRE("</?tr[^>]*>", "", html);
		html = execRE("</?th[^>]*>", "", html);
		html = execRE("</?td[^>]*>", "", html);
		break;
	case "CLASS":		// 去除样式类class=""
		html = execRE("(<[^>]+) class=[^ |^>]*([^>]*>)", "$1 $2", html) ;
		break;
	case "STYLE":		// 去除样式style=""
//		html = execRE("(<[^>]+) style=\"[^\"]*\"([^>]*>)", "$1 $2", html);
//		html = execRE("</?style[^>]*>", "", html);
//		html = execRE("</?form[^>]*>", "", html);
//		html = execRE("</?input[^>]*>", "", html);
//		html = execRE("</?select[^>]*>", "", html);
//		html = execRE("</?textarea[^>]*>", "", html);
//		html = execRE("</?iframe[^>]*>", "", html);
//		html = execRE("</?frame[^>]*>", "", html);
//		html = execRE("</?html[^>]*>", "", html);
//		html = execRE("</?body[^>]*>", "", html);
//		html = execRE("</?head[^>]*>", "", html);

		var patrn=/&nbsp;\s*<STYLE[^>]*>/i;
		if (!patrn.exec(html)) {
			html = execRE("(<style[^>]*>)","&nbsp;$1",html);
		}
		break;
	case "XML":			// 去除XML<?xml>
		html = execRE("<\\?xml[^>]*>", "", html);
		break;
	case "NAMESPACE":	// 去除命名空间<o:p></o:p>
		html = execRE("<\/?[a-z]+:[^>]*>", "", html);
		break;
	case "FONT":		// 去除字体<font></font>
		html = execRE("</?font[^>]*>", "", html);
		break;
	case "MARQUEE":		// 去除字幕<marquee></marquee>
		html = execRE("</?marquee[^>]*>", "", html);
		break;
	case "OBJECT":		// 去除对象<object><param><embed></object>
		html = execRE("</?object[^>]*>", "", html);
		html = execRE("</?param[^>]*>", "", html);
		html = execRE("</?embed[^>]*>", "", html);
		//break;
	//case "DIV":
		//html = execRE("< *div[^>]*>", "<BR><span>", html);
		//html = execRE("< *(/?) *div[^>]*>", "</span>", html);
		//break;
	case "HREF":
		html = execRE("<a href=\"[^>]*#\">","<a href=\"#\">",html);
//		html = execRE("<a href=\"http:\/\/[^>]*\/jsp\/prd\/HtmlEditor\/blankpage.htm([^>]*)\">","$1",html);
//		html = execRE("<a href=\"http:\/\/[^>]*\/jsp\/prd\/HtmlEditor\/index.html\?ID=prdDescription([^>]*)\">","$1",html);
		//html = execRE("<a href=\"file:\/\/\/E:\/shop\/([^\"]*)\">","<A HREF=\"$1\">",html);
		html = execRE("<a href=\"http:\/\/[^>]*\/jsp\/prd\/HtmlEditor\/([^\"]*)\">","<A HREF=\"$1\">",html);
	default:
	}
	return html;
}

// ============================================
// 执行正则表达式替换
// ============================================
function execRE(re, rp, content) {
	oReg = new RegExp(re, "ig");
	r = content.replace(oReg, rp);
	return r;
}
// 设置所属表单的提交或reset事件
function setLinkedField() {
	if (! oLinkField) return ;
	var oForm = oLinkField.form ;
	if (!oForm) return ;
}


var new_window;

function preview()	{
	var html = "<html><head><title>预览内容</title></head><body>";
		html += window.frames["HtmlEditor"].document.body.innerHTML;
		html += "</body></html>";
	if(!window_available())	{
		new_window = window.open("","","width=800,height=600,scrollbars=yes,resizable=yes");
		new_window.document.writeln(html);
	} else{
		new_window.focus();
		new_window.document.clear();
	}
}

function window_available()	{
	if(!new_window)	{
		return false;
	}	else if(new_window.closed)	{
		return false;
	}	else	{
		return true;
	}
}


function checkLength()	{

}


function chDiv1(){
	document.getElementById('li1').className='tab_current1';
	document.getElementById('li2').className='';
	document.getElementById('li1').innerHTML="标准";
	document.getElementById('li2').innerHTML="<a href=javascript:chDiv2()>HTML</a>";
	setMode(false);
}
	//其他信息
function chDiv2(){
	document.getElementById('li1').className='';
	document.getElementById('li2').className='tab_current1';
	document.getElementById('li1').innerHTML="<a href=javascript:chDiv1()>标准</a>";
	document.getElementById('li2').innerHTML="HTML";
	setMode(true);
}

function changeLengthTip() {
	if(sLinkFieldName == "shop_page_title"||sLinkFieldName == "shop_page_ad") {
		document.getElementById("lengthTip").innerHTML = "";
	} else {
		document.getElementById("lengthTip").innerHTML = "内容须不多于65535字。";
	}
}