
/// アクティブなiframeのname
var gsFrameName;
/// エディター配列
var gaEditors = new Array();
/// エディター配列の名前用index
var indexEditorName = 0;
/// エディター配列のdisplay用index
var indexEditorDisplay = 1;
/// アクティブなiframeのデフォルト値
var gsDefaultIframe = "editor_body";
/// エディターDIVのID
var gsDivID = "inner_div";
/// エディターの名前変数のID
var gsEditorName = "editor_name";
/// moreチェックボックスのID
var gsIdMore = "more_exists";
/// mobileチェックボックスのID
var gsIdMobile = "mobile_exists";

/// 子ウィンドウ群
var oSub1 = "sub1";
var oSub2 = "sub2";
var oSub3 = "sub3";
var oSub4 = "sub4";
var oSub5 = "sub5";

/// 許可タグ
var gsTags = new Array("<div", "<p", "<b", "<i", "<u", "<s", "<blockquote", "<a", "<font", "<img");

/// 絵文字データのパス
var gsEmoticonPath = "../Image/emoticon/";

/// 画像添付識別子
var gsImageSep = ",";
var gsImageStartTag = "{";
var gsImageStart = "{{IMG" + gsImageSep;
var gsImageEnd = gsImageSep + "IMG}}";
var gsImageID = "id=";
/// 画像表示位置識別子
var gsImageAlign = "align=";
var gsImageLeft = "left";
var gsImageCenter = "center";
var gsImageRight = "right";
/// 画像サイズ識別子
var gsImageWidth = "width=";
var gsImageHeight = "height=";
var gsImageDefault = "default";

/// 絵文字添付識別子
var gsEmoticonStart = "{{EMOTICON" + gsImageSep;
var gsEmoticonEnd = gsImageSep + "EMOTICON}}";

/*
 * HTMLエンコード
 */
function htmlEncode(sInput) {
	sInput = sInput.replace(/&/g, "&amp;");
	sInput = sInput.replace(/"/g, "&quot;");
	sInput = sInput.replace(/</g, "&lt;");
	sInput = sInput.replace(/>/g, "&gt;");
	sInput = sInput.replace(/ /g, "&nbsp;");
	return sInput;
}

/*
 * HTMLデコード
 */
function htmlDecode(sInput) {
	sInput = sInput.replace(/&nbsp;/g, " ");
	sInput = sInput.replace(/&gt;/g, ">");
	sInput = sInput.replace(/&lt;/g, "<");
	sInput = sInput.replace(/&quot;/g, "\"");
	sInput = sInput.replace(/&amp;/g, "&");
	return sInput;
}

/*
 * 例外タグチェック
 */
//function checkExceptionTag(sTagStart) {
//	//sTagStart = "<xxx";
//	for (iTag = 0; iTag < gsTags.length; iTag++) {
//		var oReg = new RegExp(sTagStart, "i");
//		var sTag = "<" + gsTags[iTag];
//		if (sTag.search(oReg) > -1) {
//			return false;
//		}
//	}
//	return true;
//}

/*
 * 初期エディターの設定
 */
function initialize(sFormName) {
	setFocus(gsDefaultIframe);
	if (!document.all) {
		window.frames[gsDefaultIframe].ffFocus();
	}
	
	/// id_more、id_mobileのチェックOFF
	oIdMore = window.document.getElementById(gsIdMore);
	if (oIdMore) {
		if (oIdMore.checked) {
			oIdMore.checked = false;
			oIdMore.click();
		}
	}
	oIdMobile = window.document.getElementById(gsIdMobile);
	if (oIdMobile) {
		if (oIdMobile.checked) {
			oIdMobile.checked = false;
			oIdMobile.click();
		}
	}
	
	for (var i = 0; i < gaEditors.length; i++) {
		var sEditorName = gaEditors[i][indexEditorName];
		var sDataName = sEditorName.replace("editor", "data");
		var oInput = dataToEditor(sFormName, sEditorName, sDataName, false);
		if (oInput.value.length > 1) {
			parseAndAddImage(window, oInput.value);
		}
	}
	window.document.forms[sFormName].jscheck_flg.value = 0;
}
function dataToEditor(sFormName, sEditorName, sDataName, bNoClean) {
	var oForm = window.document.forms[sFormName];
	var oFrame = window.frames[sEditorName];
	var oInput = oForm.elements[sDataName];
	var sInput = oInput.value;
	if (!bNoClean) {
		sInput = cleanInputData(sInput);
	} else {
		sInput = emoticonToImg(sInput);
	}
	var oReg = new RegExp("&lt;div(&nbsp;| )id=[\"']?inner_div[\"']?&gt;", "gi");
	if (sInput.match(oReg)) {
		sInput = htmlDecode(sInput);
	}
	sInput = sInput.replace(/<br( |\/)+>/g, "<br>");
	sInput = sInput.replace(/\t/g, "&nbsp;");
	var sData = oFrame.makeDivSand(gsDivID, sInput);
	//sData = brToDiv(sData);
	oFrame.document.body.innerHTML = sData;
		
	return oInput;
}

/*
 * ファイルカウントの更新
 */
function updateFileCount(sFormName) {
	
	var nCount = 0;
	for (i = 0; i < gaEditors.length; i++) {
		var sEditorName = gaEditors[i][indexEditorName];
		var oFrame = window.frames[sEditorName];
		var sData = getTextData(oFrame);
	
		if (sData.length > 1) {
			nCount += parseAndGetImage(window, sData);
		}
	}
	
	if (nCount > 0) {
		var oFileCount = getFileCountObject(window);
		oFileCount.value = nCount;
	}
}
/*
 * 本文データを解析してimageブロックの数を取得
 */
function parseAndGetImage(oWindow, sData) {
	var sTarget = sData.replace(/(\r|\n)+/, "");
	var sSearch = gsImageStart + "[^" + gsImageStartTag + "]*" + gsImageEnd;
	var oReg = new RegExp(sSearch, "g");
	var oResult = sTarget.match(oReg);
	if (null == oResult) {
		return 0;
	}
	return oResult.length;
}


/*
 * ウィンドウクローズ時の処理
 */
function finalize() {
	checkClose(oSub1);
	checkClose(oSub2);
	checkClose(oSub3);
	checkClose(oSub4);
	checkClose(oSub5);
}
function checkClose(oWindow) {
	if (false == oWindow.closed){ 
		oWindow.close();
	} 
}

/*
 * エディター配列取得
 */
function searchEditor(sName) {
	for (i = 0; i < gaEditors.length; i++) {
		if (sName == gaEditors[i][indexEditorName]) {
			return gaEditors[i];
		}
	}
	return null;
}

/*
 * 絵文字ウィンドウを開く
 */
function openEmoticonWindow(sURL) {
	oSub1 = window.open(sURL, 'EmoticonWindow', 'top=0,left=0,width=500,height=370');
}

/*
 * マイカテゴリ作成ウィンドウを開く
 */
//function openMycategoryWindow(sURL) {
//	oSub2 = window.open(sURL, 'MycategoryWindow', 'top=0,left=0,width=450,height=180');
//}

/*
 * iframeのエディットモード開始
 */
function startFrameEdit(sName, sBlock) {
	var aInput = new Array(new Array(sName, true));
	gaEditors = gaEditors.concat(aInput);
	jointStartEditMode(sName, sBlock);
}
function startFrameEditForComment(sName, sFormName) {
	startFrameEdit(sName, '');
	return;
	/// コメント投稿は戻る必要無し	
	var sEditorName = sName;
	var sDataName = sEditorName.replace("editor", "data");
	sDataName = sDataName.replace(/_[0-9]*$/, "");
	dataToEditor(sFormName, sEditorName, sDataName, true);
}

/*
 * エディットモード開始→エディター側の関数コール
 */
function jointStartEditMode(sName, sBlock) {
	if ( ("" == sBlock) || ("none" != window.document.getElementById(sBlock).style.display) ) {
		oFrame = window.frames[sName];
		oFrame.startEditMode(sName);
	} else {
		var aEditor = searchEditor(sName);
		aEditor[indexEditorDisplay] = false;
	}
}

/*
 * アクティブなiframe名の設定
 */
function setFocus(sName) {
	gsFrameName = sName;
	var aEditor = searchEditor(gsFrameName);
	aEditor[indexEditorDisplay] = true;
}

/*
 * 全てのiframeのデザインモードをoffにする
 */
function allBlur() {
	for (i = 0; i < gaEditors.length; i++) {
		if (gaEditors[i][indexEditorDisplay]) {
			oFrame = window.frames[gaEditors[i][indexEditorName]];
			oFrame.finishEditMode();
			gaEditors[i][indexEditorDisplay] = false;
		}
	}
}

/*
 * 絵文字をiframeに挿入
 */
function insertEmoticon(oWindow, sID) {
	focusIframe(oWindow);
	var sImgSrc = gsEmoticonPath + sID + ".gif";
	insertImage(oWindow.frames[gsFrameName], sImgSrc);
}

/*
 * タグをiframeに挿入
 */
function insertTag(sStart, sEnd) {
	if(document.all){
		gsFrameName = gsFrameName.replace("title", "body");
	}
	focusIframe(window);
	insertTagSet(window.frames[gsFrameName], sStart, sEnd);
}

/*
 * iframeにフォーカスセットする
 */
function focusIframe(oWindow) {
	if (null == oWindow) {
		return;
	}
	var oFrame = oWindow.document.getElementById(gsFrameName);
	if (null == oFrame) {
		return;
	}
	oFrame.focus();
	oWindow.frames[gsFrameName].focus();
}

/*
 * iframeにImageを挿入する
 */
function insertImage(oWindow, sImgSrc) {
	
	if (null == oWindow) {
		return;
	}
	
	if (document.all) {
		var sImgTag = "<img src=\"" + sImgSrc + "\" />";
		var oDiv = checkDiv(oWindow);
		if (oDiv.innerHTML.length < 1) {
			oDiv.innerHTML = sImgTag;
		} else {
			try {
				var oRange = oWindow.document.selection.createRange();
				oRange.pasteHTML(sImgTag);
			} catch (e) {}
		}
	} else {
		oWindow.document.execCommand("InsertImage", false, sImgSrc);
	}
}

/*
 * DIVの正規化
 */
function checkDiv(oWindow) {
	var oDiv = oWindow.document.getElementById(gsDivID);
	if (document.all) {
		if (!oDiv) {
			//oWindow.addDiv(gsDivID, "");
			oWindow.addDiv(gsDivID, oWindow.document.body.innerHTML);
			oDiv = oWindow.document.getElementById(gsDivID);
		}
	} else {
		if (!oDiv || oDiv.innerHTML.length < 1) {
			var iframe = document.getElementById(gsFrameName);
			var sText = iframe.contentDocument.body.innerHTML;
			if(sText.match(/<div id="inner_div"><\/div>/)){
				var sText = sText.replace(/<div id="inner_div"><\/div>/,"");
				//var sText = sText.replace(/(.+)/,"$1");
			}
			var oSelection = oWindow.getSelection();
			var oRange = oSelection.getRangeAt(0);
			var oNode = oSelection.anchorNode;
			if (!sText) {
				sText = "";
			}
			sText = oWindow.addDiv(gsDivID, sText);
			oDiv = oWindow.document.getElementById(gsDivID);
		}
	}
	return oDiv;
}

/*
 * IE用選択範囲向けペースト
 */
function pasteToRange(oWindow, oDiv, sStart, sEnd) {
	if (oDiv.innerHTML.length < 1) {
		oDiv.innerText = sStart + sEnd;
	} else {
		var oRange = oWindow.document.selection.createRange();
		if (sEnd.length > 0) {
			oRange.text = sStart + oRange.text + sEnd;
		} else {
			oRange.text = sStart;
		}
		//oWindow.repairDiv();
		oRange.select();
	}
}

/*
 * iframeにテキストを挿入する
 */
function insertText(oWindow, sInputText) {
	oDiv = checkDiv(oWindow);
	if (document.all) {
		pasteToRange(oWindow, oDiv, sInputText, "");
	} else {
		insertTagSet(oWindow, sInputText, "");
	}
}

/*
 * iframeにタグを挿入する
 */
function insertTagSet(oWindow, sStartTag, sEndTag) {
	oDiv = checkDiv(oWindow);
	if (document.all) {
		try {
			pasteToRange(oWindow, oDiv, sStartTag, sEndTag);
		} catch (e) {}
	} else {
		var oSelection = oWindow.getSelection();
		var oRange = oSelection.getRangeAt(0);
		var oNode = oSelection.anchorNode;
		var sText = oNode.nodeValue;
		if (sText) {
			var nStartPos = oRange.startOffset;
			var nEndPos = oRange.endOffset;
			var sHeader = sText.substring(0, nStartPos);
			var sSelect = sStartTag + oRange.toString() + sEndTag;
			var sFooter = sText.substring(nEndPos, sText.length);
			sText = sHeader + sSelect + sFooter;
			oNode.nodeValue = sText;
		} else {
			//var oNode = oDiv.childNodes[0];
			//oNode.nodeValue += sStartTag + sEndTag;
			sStartTag = sStartTag.replace(/</,"&lt;");
			sStartTag = sStartTag.replace(/>/,"&gt;");
			sEndTag = sEndTag.replace(/</,"&lt;");
			sEndTag = sEndTag.replace(/>/,"&gt;");
			if(oWindow.document.getElementById(gsDivID) != null){
				oWindow.document.getElementById(gsDivID).innerHTML += sStartTag + sEndTag;
			}else{
				oWindow.document.body.innerHTML = '<div id="inner_div">' + sStartTag + sEndTag + '</div>';
			}
		}
	}
}

/*
 * リンクタグの挿入
 */
function insertLinkTag() 
{
	var sUrl = prompt("リンク先URL", "http://");
	if (sUrl){
		sUrl = sUrl.replace(/"/g, "\\\"");
		//sUrl = sUrl.replace(/'/g, "\\'");
		insertTag("<a href=\"" + sUrl + "\" target=\"_blank\">", "</a>");
	}
}

/*
 * 入力ブロックの表示切り替え
 */
function changeBlockDisplay(sBoxId, sBlockId, sTitleId, sBodyId) {
	oCheckBox = window.document.getElementById(sBoxId);
	displayMoreBlock(sBlockId + "_1", sTitleId, sBodyId, oCheckBox.checked);
	displayMoreBlock(sBlockId + "_2", sTitleId, sBodyId, oCheckBox.checked);
}

/*
 * 入力ブロックの表示
 */
function displayMoreBlock(sBlockId, sTitleId, sBodyId, bDisplay) {
	if (bDisplay) {
		window.document.getElementById(sBlockId).style.display = "";
		jointStartEditMode(sTitleId, sBlockId);
		jointStartEditMode(sBodyId, sBlockId);
	} else {
		window.document.getElementById(sBlockId).style.display = "none";
	}
}

/*
 * フォントカラーパレットを開く
 */
function openFontColorPalette(sURL) {
	if (document.all) {
		sOption = "width=175,height=115,left=" + window.event.screenX + ",top=" + window.event.screenY;
	} else {
		sOption = "width=115,height=175,left=0,top=0";
	}
	oSub3 = window.open(sURL, 'FontColorPalette', sOption);
}

/*
 * フォント背景パレットを開く
 */
function openFontBgPalette(sURL) {
	if (document.all) {
		sOption = "width=175,height=115,left=" + window.event.screenX + ",top=" + window.event.screenY;
	} else {
		sOption = "width=115,height=175,left=0,top=0";
	}
	oSub4 = window.open(sURL, 'FontBgPalette', sOption);
}

/*
 * fontカラー設定タグの挿入
 */
function insertFontColorTag(oWindow, sValue) {
	
	if(document.all){
		gsFrameName = gsFrameName.replace("title", "body");
	}
	focusIframe(oWindow);
	var sStart = "<font style='color:" + sValue + "'>";
	var sEnd = "</font>";
	insertTagSet(oWindow.frames[gsFrameName], sStart, sEnd);
}

/*
 * font背景設定タグの挿入
 */
function insertFontBgTag(oWindow, sValue) {
	
	if(document.all){
		gsFrameName = gsFrameName.replace("title", "body");
	}
	focusIframe(oWindow);
	var sStart = "<font style='background-color:" + sValue + "'>";
	var sEnd = "</font>";
	insertTagSet(oWindow.frames[gsFrameName], sStart, sEnd);
}

/*
 * 添付画像文字列の作成
 */
function createImageString(sFileID, sAlign) {
	var sData = gsImageStart;
	sData += gsImageID + sFileID + gsImageSep;
	sData += gsImageAlign + sAlign + gsImageSep;;
	sData += gsImageWidth + gsImageDefault + gsImageSep;
	sData += gsImageHeight + gsImageDefault;
	sData += gsImageEnd;
	return sData;
}

/*
 * Alignの変更
 */
function selectImageAlign(sFileName, nIndex) {
	var sAlign = gsImageCenter;
	if (1 == nIndex) {
		sAlign = gsImageLeft;
	} else if (2 == nIndex) {
		sAlign = gsImageRight;
	}
	for (i = 0; i < gaEditors.length; i++) {
		if (gaEditors[i][indexEditorName].match(/.*body/)) {
			selectImageAlignInner(window, sFileName, gaEditors[i][indexEditorName], sAlign);
		}
	}
}
function selectImageAlignInner(oWindow, sFileID, sName, sAlign) {
	var oReg = createImageReg(sFileID);
	var oFrame = oWindow.frames[sName];
	var oTag = oFrame.document.body;
	var sHtml = oTag.innerHTML;
	var oResult = sHtml.match(oReg);
	if (null == oResult) {
		return;
	}
	for (iSel = 0; iSel < oResult.length; iSel++) {
		var sImage = oResult[iSel];
		var sSearch = gsImageAlign + "[^,]*";
		var sRep = gsImageAlign + sAlign;
		var oSearchReg = new RegExp(sSearch, "gi");
		sImage = sImage.replace(oSearchReg, sRep);
		oTag.innerHTML = sHtml.replace(oReg, sImage);
	}
}

/*
 * 本文データを解析してimageブロックを追加
 */
function parseAndAddImage(oWindow, sData) {
	var sTarget = sData.replace(/(\r|\n)+/, "");
	var sSearch = gsImageStart + "[^" + gsImageStartTag + "]*" + gsImageEnd;
	var oReg = new RegExp(sSearch, "g");
	var oResult = sTarget.match(oReg);
	if (null == oResult) {
		return;
	}
	for (iSearch = 0; iSearch < oResult.length; iSearch++) {
		var sImage = oResult[iSearch];
		var sID = sImage.match(/id=[^,]*/g);
		sID = (null == sID) ? "" : sID[0];
		sID = sID.substring("id=".length, sID.length);
		var sAlign = sImage.match(/align=[^,]*/g);
		sAlign = (null == sAlign) ? "" : sAlign[0];
		sAlign = sAlign.substring("align=".length, sAlign.length);
		addImageBlock(oWindow, sID, sID, sAlign, false, false);
	}
}

/*
 * 添付画像文字列の挿入
 */
function insertImageString(oWindow, sFileID, sAlign) {
	
	if(document.all){
		gsFrameName = gsFrameName.replace("title", "body");
		focusIframe(oWindow);
		var sData = createImageString(sFileID, sAlign);
		insertText(oWindow.frames[gsFrameName], sData);
	}else{
		//gsFrameName = gsFrameName.replace("title", "body");
		focusIframe(oWindow);
		var sData = createImageString(sFileID, sAlign);
		//oWindow.document.execCommand("InsertImage", false, sData);
		//insertText(oWindow.frames[gsFrameName], sData);

		// iframe$Ndocument$Hwindow$r<hF@
		var win = document.getElementById(gsFrameName).contentWindow;
		var doc = document.getElementById(gsFrameName).contentDocument;

		var fragment = doc.createDocumentFragment();
		var div = doc.createElement("div");
		div.innerHTML = sData;

		// divG[2<$NNode$rfragment$K0\F0
		while (div.firstChild) {
			fragment.appendChild(div.firstChild);
		}

		var selection = win.getSelection();
		if(selection.rangeCount == 0){
			window.frames[gsFrameName].ffFocus();
		}
		range = selection.getRangeAt(0);

		// A*BrHO0O$N:o=|
		range.deleteContents();

		var container = range.startContainer;
		var offset = range.startOffset;

		switch (container.nodeType) {
			case 1:
				// Element node
				container.insertBefore(fragment,
						container.childNodes[offset]);
				break;
			case 3:
				// Text node
				var node = container.splitText(offset);
				node.parentNode.insertBefore(fragment, node);
				break;
		}
	}
}

/*
 * 添付画像文字列検索オブジェクトを作成
 */
function createImageReg(sFileID) {
	var sData = gsImageStart;
	sData += gsImageID;
	sData += sFileID;
	sData += "[^" + gsImageStartTag + "]*";
	sData += gsImageEnd;
	return new RegExp(sData, "g");
}

/*
 * 添付画像文字列の削除
 */
function deleteImageString(oWindow, sFileID) {
	for (i = 0; i < gaEditors.length; i++) {
		if (gaEditors[i][indexEditorName].match(/.*body/)) {
			deleteImageStringInner(oWindow, sFileID, gaEditors[i][indexEditorName]);
		}
	}

}
function deleteImageStringInner(oWindow, sFileID, sName) {
	var oReg = createImageReg(sFileID);
	var oFrame = oWindow.frames[sName];
	var oTag = oFrame.document.body;
	sHtml = oTag.innerHTML;
	oTag.innerHTML = sHtml.replace(oReg, "");
}

/*
 * データ送信
 */
function sendData(sFormName, bPreview, sAction) {
	var oForm = window.document.forms[sFormName];
	for (i = 0; i < gaEditors.length; i++) {
		var sEditorName = gaEditors[i][indexEditorName];
		var sDataName = sEditorName.replace("editor", "data");
		var oFrame = window.frames[sEditorName];
		if (!document.all){
			sData = getEditorData(oFrame).replace(/(.+)<\/div>(.+)/,"$1$2</div>");
			sData = sData.replace(/(.+)<br><\/div>/,"$1</div>");
			oForm.elements[sDataName].value = htmlEncode(sData);
		}else{
			sData = getEditorData(oFrame).replace(/(.+)(<br>)(.+)/,"$1$3");
			oForm.elements[sDataName].value = htmlEncode(sData);
		}
	}
	if(bPreview){
		oForm.action=sAction;
		oForm.target="newWin";
		oForm.method="post"
		oForm.submit();
	}else{
		oForm.action = sAction;
		oForm.target = "_self";
		oForm.submit();
	}
}
function sendDataForSafari(sFormName, bPreview, sAction) {
	var oForm = window.document.forms[sFormName];
	var gaTextArea = new Array("editor_title", "editor_body", "editor_title_more","editor_body_more","editor_title_mobile","editor_body_mobile");
	for (i = 0; i < gaTextArea.length; i++) {
		var sEditorName = gaTextArea[i];
		var sDataName = sEditorName.replace("editor", "data");
		var oFrame = window.frames[sEditorName];
		oForm.elements[sDataName].value = htmlEncode(oForm.elements[sEditorName].value);
	}
	if(bPreview){
		oForm.action=sAction;
		oForm.target="newWin";
		oForm.method="post"
		oForm.submit();
	}else{
		oForm.action = sAction;
		oForm.target = "_self";
		oForm.submit();
	}
}
function sendComment(sFormName, sEditorName, sDataName, sCheckFlg, sNameId, sUrlId, sCptId) {
	var oForm = window.document.forms[sFormName];
	var oFrame = window.frames[sEditorName];
	var sData = htmlEncode(getEditorData(oFrame));
	if (checkComment(getTextData(oFrame), sCheckFlg, sNameId, sUrlId, sCptId)) {
		oForm.elements[sDataName].value = sData;
		oForm.submit();
	}
}
function checkComment(sData, sCheckFlg, sNameId, sUrlId,sCptId) {
	if (sCheckFlg.length < 1) {
		var sName = window.document.getElementById(sNameId).value;
		var sUrl = window.document.getElementById(sUrlId).value;
		if (sName.length < 1) {
			alert("名前を入力してください。");
			return false;
		}
		if (getByteCount(sName) > 254) {
			alert("名前は全角127文字（半角254文字）以内で入力してください。");
			return false;
		}
		//if (sUrl.length < 1) {
		//	alert("URLを入力してください。");
		//	return false;
		//}
		if (sUrl.length > 0) {
			var oReg = new RegExp("^https?(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$", "g");
			if (!sUrl.match(oReg)) {
				alert("URLが不正です。");
				return false;
			}
		}
		if (getByteCount(sUrl) > 255) {
			alert("URLは全角127文字（半角255文字）以内で入力してください。");
			return false;
		}
	}
	if (getByteCount(sData) > 4000) {
		alert("コメントは全角2000文字（半角4000文字）以内で入力してください。");
		return false;
	}
	var oReg = new RegExp("(\r|\n|\t| |　)+", "g");
	var sCheckData = sData.replace(oReg, "");
	if (sCheckData.length < 1) {
		alert("コメントを入力してください。");
		return false;
	}
	if(window.document.getElementById(sCptId) != null){
		if(window.document.getElementById(sCptId).value.length < 1){
			alert('画像に表示されている文字列を入力してください。');
			return false;
		}
	}
	return true;
}

/**
 * マルチバイトを加味したサイズ計算
 */
function isMultiByte(sValue) {
	for (var i = 0; i < sValue.length; ++i) {
		var c = sValue.charCodeAt(i);
		if (c < 256 || (c >= 0xff61 && c <= 0xff9f)) {
			return false;
		}
	}
	return true;
}
function getByteCount(sValue) {
	var nCount = 0;
	for ( var i = 0; i < sValue.length; ++i ) {
		var sPart = sValue.substring(i, i + 1);
		if( isMultiByte(sPart) ){
			nCount += 2;
		} else {
			nCount += 1;
		}
	}
	return nCount;
}


/*
 * divを省いた文字列の作成
 */
function getEditorData(oWindow) {
	var oBody = oWindow.document.body;
	var sData = oBody.innerHTML;
	sData.replace(/(\r\n|\n)/g, "{{BR}}");
	
	
	var oResult = sData.match(/<img [^<]*src=[^<]*0x....\.gif[^<]*>/gi);
	var nCount = 0;
	if (null != oResult) {
		nCount = oResult.length;
	}
	for (ige = 0; ige < nCount; ige++) {
		sMatch = oResult[ige];
		sMatch = sMatch.replace(/<img [^<]*0x/i, "");
		sMatch = sMatch.replace(/\.gif[^<]*>/i, "");
		var sReg = "<img [^<]*src=[^<]*0x" + sMatch + "\.gif[^<]*>";
		var oReg = new RegExp(sReg, "gi");
		sMatch = gsEmoticonStart + sMatch + gsEmoticonEnd;
		sData = sData.replace(oReg, sMatch);
	}
	return sData;
}
/*
 * 表に見える文字列の作成
 */
function getTextData(oWindow) {
	var oBody = oWindow.document.body;
	var sData = oBody.innerHTML;
	var oReg = new RegExp("<br[ /]*>", "gi");
	sData = sData.replace(oReg, "\n");
	var oReg = new RegExp("<img[^<]*>", "gi");
	sData = sData.replace(oReg, "EM");
	var oReg = new RegExp("<[^<]*>", "gi");
	sData = sData.replace(oReg, "");
	sData = htmlDecode(sData);
	return sData;
}

/*
 * EMOTICON文字列から<img>への変換
 */
function emoticonToImg(sInput) {
	var sData = sInput;
	oReg = new RegExp(gsEmoticonStart, "gi");
	sData = sData.replace(oReg, "<img src='" + gsEmoticonPath + "0x");
	oReg = new RegExp(gsEmoticonEnd, "gi");
	sData = sData.replace(oReg, ".gif' />");
	return sData;
}

/*
 * selectboxに項目を追加する
 */
function rewriteSelect(oWindow, sAdd, sID) {
	if (sAdd.length < 1) {
		return;
	}
	
	if (null != oWindow) {

		var oSelect = window.document.forms["entry_index"].elements["mycategory"];
		if (null == oSelect) {
			return;
		}
			
		var l = sID;
		var oOPTION = document.createElement('option');
		oOPTION.text = sAdd;
		oOPTION.label = sAdd;
		oOPTION.value = l;	
		if (document.all) {
			oSelect.add(oOPTION, l);
		} else {
			oSelect.add(oOPTION, oSelect.options.item(l));
		}
		
	}
}

/*
 * 挿入内容を綺麗にする
 */
function cleanInputData(sData) {
	sData = sData.replace(/(\n|\r\n)/g, "<br />");
	sData = sData.replace(/<div>&nbsp;<\/div>/gi, "<br />");
	sData = sData.replace(/^&nbsp;$/gi, "");
	sData = sData.replace(/^(<br>|<br \/>|<br\/>)*$/gi, "");
	sData = sData.replace(/<br[ /]*><br[ /]*>$/gi, "<br />");
	sData = sData.replace(/<p>/gi, "<div>");
	sData = sData.replace(/<\/p>/gi, "</div>");
	// IE用に、最後の改行を消しておかないと、編集時にどんどん文末に<br>が追加されていく
	if (document.all) {
		sData = sData.replace(/(<br>|<br \/>|<br\/>|&nbsp;)$/, "");
	}
	sData = sData.replace(/^<div id=inner_div>.*<\/div>$/gi, "");
	//sData = sData.replace(/<div>(&nbsp;|<br>)*<\/div>/gi, "<div></div>");
	return sData;
}

/*
 * <BR>を<DIV>に変更
 */
function brToDiv(sData) {
	sData = sData.replace(/<br[ /]*>/gi, "</div><div>");
	sData = sData.replace(/<div[^<]*><div>/gi, "<div>");
	sData = sData.replace(/<\/div><\/div>/gi, "</div>");
	sData = sData.replace(/<div><\/div>$/gi, "");
	return sData;
}

function displayBodyData(sName) {
	var oFrame = window.frames[sName];
	window.alert(oFrame.document.body.innerHTML);
}

