/*@cc_on _d=document;eval('var document=_d')@*/

<!-- グローバル変数の定義 -->
var kizami=50;
var menuNum;
var charaLen;
var hatena;

maxForms = 1000; //appendChildする上限回数 (せりふの吹き出しの上限値)
cntForms =   0; //appendChildの回数記録用 (現在の数．idとnameに使うのだ)
nowDispFontSize=0;
charaButtonNum=5;	//1画面のAAボタンの数
charaSelectNum=3;	//ドロップダウンリストのキャラクター数
nowSelectOption=0;	//現在、選ばれているキャラクター
deleteSETSUMEI_flag=0;
menuSize=250;		//右側のメニューの横幅
charaAA = new Array();



initial_flag=0;
min_yohaku=30;	//AAと文字の最小余白px
nowCntForms=0;	//ステータスバーの表示用・現在、処理中のコマ番号

charaAA_bgColor="#FFFF99";
serifu_bgColor="#FFF0F5";

charaAAfromLoadData = new Array();
serifuupfromLoadData = new Array();
serifurightfromLoadData = new Array();
serifudownfromLoadData = new Array();
charaSetsumei=new Array();

charaname = new Array();
verb = new Array();
aa = new Array();
aadata = new Array();
seriesname= new Array();
menuData = new Array();

<!-- コマの削除処理をする関数 -->
function deleteKOMA() {
	if (cntForms > 0) {

		cntForms--;

		objBody = document.getElementById("AAstoryBody");

		var element = document.getElementById('serifu_'+cntForms+'_up');
	    objBody.removeChild(element);

		var element = document.getElementById('serifu_'+cntForms+'_right');
	    objBody.removeChild(element);
	
		var element = document.getElementById('serifu_'+cntForms+'_down');
		objBody.removeChild(element);

		var element = document.getElementById('chara_'+cntForms);
		objBody.removeChild(element);

		var element = document.getElementById('BR_'+cntForms);
		objBody.removeChild(element);

		var element = document.getElementById('BR_'+cntForms);
		objBody.removeChild(element);

		var element = document.getElementById('BR_'+cntForms);
		objBody.removeChild(element);

		var element = document.getElementById('HR_'+cntForms);
		objBody.removeChild(element);
	}
}

//改行ページはHTMLの<hr>で
function addHR() {
    var element = document.createElement('hr');
	element.id = "HR"+"_"+cntForms;

	var objBody = document.getElementsByTagName("body").item(0);
    objBody.appendChild(element);
}

//改行ページはHTMLの<hr>で
function addBR() {
    var element = document.createElement('br');
	element.id = "BR_"+cntForms;

    var objBody = document.getElementsByTagName("body").item(0);
    objBody.appendChild(element);
}

function init()  {
   nowDispFontSize = TextResizeDetector.addEventListener(onFontResize,null);
}

function onFontResize(e,args) {
	nowDispFontSize= args[0].iBase;
}


function loadCharaDataFromServer()
{
	httpObj = createXMLHttpRequest(XMLcharaData);
	httpObj.onreadystatechange = stCheck;

	if (httpObj)
	{
		httpObj.open("GET","XMLcharaData.xml",false);
		httpObj.send(null);
	}
}

function stCheck()
{
	if ((httpObj.readyState == 4) && (httpObj.status == 200))
	{
		XMLcharaData();
	}
}


function XMLcharaData()
{
	if ((httpObj.readyState == 4) && (httpObj.status == 200))
	{
		xmlData = httpObj.responseXML;

		aadataListTags = xmlData.getElementsByTagName('aadata');
		seriesnameListTags = xmlData.getElementsByTagName('seriesname');
		charanameListTags = xmlData.getElementsByTagName('charaname');
		verbListTags = xmlData.getElementsByTagName('verb');
		aaListTags = xmlData.getElementsByTagName('aa');

		charaLen = aadataListTags.length; // 登録されているユーザー数

		window.top.document.title = 'AAstroy・・・「やる夫で学ぶ○○」作成エディタ(現在、AAは'+charaLen+'個あります)';

		menuNum=Math.ceil(charaLen/charaButtonNum);
		resultText = ""; // データの内容を表示するための変数

		for(i=0; i<charaLen; i++)
		{
			try{
				var seri = seriesnameListTags[i].childNodes[0].nodeValue;
			}
			catch(e){
				seri ="データ取得に失敗"+i;
			}
			seriesname[i]=seri;

			try{
				var cha = charanameListTags[i].childNodes[0].nodeValue;
			}
			catch(e){
				cha ="データ取得に失敗"+i;
			}
			charaname[i]=cha;

			try{
				var ve = verbListTags[i].childNodes[0].nodeValue;
			}
			catch(e){
				ve ="データ取得に失敗"+i;
			}
			verb[i]=ve;
		
			try{
				var a = aaListTags[i].childNodes[0].nodeValue;
				a = a.replace(/^\n/,'');
				a = a.replace(/\n/mg,'<br>');
			}
			catch(e){
				a ="データ取得に失敗"+i;
			}
			
			aa[i]=a;
			charaSetsumei[i]=charaname[i]+"・"+verb[i]+"("+seriesname[i]+")";
			if(i % charaButtonNum ==0)
			{
				var j=Math.floor(i/charaButtonNum);
				menuData[j]=charaname[i]+"・"+verb[i]+"("+seriesname[i]+")";
			}
		}
	}
}

function setAAdataToMenu()
{
	var i;
	for(i=0;i<menuNum;i++)
	{
		var S = document.properties.cSelect;
		opt_add(S, menuData[i]);
		//document.all("cSs").options[i].text=menuData[i];
	}
	var j;
	menuNum=Math.ceil(charaLen/charaButtonNum);
	for(i=0;i<menuNum;i++)
	{
		charaAA[i] = new Array();
		for(j=0;j<charaButtonNum;j++)
		{
			if(i*charaButtonNum+j<charaLen)
			{
				charaAA[i][j] = aa[i*charaButtonNum+j];
			}
			else
			{
				charaAA[i][j] ="AAのデータ数が"+charaButtonNum+"の倍数ではなかったための余白です。";
			}
		}
	}
}

function opt_add(sel_obj, opt_v){
	if(! document.createElement) return;
	var opt_obj = document.createElement("OPTION");
	opt_obj.value = opt_v;
//  opt_obj.text = opt_v;	// n7 ok; ie cannot
	var t_obj = document.createTextNode(opt_v);
	opt_obj.appendChild( t_obj );
	sel_obj.appendChild(opt_obj);
}

function small_textarea()
{

	if(document.getElementById('ta'))
	{
		var objTextArea = document.getElementById('ta');
		objTextArea.style.width = 0+ 'px' ;
		objTextArea.rows = 1;
	}

	if(document.getElementById('ta2'))
	{
		var objTextArea = document.getElementById('ta2');
		objTextArea.style.width = 0+ 'px' ;
		objTextArea.rows = 1;
	}

	if(document.getElementById('ta3'))
	{
		var objTextArea = document.getElementById('ta3');
		objTextArea.style.width = 0+ 'px' ;
		objTextArea.rows = 1;
	}

	if(document.getElementById('writer'))
	{
		var objTextArea = document.getElementById('writer');
		objTextArea.style.width = 0+ 'px' ;
		objTextArea.rows = 1;
	}

	if(document.getElementById('mangatitle2'))
	{
		var objTextArea = document.getElementById('mangatitle2');
		objTextArea.style.width = 0+ 'px' ;
		objTextArea.rows = 1;
	}


}

function dispNowXYpos()
{
	//document.properties.mousePosX.value = Xpos;
	//document.properties.mousePosY.value = Ypos;

	//ウィンドウプロパティの表示
	//document.properties.WindowW.value = document.documentElement.clientWidth; // document.body.clientWidth;
	//document.properties.WindowH.value = document.documentElement.clientHeight; //document.body.clientHeight;

	//プロパティ表示領域をブラウザ表示領域の右上へ

	//properties.style.left = (document.properties.WindowW.value - menuSize) + 'px';
    //properties.style.width=menuSize + 'px';
	document.properties.style.left = (document.documentElement.clientWidth - menuSize) + 'px';
	document.properties.style.width=menuSize + 'px';

	if(initial_flag==0)
	{
		writeButtonDIV();
		writeButtonInDIV(0);
		initial_flag=1;
	}
}


	
// 全置換する関数。（textの、sTextをrTextに置換）
function allReplace(text, sText, rText) {
	while (true) { // 無限ループ。
		dummy = text;
		text = dummy.replace(sText, rText); // 置換。
		if (text == dummy) {
			break;       // 置換しても変化しなければループを抜ける。
		}
	}
	return text;  // 置換後の文字列を返して終了。
}

function checkLineNum(text) {
	var ichi=-1;
	var line=0;
	var before=0;

	do
	{
		ichi=text.indexOf("\n",ichi);
		if(ichi!=-1)
		{
			line++;
			ichi++;
			before=ichi;
		}
	}while(ichi!=-1)

	return(line);
}

function checkMaxjisuuNum(text) {
	var ichi=-1;
	var line=0;
	var before=0;

	jisuu= new Array();

	do
	{
		ichi=text.indexOf("\n",ichi);
		if(ichi!=-1)
		{
			line++;
			ichi++;
			jisuu[line]=ichi-before-1;
			before=ichi;
		}
	}while(ichi!=-1)

	var max_jisuu=-1;
	for(i=1;i<=line;i++)
	{
		if(max_jisuu<jisuu[i])
		{
			max_jisuu=jisuu[i];
		}
	}
	return(max_jisuu);
}

<!-- セリフ欄の追加処理をする関数 -->
function addTEXTAREA(r,place,cntForms)
{
	var element = document.createElement('TEXTAREA');
	element.id = "serifu"+"_"+cntForms+"_"+place;
	element.className = "serifu";

	if(place=="right")
	{
		//element.value = (cntForms+1)+"コマ目右のセリフ";
		element.value = "";
	}
	if(place=="up")
	{
		//element.value = (cntForms+1)+"コマ目上のセリフ";
		element.value = "";
	}
	
	if(place=="down")
	{
		//element.value = (cntForms+1)+"コマ目下のセリフ";
		element.value = "";
	}

	element.style.backgroundColor = serifu_bgColor;
    element.style.display = 'block';
		
	element.style.fontFamily = 'ＭＳ ゴシック';
		
    element.setAttribute("cols", element.value.length*2); // 全角きめうち
    element.setAttribute("rows", r);

    // POINT(ここから)
    // textareaのサイズ指定を削除(width及びheight属性が優先されると困るので)
    element.style.overflow = 'hidden'; // textareaのサイズを自動指定する．つまりスクロールバーは不要なので，不可視に設定する．
	// onkeyup属性にスクリプトを仕掛ける．
    // キーが押し上げられるごとに，列数と行数を調べ，リアルタイムかつ自動的にtextareaのサイズに反映する．
    // なお，textareaの列数は半角文字を基準にしている．半角英数と全角文字を分けて列数をカウントする．
    element.onkeyup = function()
	{
      var value = element.value;
      var col_current = 1;
      var col_max = 1;
      var row = 1;
      for (var i = 0, l = value.length; i < l; i++) {
        if (value.charAt(i) == '\n') {
          col_current = 1;
          row++;
        } else if (value.charAt(i).match(/[A-Za-z0-9]/)) {
          col_current+=1; // 半角英数
        } else {
          col_current+=2; // 全角 = 全角英数で2文字分
        }
        if (col_current > col_max) { col_max = col_current; }
      }
      element.setAttribute("cols", col_max);
      element.setAttribute("rows", row);
    }
    // POINT(ここまで)
	
    // body要素にdivエレメントを追加
	var objBody = document.getElementsByTagName("body").item(0);
    objBody.appendChild(element);
	addBR();

	cntForms++;
}

function checkLineNum(text) {
	var ichi=-1;
	var line=0;
	var before=0;

	do
	{
		ichi=text.indexOf("\n",ichi);
		if(ichi!=-1)
		{
			line++;
			ichi++;
			before=ichi;
		}
	}while(ichi!=-1)

	return(line);
}

function checkMaxjisuuNum(text) {
	var ichi=-1;
	var line=0;
	var before=0;

	jisuu= new Array();

	do
	{
		ichi=text.indexOf("\n",ichi);
		if(ichi!=-1)
		{
			line++;
			ichi++;
			jisuu[line]=ichi-before-1;
			before=ichi;
		}
	}while(ichi!=-1)

	var max_jisuu=-1;
	for(i=1;i<=line;i++)
	{
		if(max_jisuu<jisuu[i])
		{
			max_jisuu=jisuu[i];
		}
	}
	return(max_jisuu);
}

function getEveryLine(text) {
	var ichi=-1;
	var line=0;
	var before=0;
	var line_txt= new Array();

	do
	{
		ichi=text.indexOf("\n",ichi);
		if(ichi!=-1)
		{
			line_txt[line]=text.substring(before,ichi);
			line++;
			ichi++;
			before=ichi;
		}
	}while(ichi!=-1)

	return(line_txt);
}

function checkEveryLineJisuu(text) {
	var ichi=-1;
	var line=0;
	var before=0;

	everyLineJisuu= new Array();

	do
	{
		ichi=text.indexOf("\n",ichi);
		if(ichi!=-1)
		{
			everyLineJisuu[line]=ichi-before;
			line++;
			ichi++;
			before=ichi;
		}
	}while(ichi!=-1)

	return(everyLineJisuu);
}

function getmax(hairetsu,n)
{
	var max=-1;
	var i;
	for(i=0;i<n;i++)
	{
		if(hairetsu[i]>max)
		{
			max=hairetsu[i];
		}
	}
	return(max);
}

function makeNblank(n)
{
	var zenkaku = Math.floor(n/2);
	var hankaku = n % 2;
	var strBlank="";
	var i;

	for(i=0;i<zenkaku;i++)
	{
		strBlank+="　";
	}
	for(i=0;i<hankaku;i++)
	{
		strBlank+=" ";
	}
	return(strBlank);
}

function getAA(c_text, serifu_up, serifu_right, serifu_down)
{
	window.status="現在、"+(nowCntForms+1)+"コマ目(全"+cntForms+"コマ)のキャラクター各行の右に空白を追加中!!";
	c_text=plusYohakuToAAtext(c_text,"ta");
	
	window.status="現在、"+(nowCntForms+1)+"コマ目(全"+cntForms+"コマ)のキャラクターと右セリフを結合中!!";
	serifu_right=serifu_right+"\n";
	all_line_txt=new Array();
	all_line_txt =getEveryLine(c_text);
	all_line_jisuu=new Array();
	all_line_jisuu=checkEveryLineJisuu(c_text);

	all_line_txt2=new Array();
	all_line_txt2 =getEveryLine(serifu_right);
	all_line_jisuu2=new Array();

	all_line_jisuu2=checkEveryLineJisuu(serifu_right);
	var max_yohaku;
	max_yohaku=getmax(all_line_jisuu,checkLineNum(serifu_right));

	window.status="現在、"+(nowCntForms+1)+"コマ目(全"+cntForms+"コマ)の上セリフをを出力中!!";
	var output_text="";
	if(serifu_up == ""){output_text+=serifu_up+"\n";}
	else{output_text+=serifu_up+"\n";}
	
	var yohaku="";
	var chara_line_num=checkLineNum(c_text);
	var serifu_right_line_num=checkLineNum(serifu_right);

	//図のほうが大きい場合
	if(chara_line_num>=serifu_right_line_num)
	{
		for(i=0;i<chara_line_num;i++)
		{
			window.status="現在、"+(nowCntForms+1)+"コマ目(全"+cntForms+"コマ)の"+(i+1)+"行目(全"+chara_line_num+"行)を出力中!!";
			if(i<serifu_right_line_num)
			{
				cut_str=deleteIfLastIsEnter(all_line_txt[i]);
				output_text+=""+cut_str+all_line_txt2[i]+"\n";
			}
			else{
				output_text+=""+all_line_txt[i]+"\n";
			}
		}
	}
	//右のセリフ欄のほうが大きい場合
	else
	{
		for(i=0;i<serifu_right_line_num;i++)
		{
			window.status="現在、"+(nowCntForms+1)+"コマ目(全"+cntForms+"コマ)の"+(i+1)+"行目(全"+serifu_right_line_num+"行)を出力中!!";
			if(i<chara_line_num)
			{
				cut_str=deleteIfLastIsEnter(all_line_txt[i]);
				output_text+=""+cut_str+all_line_txt2[i]+"\n";
			}
			else{
				var yohaku_width=calc_width_oneline(all_line_txt[0],"ta");
				cut_str=returnBlankToWidthPx(yohaku_width);
				output_text+=cut_str+all_line_txt2[i]+"\n";
			}
		}
	}
	window.status="現在、"+(nowCntForms+1)+"コマ目(全"+cntForms+"コマ)の下セリフを出力中!!";
	if(serifu_down == ""){output_text+=serifu_down+"\n";}
	else{output_text+=serifu_down;}
	
	return(output_text);
}


function clearButton()
{
	var i;
	for(i=0;i<charaButtonNum;i++)
	{
		id_name="lionfan"+i;
      //クリア
      document.getElementById(id_name).style.color = "#778899";
	}
}

function selectedButton(i)
{
	if(i<charaButtonNum)
	{
		id_name="lionfan"+i;
	    document.getElementById(id_name).style.color = "#ff8899";
	}
}


function selectedButtonMouseover(i)
{
	if(i<charaButtonNum)
	{
		id_name="lionfan"+i;
    	document.getElementById(id_name).style.color = "#ff0000";
	}
}

function selectedButtonMouseout(i)
{
	if(i<charaButtonNum)
	{
		id_name="lionfan"+i;
    	document.getElementById(id_name).style.color = "#778899";
	}
}


<!-- コマの削除処理をする関数 -->
function deleteSETSUMEI() {

	objBody = document.getElementById("AAstoryBody");
	var element = document.getElementById('first_manual');
    objBody.removeChild(element);
}

function justSizeTextAreaInput(AAtext,TextAreaIdName)
{
	var objTextArea = document.getElementById(TextAreaIdName);
	var lastMoji=AAtext.charAt(AAtext.length-1);
	if(lastMoji!="\n")AAtext+="\n";

		var AAtext_replaced=allReplace(AAtext, "\n","<br>");
	objTextArea.style.width = calc_width(AAtext,TextAreaIdName) + 'px' ;
	
	objTextArea.rows = checkLineNum(AAtext);

	var lastMoji=AAtext.charAt(AAtext.length-1);
	if(lastMoji=="\n")AAtext=AAtext.substring(0,AAtext.length-1);

	return(objTextArea.style.width);
}

function calc_width(text,TextAreaIdName)
{
	var line_txt= new Array();
	line_txt=getEveryLine(text);
	var line_num=checkLineNum(text);
	var line_width= new Array();

	var i;
	for(i=0;i<line_num;i++)
	{
		line_width[i]=calc_width_oneline(line_txt[i],TextAreaIdName);
	}
	line_width_max=getmax(line_width,line_num);
	return(line_width_max);
}

function calc_width_oneline(oneline,TextAreaIdName)
{
	var oneline_width;

	//oneline=deleteIfLastIsEnter(oneline);
	
	objTextArea = document.getElementById(TextAreaIdName);
	if (objTextArea != undefined && objTextArea != null )
    {
        objTextArea.rows = 1;
 		objTextArea.value=oneline;

	  // IEかWebKitなら
	  if (navigator.appVersion.match(/AppleWebKit|MSIE/)) {
		for (var i = 0; (i*kizami)<=document.documentElement.clientWidth; ++i)
		{
			var haba=kizami*i;
			objTextArea.style.width = haba + 'px' ;
			//kizamiポイント刻みでチェックすることで高速化
			if (objTextArea.scrollHeight <= objTextArea.clientHeight)
			{
				break;
			}
	    }
	  }
	    objTextArea.value="";
		objTextArea.style.width = 1+ 'px' ;
	    objTextArea.rows = 1;
   }

	return(haba);
}

//id名からそのエレメントをGetする関数
function $(id) { return document.getElementById(id) ; }



function addCHARAAREA(i)
{
	if (cntForms < maxForms) {

    var element = document.createElement('TEXTAREA');

    element.id = "chara"+"_"+cntForms;
	AAmoji = allReplace(charaAA[nowSelectOption][i], "<br>", "\n");

	element.value =AAmoji;
    element.style.backgroundColor = charaAA_bgColor;

	col_max=checkMaxjisuuNum(AAmoji);
	row= checkLineNum(AAmoji);
	

	element.setAttribute("cols",col_max*2);
	element.setAttribute("rows",row);

	//element.style.fontSize= nowDispFontSize+"pt";
	element.style.overflow= "hidden";

    // body要素にdivエレメントを追加
	addTEXTAREA(1,"up",cntForms); // 上TEXTAREA(高さ = 1)

	var objBody = document.getElementsByTagName("body").item(0);
    objBody.appendChild(element);

	document.getElementById(element.id).value=AAmoji;
	var jSize=justSizeTextAreaInput(AAmoji, "ta");
	document.getElementById(element.id).style.width=jSize;

	addTEXTAREA(row,"right",cntForms); // 右TEXTAREA(高さ = 10)

	addTEXTAREA(1,"down",cntForms); // 下TEXTAREA(高さ = 1)
	addHR(); // page区切り

	clearButton();
	selectedButton(i);

	//最初の説明４コママンガの削除
	if (deleteSETSUMEI_flag==0)
	{
		deleteSETSUMEI_flag=1;
		deleteSETSUMEI();
	}

		document.getElementById("ta").rows=1;
		document.getElementById("ta").style.overflow= "hidden";

	cntForms++;
		
	//キャラを入れたら、コマ数*300ピクセル、下にスクロール(よほど下に長いAAが連発していない限りOK)
	window.scrollBy(0,cntForms*300);

	//画面上の見えないテキストエリアを最小化
	small_textarea();
  }
}





function calc_button_fontsize(buttonAAtext)
{
	var max_width;
	var buttonAAtext_replaced=allReplace(buttonAAtext, "<br>","\n");
	max_width=calc_width(buttonAAtext_replaced,"ta");

	var size=Math.round(8-(max_width/menuSize));
	if (size<1)size=1;
	
	return(size);
}

function deleteIfLastIsEnter(oneline)
{
	var ans=oneline;
	var mojiNum=oneline.length;
	var last_moji=oneline.charAt(mojiNum-1);

	if(last_moji=="\n")
	{
		ans=oneline.substring(0, mojiNum-1);
	}
	return(ans);
}

function plusYohakuToAAtext(AAtext,TextAreaIdName)
{
	var AAlineNum= checkLineNum(AAtext);

	AAtextLine=new Array();
	AAtextLine=getEveryLine(AAtext);

	AAhaba=new Array();
	AAhaba=calc_width_everyline(AAtext,TextAreaIdName);

	var max_haba;
	max_haba=getmax(AAhaba,AAlineNum);

	//alert("AAhaba="+AAhaba+"\nmax_haba="+max_haba);

	for(i=0;i<AAlineNum;i++)
	{
		while(AAhaba[i]<(max_haba+min_yohaku))
		{
			AAtextLine[i]=deleteIfLastIsEnter(AAtextLine[i])+"　";
			AAhaba[i]=calc_width_oneline(AAtextLine[i],TextAreaIdName);
		}
	}

	var plusYohakuAAtext="";
	for(i=0;i<AAlineNum;i++)
	{
		plusYohakuAAtext+= deleteIfLastIsEnter(AAtextLine[i])+"\n";
	}
	return(plusYohakuAAtext);
}

function calc_width_everyline(text,TextAreaIdName)
{
	var line_txt= new Array();
	line_txt=getEveryLine(text);

	//各行からすべての改行を削除する関数
	var line_num=checkLineNum(text);
	for(i=0;i<line_num;i++)
	{
		line_txt[i]=deleteIfLastIsEnter(line_txt[i]);
	}

	
	var line_num=checkLineNum(text);
	var line_width= new Array();

	var i;
	for(i=0;i<line_num;i++)
	{
		line_width[i]=calc_width_oneline(line_txt[i],TextAreaIdName);
	}
	return(line_width);
}

function addIfLastIsNotEnter(oneline)
{
	var ans=oneline;
	var mojiNum=oneline.length;

	var last_moji;
	last_moji=oneline.charAt(mojiNum-1);

	if(last_moji!="\n")
	{
		ans+="\n";
	}
	return(ans);
}

//文字列から「すべての」改行を削除する関数
function deleteIfLastIsEnter(myLen) { 
    var newLen = ''; 
    for(var i=0; i<myLen.length; i++){ 
        text = escape(myLen.substring(i, i+1)); 
        if(text != "%0D" && text != "%0A"){ 
            newLen += myLen.substring(i, i+1); 
        } 
    } 
    return(newLen); 
}

function returnBlankToWidthPx(width)
{
	var now_oneline="";
	do
	{
		now_oneline+="　";
		now_width=calc_width_oneline(now_oneline,"ta");
	}while(now_width< width)
	return(now_oneline);
}

function saveXMLFile(fName)
{
	httpObj = createXMLHttpRequest(displayData);
	if (httpObj)
	{
		httpObj.open("POST",fName,false);
		httpObj.send(null);
	}
}


function loadXMLFile()
{
	$("writer").value=$("writerinput").value;
	var writername=$("writer").value;
	
	httpObj = createXMLHttpRequest(displayData);
	httpObj.onreadystatechange = statusCheck;
	var element1 = document.getElementById("savefilename");
	var element2 = document.getElementById("ta3");
	element2.value=element1.value;

	var fName=writername+"_"+element1.value;
	
	if (httpObj)
	{
		httpObj.open("GET","./aadata/"+fName,false);
		httpObj.send(null);
	}
}

function statusCheck()
{
	if ((httpObj.readyState == 4) && (httpObj.status == 200))
	{
		displayData();
	}
}


function makeXMLdata()
{
	var saveXMLdata="";

	saveXMLdata+='<?xml version="1.0" encoding="UTF-8" ?>\n\n';
	saveXMLdata+='<manga>\n';

	$("writer").value=$("writerinput").value;
	var writername=$("writer").value;

	//var writer = document.getElementById('writer').value;
	saveXMLdata+='<writer>'+writername+'</writer>\n';

	var mangatitle = document.getElementById('mangatitle').value;
	saveXMLdata+='<mangatitle>'+mangatitle+'</mangatitle>\n\n';

	if (cntForms > 0)
	{
		var i;
		var element;
		for(i=0;i<cntForms;i++)
		{
			saveXMLdata+='<koma>\n';
			saveXMLdata+='<number>'+(i+1)+'</number>\n';

			element = document.getElementById('serifu_'+i+'_up');
		    var serifu_up=element.value;
			saveXMLdata+='<serifuup>'+serifu_up+'</serifuup>\n';
			
			element = document.getElementById('serifu_'+i+'_right');
			var serifu_right=element.value;
			saveXMLdata+='<serifuright>'+serifu_right+'</serifuright>\n';

			element = document.getElementById('chara_'+i);
		    var charaAA=element.value;
			saveXMLdata+='<charaaa>\n'+chikan(charaAA)+'</charaaa>\n';
			//saveXMLdata+='<charaaa>\n'+chikan(charaAA)+'</charaaa>\n';

			element = document.getElementById('serifu_'+i+'_down');
			var serifu_down=element.value;
			saveXMLdata+='<serifudown>'+serifu_down+'</serifudown>\n';

			saveXMLdata+='</koma>\n\n';

		}
	}
	saveXMLdata+='</manga>\n';

	return(saveXMLdata);
}


function displayData()
{
	if ((httpObj.readyState == 4) && (httpObj.status == 200))
	{
		xmlData = httpObj.responseXML;

		writerListTags = xmlData.getElementsByTagName('writer');
		mangatitleListTags = xmlData.getElementsByTagName('mangatitle');

		komaListTags = xmlData.getElementsByTagName('koma');
		numberListTags = xmlData.getElementsByTagName('number');

		serifuupListTags = xmlData.getElementsByTagName('serifuup');
		serifurightListTags = xmlData.getElementsByTagName('serifuright');
		charaaaListTags = xmlData.getElementsByTagName('charaaa');
		serifudownListTags = xmlData.getElementsByTagName('serifudown');

		komaLen = komaListTags.length; // 登録されているユーザー数

		resultText = ""; // データの内容を表示するための変数

		writer = writerListTags[0].childNodes[0].nodeValue;
		mangatitle = mangatitleListTags[0].childNodes[0].nodeValue;

		resultText = writer + "「" + mangatitle + "」\n\n";

		for(i=0; i<komaLen; i++)
		{
			num = numberListTags[i].childNodes[0].nodeValue;
			
			try{
				serifuup = serifuupListTags[i].childNodes[0].nodeValue;
			}
			catch(e){
				serifuup ="";
			}
			serifuupfromLoadData[i]=serifuup;

			try{
				serifuright = serifurightListTags[i].childNodes[0].nodeValue;
			}
			catch(e){
				serifuright="";
			}
			serifurightfromLoadData[i]=serifuright;

			try{
				charaaa = charaaaListTags[i].childNodes[0].nodeValue;
				charaaa = charaaa.replace(/^\n/,'');

				charaaa = changeKANtoBAR(charaaa);
			}
			catch(e){
				charaaa="";
			}
			charaAAfromLoadData[i]=charaaa;

			try{
				serifudown = serifudownListTags[i].childNodes[0].nodeValue;
			}
			catch(e){
				serifudown ="";
			}
			serifudownfromLoadData[i]=serifudown;
		
		}
	}

	var i;
	for(i=cntForms;i>0;i--)
	{
		deleteKOMA()
	}

	//ここでセリフ欄を配置している
	addCharaByLoadXML();

	//読み出したセリフ欄のサイズを最適な大きさに調整している
	resizeSerifu(komaLen, "up");
	resizeSerifu(komaLen, "right");
	resizeSerifu(komaLen, "down");
	
}

function resizeSerifu(komaLen, place)
{
	for(i=0; i<komaLen; i++)
	{
		var value = $("serifu"+"_"+i+"_"+place).value;
		var col_current = 1;
		var col_max = 1;
		var row = 1;

		for (var j = 0, l = value.length; j < l; j++) {
		if (value.charAt(j) == '\n') {
		  col_current = 1;
		  row++;
		} else if (value.charAt(j).match(/[A-Za-z0-9]/)) {
		  col_current+=1; // 半角英数
		} else {
		  col_current+=2; // 全角 = 全角英数で2文字分
		}
		if (col_current > col_max) { col_max = col_current; }
		}
		$("serifu"+"_"+i+"_"+place).setAttribute("cols", col_max);
		$("serifu"+"_"+i+"_"+place).setAttribute("rows", row);
	}
}

function addCharaByLoadXML()
{
	//最初の説明４コママンガの削除
	if (deleteSETSUMEI_flag==0)
	{
		deleteSETSUMEI_flag=1;
		deleteSETSUMEI();
	}

	var i;
	cntForms=0;
	for(i=0;i<komaLen;i++)
	{
		if (cntForms < maxForms) {
		    var element = document.createElement('TEXTAREA');
		    element.id = "chara"+"_"+cntForms;
			AAmoji = charaAAfromLoadData[i];

			element.value =AAmoji;
		    element.style.backgroundColor = charaAA_bgColor;

			col_max=checkMaxjisuuNum(AAmoji);
			row= checkLineNum(AAmoji);
	

			element.setAttribute("cols",col_max*2);
			element.setAttribute("rows",row);

			element.style.overflow= "hidden";

		    // body要素にdivエレメントを追加
			addTEXTAREA(1,"up",cntForms); // 上TEXTAREA(高さ = 1)

			var objBody = document.getElementsByTagName("body").item(0);
		    objBody.appendChild(element);

			document.getElementById(element.id).value=AAmoji;
			var jSize=justSizeTextAreaInput(AAmoji, "ta");
			document.getElementById(element.id).style.width=jSize;

			addTEXTAREA(row,"right",cntForms); // 右TEXTAREA(高さ = 10)

			addTEXTAREA(1,"down",cntForms); // 下TEXTAREA(高さ = 1)

			$("serifu"+"_"+cntForms+"_"+"up").value= serifuupfromLoadData[i];
			$("serifu"+"_"+cntForms+"_"+"right").value= serifurightfromLoadData[i];
			$("serifu"+"_"+cntForms+"_"+"down").value= serifudownfromLoadData[i];

			addHR(); // page区切り

			clearButton();
			selectedButton(i);

			document.getElementById("ta").rows=1;
			document.getElementById("ta").style.overflow= "hidden";

			cntForms++;

			//キャラを入れたら、コマ数*300ピクセル、下にスクロール(よほど下に長いAAが連発していない限りOK)
			window.scrollBy(0,cntForms*300);

		}
	}
}

//スリープ関数 sleep(1000)で1秒Wait
function sleep(time)
{
	var d1 = new Date().getTime();
	var d2 = new Date().getTime();
	while( d2 < d1 + time )
	{
		d2=new Date().getTime();
	}
	return; 
}


function outputAAstory2()
{
	if (cntForms > 0)
	{
		hatena=$("hatenacheck").checked;
		AAstring="";
		$("mangatitle2").value=$("mangatitle").value;
		var element = document.getElementById('mangatitle');
		var mangatitle=element.value;

		var element = document.getElementById('writerinput');
		var writerinput=element.value;
		
		AAstring+="\n\n"+writerinput+"作【"+mangatitle+"】\n";
		var i;
		for(i=0;i<cntForms;i++)
		{
			//var msg="AAstroy・・・現在、"+(i+1)+" / "+cntForms+"コマ目を処理中です。";
			//window.top.document.title = msg;
			
			//$('prog').innerHTML="<b>現在、"+(i+1)+" / "+cntForms+"コマ目を処理中です。</b>";
			
			nowCntForms=i;
			objBody = document.getElementById("AAstoryBody");

			var element = document.getElementById('serifu_'+i+'_up');
		    var serifu_up=element.value;

			var element = document.getElementById('chara_'+i);
		    var chara_text=element.value;
			chara_text = changeBARtoKAN(chara_text);
			
			var element = document.getElementById('serifu_'+i+'_right');
		    var serifu_right=element.value;

			var element = document.getElementById('serifu_'+i+'_down');
		    var serifu_down=element.value;

			AAstring+="\n"
			if(hatena==1){	AAstring+=" ";}
			//AAstring+="------------------------------------ "+(i+1)+"コマ目 (全"+cntForms+"コマ) ------------------------------------\n\n";
		AAstring+="---------------------------------------------------------------------------------------\n\n";
			if(hatena==1){	AAstring+=">|aa|\n";}
			AAstring+=getAA(chara_text,serifu_up,serifu_right,serifu_down);
			if(hatena==1){	AAstring+="\n||<\n";}
		}
		AAstring+="\n\n";
		if(hatena==1){	AAstring+=" ";}
		AAstring+="---------------------------------------------------------------------------------------\n\n";

		//先頭の2つの改行を取り去る
		window.status="AAのマンガを出力しました。";
		AAstring=AAstring.substr(2);

		var htmlAAstring="<html><head><title>出力結果</title></head>\n<body>\n"+AAstring+"\n</body>\n";

		
		htmlAAstring='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">';
		htmlAAstring+='\n';
		htmlAAstring+='<html lang="ja">\n';
		htmlAAstring+='<meta http-equiv="content-type" content="text/html; charaset=utf-8">\n';
		htmlAAstring+='\n';
		htmlAAstring+='<head>\n';
		htmlAAstring+='<title>AAstory</title>\n';
		htmlAAstring+='<script type="text/javascript">\n';
		htmlAAstring+='window.name = "pageb"\n'; 
		htmlAAstring+='</script>\n';
		htmlAAstring+='\n';
		htmlAAstring+='<style TYPE="text/css">\n';
		htmlAAstring+='<!--\n';
		htmlAAstring+='TEXTAREA {\n';
		htmlAAstring+='background-color: #FFFFFF; \n';
		htmlAAstring+='font-family: "ＭＳ Ｐゴシック";\n';
		htmlAAstring+='border-style: none;\n';
		htmlAAstring+='}\n';
		htmlAAstring+='-->\n';
		htmlAAstring+='</style>\n';
		htmlAAstring+='\n';
		htmlAAstring+='</head>\n';
		htmlAAstring+='<body>\n';
		htmlAAstring+='<form id="kekka_form" name="kekka_form">\n';
		htmlAAstring+='<textarea id="kekka_txt" name="kekka_txt" rows="300" cols="220">\n';
		htmlAAstring+=AAstring;
		htmlAAstring+='</textarea>\n';
		htmlAAstring+='</form>\n';
		htmlAAstring+='</body>\n';
		htmlAAstring+='</html>\n';

			
			
		var regAn = new RegExp('\n', "g");
		//var htmlAAstring = htmlAAstring.replace(regAn,"<br>\n")
		
		htmlAAstring=changeBARtoKAN(htmlAAstring);
		$("ta3").value=htmlAAstring;

		document.saveXML.action="savekekka.cgi";
		document.saveXML.method="post";
		document.saveXML.submit();
		document.saveXML.click();
		
		
		var w;
	    w = window.open("kekka.html", "作品の出力画面");
		
	}
}

function chikan(inputStr)
{
	//正規表現オブジェクト作成
	var regAn = new RegExp('&', "g");
	var regLt = new RegExp("<", "g");
	var regRt = new RegExp(">", "g");
	var regQu = new RegExp('"', "g");
	var outputStr = inputStr.replace(regAn,"&amp;").replace(regLt,"&lt;").replace(regRt,"&gt;").replace(regQu,"&quot;");

	var regBAR = new RegExp('￣', "g");
	outputStr = changeBARtoKAN(outputStr);
		
	return(outputStr);
}

function changeBARtoKAN(str)
{
	var regBAR = new RegExp('￣', "g");
	str = str.replace(regBAR,"冖");
	return(str);
}

function changeKANtoBAR(str)
{
	var regBAR = new RegExp('冖', "g");
	str = str.replace(regBAR,"￣");
	return(str);
}


function writeButtonDIV()
{
	var i;
	var nowButtonString="";
	var sss;
	
	for(i=0;i<charaButtonNum;i++)
	{
		sss = charaSetsumei[i];
		//var sss=charaSetsumei[i];
		nowButtonString+='<div id="lionfan'+i+'" style="font-size:' +6+ 'pt" onmouseover="selectedButtonMouseover('+i+')" onmouseout="selectedButtonMouseout('+i+')" onclick="addCHARAAREA('+i+')">\n ';
		nowButtonString+="\n</div>\n\n";
	}
	
	return(nowButtonString);
}

//キャラ欄の追加処理をする関数
function charaSelect(n)
{
	nowSelectOption=n;
	writeButtonInDIV(n);
}

function writeButtonInDIV(n)
{
	var i;
	for(i=0;i<charaButtonNum;i++)
	{
		document.getElementById("lionfan"+i).innerHTML=charaAA[n][i];
		var fsize=calc_button_fontsize(charaAA[n][i]);
		document.getElementById("lionfan"+i).style.fontSize=fsize;
		$("lionfan"+i).style.title="lionfan";

	}
}

