//////////////////////////////////
// マウス
var g_mouse_x = 0;
var g_mouse_y = 0;
var g_mouse_offset_x = 2;
var g_mouse_offset_y = -25;
var g_mouse_obj;
var g_mouse_drag_sel = -1;	// 箱選択状態
// データ配列
var g_ary_list = new Array(108);
var g_tmp_list = new Array(108);
// xmlデータ
var g_xml_data;
var g_xml_banner;
// xml配列
var g_xml_arylist = new Array(108);
// バナー
var g_banner_list;
// バナー読み込みカウント
var g_nBannerCount =0;

// 切り替えボタン リンク先
var MODE_NORMAL = "index.php";
var MODE_REPLACE = "changemode.html";

// xmlデータ
// リンクデータ
var XML_DATA = "_box/xml/data.xml";
// 並び替えボタン
var XML_SORT1 = "_box/xml/sort1.xml";
var XML_SORT2 = "_box/xml/sort2.xml";
var XML_SORT3 = "_box/xml/sort3.xml";
// バナー
var XML_BANNER = "_box/xml/banner.xml";

// 画像パス
var IMAGE_NEW = "_common/img/hako/new.gif";
var IMAGE_BTN_SELECT = "_common/img/top/page_btn_select.jpg";
var IMAGE_BTN_SELECT_WIDTH = 28;
var IMAGE_BTN_SELECT_HEIGHT = 28;
var IMAGE_BTN_NORMAL = "_common/img/top/page_btn.jpg";
var IMAGE_PAGE_RIGHT = "_common/img/top/box_right.jpg";
var IMAGE_PAGE_LEFT = "_common/img/top/box_left.jpg";
var IMAGE_ARROW = "_common/img/top/arrow.jpg";
var IMAGE_CHANGE_MANUAL = "_common/img/top/changemode_manual.gif";
var IMAGE_CHANGE_MANUAL_WIDTH = 376;
var IMAGE_CHANGE_MANUAL_HEIGHT = 46;
var IMAGE_LOADINFO = "_common/img/top/loadinfo.gif";

////////////////////////////////

// 共通の初期化
function initCommon()
{
	initMouse();
	// ウインドウフラグ消去
	deleteCookie("popup");
	// 選択状態解除
	g_mouse_drag_sel = -1;
	// クッキーから読み込む
	g_ary_list = loadCookieSortlist();
	// XMLを読み込む
	g_xml_data = loadXML(XML_DATA);
//	g_xml_banner = loadXML(XML_BANNER);
	// データを配列に格納
	setXMLData();
	
	var num = g_xml_data.getElementsByTagName('box').length;
	g_ary_list = checkBoxCookie(g_ary_list,num);
	// バナーの更新間隔
//	var nInterval = g_xml_banner.getElementsByTagName("interval")[0].firstChild.data;
//	var nBannerNum = g_xml_banner.getElementsByTagName("item").length;
//	g_banner_list = new Array(nBannerNum);
//	for(var i=0; i < nBannerNum; i++){ g_banner_list[i] = i; }
	// リストをシャッフルする
//	shuffleBanner();
	// バナーのランダム表示
//	setInterval('changeBanner()', nInterval );
	// バナー
//	changeBanner();
}

// 初期化処理
function initNormalpage()
{
	// 初期化
//	initCommon();
	g_ary_list = loadCookieSortlist();
	g_xml_data = loadXML(XML_DATA);
	var num = g_xml_data.getElementsByTagName('box').length;
	g_ary_list = checkBoxCookie(g_ary_list,num);
	// 切り替えボタン
	$("btn_changemode").onclick = function(){ changeMode(MODE_REPLACE,"箱の並び順を変更します。<br />現在の並び順はなくなりますがよろしいですか？"); };
	// 出力
//	loadPage(0);
}

// 初期化処理
function initReplaceMode()
{
	// 初期化
	initCommon();
	// 切り替えボタン
	$("btn_changemode").onclick = function(){ changeMode(MODE_NORMAL,"&nbsp;<br />&nbsp;<br />並び替え画面を抜けますか？"); };
	// 並び替えボタン
//	$("favo").onclick = function(){ loadXMLSortlist(XML_SORT1); };
//	$("update").onclick = function(){ loadXMLSortlist(XML_SORT2); };
//	$("push").onclick = function(){ loadXMLSortlist(XML_SORT3); };
	// ０番目を選択状態にする
//	selectBox(0);
	// 出力
	loadReplaceMode();
}

// ページを出力する
function loadPage(nPage)
{
	// 表示
	viewData(nPage,9,g_ary_list,true);
}

// 並び替え用のページを出力する
function loadReplaceMode()
{
	// 表示
	viewData(0,108,g_ary_list,false);
	// 選択状態
	var sel = g_mouse_drag_sel;
	if(sel < 0){sel = 0;}
	viewBoxInfo(sel,g_ary_list);
}

// クッキーを読み込む
function loadCookie(cName)
{
	var cookie = document.cookie;
	var value = 0;
	// クッキーがあるか確認
	if(-1==cookie.indexOf(cName))
	{
		// クッキーなし
		return -1;
	}
	else
	{
		// クッキーがある
		//クッキーの値の開始位置
		var pos_s = cookie.indexOf(cName)+cName.length+1;
		//クッキーの値の終了位置
		var pos_e = cookie.indexOf(";",pos_s);
		//末尾にセミコロンがあるか？
		if(-1==pos_e)
		{
			// 無い
			value = cookie.slice(pos_s);
		}
		else
		{
			// 有る
			value= cookie.slice(pos_s,pos_e);
		}
	}
	return value;
}
// クッキーを読み込む
function loadCookieSortlist()
{
	var i;
	// 初期値
	var nSortlist = new Array(108);
	for(i=0;i<nSortlist.length;i++){	nSortlist[i] = i;}
	
	// クッキーを読み込む
	var cookie = document.cookie;
	// クッキーがあれば取得する
	if (document.cookie) 
	{
		var name = "box";
		var data = loadCookie(name);
		var value;
		var pos_s,pos_e;
		var offset = 0;
		// -1でなければ値を格納する
		if(data != -1)
		{
			// クッキーを配列に格納する
			for(i=0;i<nSortlist.length;i++)
			{
				//クッキーの値の開始位置
				pos_s = data.indexOf("&",offset);
				//クッキーの値の終了位置
				pos_e = data.indexOf("&",offset+1);
				if(pos_e == -1){ pos_e = data.indexOf(";",pos_s+1);  }
				// 開始位置設定
				offset = pos_e;
				//末尾に&かセミコロンがあるか？
				if(-1==pos_e)
				{
					// 無い
					value = data.slice(pos_s+1);
				}
				else
				{
					// 有る
					value= data.slice(pos_s+1,pos_e);
				}
				// 格納
				nSortlist[i] = parseInt(value);
			}
		}
	}
	// 渡す
	return nSortlist;
}


// クッキーに保存する
function saveCookie(cName,value,day)
{
	var cookie;
	// 保存期間が設定されている
	if(0<day)	
	{
		// データの保存日数
		var setPre = new Date();
		setPre.setTime(setPre.getTime() + (day*1000*24*3600));
		var prd = setPre.toGMTString();
		// 値
		cookie = escape(cName)+"="+escape(value)+";expires=" + prd;
	}
	else
	{
		cookie = escape(cName)+"="+escape(value)+";";
	}
	
	// 保存
	document.cookie = cookie;
}
// リストをクッキーに保存する
function saveCookieSortlist(nSortlist)
{
	var i = 0;
	// 内容
	var cText = "";
	// クッキー
	var cookie = "";
	// データの保存日数
	var cDays = 365;
	var setPre = new Date();
	setPre.setTime(setPre.getTime() + (cDays*1000*24*3600));
	var prd = setPre.toGMTString();
	//
	cookie = "box=";
	// 並び順を保存する
	for(i=0;i<nSortlist.length;i++)
	{
		// 値
		cText += "&" + nSortlist[i];
	}
	// 保存
	cookie += cText+";expires=" + prd;
	document.cookie = cookie;
}

// クッキーを削除する
function deleteCookie(cCookiename) {
	// 削除するクッキー
	var cName = cCookiename + "=";
	var dTime = new Date();
	dTime.setYear(dTime.getYear() - 1);
	document.cookie = cName + ";expires=" + dTime.toGMTString()+";";
}

// 入れ替え
function replaceData(nSortlist,nFrom,nTo)
{
	// 変換
	nFrom = parseInt(nFrom);
	nTo = parseInt(nTo);
	var i = 0;
	var nBuffrom = nSortlist[nFrom];
	
	// シフト
	if(nFrom < nTo)
	{
		nTo--;// 調整
		for(i=nFrom;i<nTo;i++){ nSortlist[i] = nSortlist[i+1];}
	}
	else
	{
		for(i=nFrom;i>nTo;i--){	nSortlist[i] = nSortlist[i-1];	}
	}
	// 目的位置に入れる
	nSortlist[nTo] = nBuffrom;
	// 移動先を返す
	return nTo;
}

// XML読み込み
function loadXML(file)
{
	// XML読み込み
	var xml_doc;
	if(document.all)
	{
		// IE
		xml_doc = new ActiveXObject("Microsoft.XMLDOM");
	}else
	{
		// Firefox
		xml_doc = document.implementation.createDocument("", "", null);
	}
	xml_doc.async = false;
	xml_doc.load(file);

	return xml_doc.documentElement;
}

// XMLを配列に入れる
function setXMLData()
{
	// XML
	var root = g_xml_data;
	
	var maxnum = root.getElementsByTagName("box").length;
	
	// 各配列に入れる
	for(var i=0; i < maxnum; i++)
	{
		var ary_data = new Array(12);
		var itemdata = root.getElementsByTagName("box")[i];
		//
/*		ary_data['genre'] = itemdata.getElementsByTagName("genre")[0].firstChild.data;
		ary_data['title'] = itemdata.getElementsByTagName("title")[0].firstChild.data;
		ary_data['text'] = itemdata.getElementsByTagName("text")[0].firstChild.data;
		ary_data['normalimage'] = itemdata.getElementsByTagName("normalimage")[0].firstChild.data;
		ary_data['normallink'] = itemdata.getElementsByTagName("normallink")[0].firstChild.data;
		ary_data['replaceimage'] = itemdata.getElementsByTagName("replaceimage")[0].firstChild.data;
		ary_data['replacelink'] = itemdata.getElementsByTagName("replacelink")[0].firstChild.data;
		ary_data['rsslink'] = itemdata.getElementsByTagName("rsslink")[0].firstChild.data;
	//	ary_data['rdf'] = itemdata.getElementsByTagName("rdf")[0].firstChild.data;
		if(ary_data['genre'] == "swf"){
			ary_data['swf'] = itemdata.getElementsByTagName("swf")[0].firstChild.data;
			ary_data['width'] = itemdata.getElementsByTagName("width")[0].firstChild.data;
			ary_data['height'] = itemdata.getElementsByTagName("height")[0].firstChild.data;
		}*/
		
	//	ary_data['normal'] = itemdata.getElementsByTagName("normal")[0].firstChild.data;
		
		var resobj = getDownloadBase( itemdata.getElementsByTagName("change")[0].firstChild.data );
		ary_data['change'] = resobj.responseText;
		
		var resobj = getDownloadBase( itemdata.getElementsByTagName("selectinfo")[0].firstChild.data );
		ary_data['selectinfo'] = resobj.responseText;

		
		g_xml_arylist[i] = ary_data;
	}
}

// １ページ分のデータを出力
function viewData(nPage,nNum,nSortlist,bNormal)
{
	// 数値に変換
	nPage = parseInt(nPage);
	nNum = parseInt(nNum);
	var i = 0;
	// オフセット
	var nOffset = nPage*nNum;
		
	// XML
	var root = g_xml_data;
	// 個数
	var nBox_num = root.getElementsByTagName("box").length;

	// 選択番号
	var nSelect = g_mouse_drag_sel;
	// 通常モードなら選択番号解除
	if(bNormal == true){ nSelect = -1; }
	
	// 内容	
	var cText = "";
	
	// 詳細
	cText += "<div id=\"hakoInfoBox\"></div>";

	// 各ボックスの中身を書き換える
	for(i=0;i<nNum;i++)
	{
		// ID名
		var cIdname = "box_"+i;
		var cRssid = "rss_"+i;
		// リスト番号
		var nListno = i + nOffset;
		// データ番号
		var nDatano = nSortlist[nListno];
		
		// 存在しない箱
/*		if(g_xml_arylist[nDatano] == null)
		{
			// 初期化
			var nSortlist = new Array(108);
			for(i=0;i<nSortlist.length;i++){	nSortlist[i] = i;}
			saveCookieSortlist(nSortlist);
		}*/
		
		// 矢印 並び替えモードのみ
/*	if(bNormal == false)
		{
			var cArrowname = "arrow_"+i;
			var cArrowN = "<div id=\""+cArrowname+"\" class=\"selectArrow\"";
			var cArrowL = "<div id=\""+cArrowname+"\" class=\"selectArrowLeft\"";
			var cArrowR = "<div id=\""+cArrowname+"\" class=\"selectArrowRight\"";
			var cArrowE = "onmouseover=\"selectMove("+i+");\" onmouseout=\"cancelMove("+i+");\" onclick=\"replaceBox("+i+")\"></div>";
			// 端の処理
			if((nListno%9==0)&&(nListno!=0)){
				cText +=  cArrowR + cArrowE;
				cText +=  cArrowL + cArrowE;
			}
			// 通常
			else{
				cText += cArrowN + cArrowE;
			}
		}*/
		
		// データがある場合は取得する
		if(nListno < nBox_num)
		{
			// 選択状況
	/*		cText += "<div id=\""+cIdname+"\" name=\""+cIdname+"\" class=\"";
			if(nListno == nSelect){ cText += "selectBox";}
			else{ cText += "box";}
			if(bNormal == false){cText += "\" onmouseover=\"selectMove("+i+");";}
			cText += "\" style=\"\"";
			cText += "\">";
			// 通常モード用

			// 並び替えモード用
			cText += "<div class=\"replacementMode\"><a href=\"";
			cText += g_xml_arylist[nDatano]['replacelink'];
			cText += "\"><img src=\"";
			cText += g_xml_arylist[nDatano]['replaceimage'];
			cText += "\" alt=\"";
			cText += g_xml_arylist[nDatano]['text'];
			cText += "\" onclick=\"selectBox(";
			cText += nListno;
			cText += ")\"/></a></div>";
			//
			cText += "</div>";*/
			
			// htmlデータを取得
			var resstr = g_xml_arylist[nDatano]['change'];
			resstr = replaceString(resstr,"@boxno@",i,"g");
			resstr = replaceString(resstr,"@listno@",nListno,"g");
			if(nListno == nSelect){ resstr = replaceString(resstr,'class="box"','class="selectBox"',"g");}
			cText += resstr;
			
			// 区切り
			var count = i + 1;
			if((count>0)&&(count%9==0)&&(bNormal==false))
			{
				var border_no = Math.ceil(count / 9);
				cText += "<div class='pageBorder'><img src='_common/img/top/border_p"+border_no+".gif' /></div>";
			}
		}
		else
		{	
			// 区切り
			var count = i + 1;
			if((count>0)&&(nBox_num%9!=0)&&(bNormal==false))
			{
				var border_no = Math.ceil(count / 9);
				cText += "<div class='pageBorder'><img src='_common/img/top/border_p"+border_no+".gif' /></div>";
			}
			
			// これ以上はデータが無いので終わる
			break;
		}
	}
	// 最後
/*	if(bNormal == false)
	{
		var cArrowname = "arrow_"+i;
		var cArrowR = "<div id=\""+cArrowname+"\" class=\"selectArrowRight\"";
		var cArrowE = "onmouseover=\"selectMove("+i+");\" onmouseout=\"cancelMove("+i+");\" onclick=\"replaceBox("+i+")\"></div>";
		cText +=  cArrowR + cArrowE;
	}*/

	// 下部
	cText += "<div class=\"clear\">&nbsp;</div>";
	// ページャー
	// ページ数
	var nPageNum = nBox_num / nNum;
	if(bNormal==true)
	{
		cText += "<div id=\"pageLink\">";
		for(i=0;i<nPageNum;i++)
		{
			var cPage = "page"+i;
			// 現在のページ
			if(i == nPage){cText += "<a href=\"javascript:;\"><img src=\"" + IMAGE_BTN_SELECT + "\" name=\""+cPage+"\" width=\"" + IMAGE_BTN_SELECT_WIDTH + "\" height=\"" + IMAGE_BTN_SELECT_HEIGHT + "\" border=\"0\" id=\""+cPage+"\" /></a>";}
			else{ cText += "<a href=\"javascript:;\" onclick=\"loadPage("+i+");\" onmouseout=\"MM_swapImgRestore()\" onmouseover=\"MM_swapImage('"+cPage+"','','" + IMAGE_BTN_SELECT + "',1)\"><img src=\"" + IMAGE_BTN_NORMAL + "\" name=\""+cPage+"\" width=\"" + IMAGE_BTN_SELECT_WIDTH + "\" height=\"" + IMAGE_BTN_SELECT_HEIGHT + "\" border=\"0\" id=\""+cPage+"\" /></a>"; }
		}
		cText += "</div>";
	}
	// 書き換える
	document.getElementById("boxMain").innerHTML = cText;
	
	// 左右のページャー
	cText ="";
	if(0<nPage){ cText = "<a href=\"javascript:;\" onclick=\"loadPage("+(nPage-1)+");\"><img src=\"" + IMAGE_PAGE_LEFT + "\" /></a>"; }
	document.getElementById("boxLeft").innerHTML = cText;
	cText ="";
	if(nPage<nPageNum-1){ cText = "<a href=\"javascript:;\" onclick=\"loadPage("+(nPage+1)+");\"><img src=\"" + IMAGE_PAGE_RIGHT + "\" /></a>"; }
	document.getElementById("boxRight").innerHTML = cText;
}

// 詳細を出力する
function viewBoxInfo(nNo,nSortList)
{
	// 内容
	var cText = "";
	var nDatano = nSortList[nNo];
	var root = g_xml_data;
	
	cText += g_xml_arylist[nDatano]['selectinfo'];
	
	/*	
	cText += "<div id=\"selectHako\">";
	cText += "<img src=\"";
	cText += g_xml_arylist[nDatano]['normalimage'];
	cText += "\" >";
	cText += "</div>";
	cText += "<div id=\"selectHakoInfo\">";
	cText += "<div id=\"selectHakoAttension\">選択した箱が表示されます。</div>";
	cText += "<div id=\"selectHakoText\" class=\"selectHako_m_t\">";
	cText += "<p class=\"selectHako_title\">[";
	cText += "Title";
	cText += "]</p>";
	cText += "<p class=\"selectHako_titleSbj\">";
	cText += g_xml_arylist[nDatano]['title'];
	cText += "</p>";
	cText += "<p class=\"selectHako_titleText\">";
	cText += g_xml_arylist[nDatano]['text'];
	cText += "</p>";
	cText += "</div>";
	*/
	cText += "<div class=\"selectHako_m_t\"><object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"376\" height=\"46\" id=\"irohaboxtuto\">";
	cText += "<param name=\"movie\" value=\"_common/swf/tutorial.swf\" />";
	cText += "<param name=\"wmode\" value=\"transparent\" />";
	cText += "<!--[if !IE]>-->";
	cText += "<object type=\"application/x-shockwave-flash\" data=\"_common/swf/tutorial.swf\" width=\"376\" height=\"46\">";
	cText += "<param name=\"wmode\" value=\"transparent\" />";
	cText +="<!--<![endif]-->";
	cText +="<a href=\"http://www.adobe.com/go/getflashplayer\"><img src=\"http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif\" alt=\"Get Adobe Flash player\" />";
	cText +="</a>";
	cText +="<!--[if !IE]>-->";
	cText +="</object>";
	cText +="<!--<![endif]-->";
	cText +="</object></div>";
	cText += "</div>";
	cText += "<div class=\"clear\">&nbsp;</div>";

	// 書き換える
	document.getElementById("hakoInfoBox").innerHTML = cText;
}

// 箱を選択する
function selectBox(nNo)
{
	// ウインドウが非表示の時だけ
	if(parseInt(loadCookie("popup"))==-1)
	{
		// 選択状態なら解除する
		if(parseInt(g_mouse_drag_sel)!=-1)
		{
			// 解除
			g_mouse_drag_sel = -1;
			// 並び順を保存する
			saveCookieSortlist(g_ary_list);
			// マウス
			document.getElementById("mouseCursor").innerHTML = "";
		}
		else
		{
			// 選択番号をクッキーに保存
			g_mouse_drag_sel = nNo;
			// マウス
			var idname = "box_" + nNo;
			document.getElementById("mouseCursor").innerHTML = document.getElementById(idname).innerHTML;
		}
		
		// 出力
		loadReplaceMode();
	}
}

// 移動を実行する
function replaceBox(nTo)
{
	// ウインドウが非表示の時だけ
	if(parseInt(loadCookie("popup"))==-1)
	{
		var nFrom = g_mouse_drag_sel;
		// 選択状態の時だけ処理
		if(parseInt(nFrom) != -1)
		{
			// 入れ替え
			nTo = replaceData(g_ary_list,nFrom,nTo);
			// 保存
			saveCookieSortlist(g_ary_list);
			// 移動先を選択する
			selectBox(parseInt(nTo));
		}
	}
}

// 移動先を選択する
function selectMove(nNo)
{
	// ウインドウが非表示の時だけ
	if(parseInt(loadCookie("popup"))==-1)
	{
		var nMax = g_xml_data.getElementsByTagName("box").length;
		if(nNo >= nMax){ return; }
	/*	var cIdname = "arrow_" + nNo;
		var cText = "<img src=\"" + IMAGE_ARROW + "\" />";
		
		// 書き換え
		document.getElementById(cIdname).innerHTML = cText;*/
		var nFrom = parseInt(g_mouse_drag_sel);
		// 選択状態の時だけ処理
		if(parseInt(nFrom) != -1)
		{
			// 同じ場所には移動させない
			if((nFrom != nNo))
			{
				// 右側に移動する場合の調整
				if(nFrom <= nNo){ nNo+=1; }
				// 入れ替え
				var nTo = replaceData(g_ary_list,nFrom,nNo);
				g_mouse_drag_sel = nTo;
				// 再読み込み
				loadReplaceMode();
			}
		}
		// 非選択状態
		else
		{
			// 詳細情報を表示
			viewBoxInfo(nNo,g_ary_list);
		}
	}
}

// 移動先を解除する
function cancelMove(nNo)
{
	var cIdname = "arrow_" + nNo;
	var cText = "";
	
	// 書き換え
	document.getElementById(cIdname).innerHTML = cText;
}

// XMLから並び順を読み込む
function loadXMLSortlist(file)
{
	// 選択中は処理しない
	if(parseInt(g_mouse_drag_sel)==-1)
	{
		// 確認ウインドウが既に出ている場合は処理しない
		if(parseInt(loadCookie("popup"))==-1)
		{
			// 初期化
			var i=0;
			for(i=0;i<g_tmp_list.length;i++){g_tmp_list[i] = i;}
			// 読み込む
			var l_xml = loadXML(file);
			var value=0;
			var nItemnum = l_xml.getElementsByTagName("id").length
			// 配列に入れる
			for(i=0;i<nItemnum;i++)
			{
				value = l_xml.getElementsByTagName("id")[i].firstChild.data;
				g_tmp_list[i] = parseInt(value);
			}
			// 表示
			var  sel = g_mouse_drag_sel;
			if(sel<0){ sel = 0; }
			viewData(0,108,g_tmp_list,false);
			viewBoxInfo(sel,g_tmp_list);
			
			// 確認ウインドウを表示
			viewPopup("ボタンを並び替えますか？","saveReplace();","loadReplaceMode();");
		}
	}
}

// 編集内容を確定する
function saveReplace()
{
	// ウインドウが表示されているときは実行しない
	if(loadCookie("popup")==-1)
	{
		// tmpデータを保存する
		saveCookieSortlist(g_tmp_list);
		g_ary_list = loadCookieSortlist();
		// 再読み込み
		loadReplaceMode();
	}
}

// 確認ウインドウを出す
function viewPopup(text,funcyes,funcno)
{
	// 確認ウインドウが既に出ている場合は処理しない
	if(parseInt(loadCookie("popup"))==-1)
	{
		MM_preloadImages('_common2/img/top/ok_on.jpg','_common2/img/top/cansel_on.jpg','_common/img/top/window_back.jpg');
		// フラグ
		saveCookie("popup","1",0);
		var cText = "";
		cText += "<div class=\"popup\"><div style=\"margin-top:10px;margin-bottom:10px;\">" + text + "</div><div><a href=\"javascript:void(0);\"><img src=\"_common2/img/top/ok_off.jpg\" width=\"110\" height=\"18\" alt=\"はい\" onclick=\"hiddenPopup();" + funcyes + "\"></a>　　　　　<a href=\"javascript:void(0);\"><img src=\"_common2/img/top/cansel_off.jpg\" width=\"110\" height=\"18\" alt=\"いいえ\" onclick=\"hiddenPopup();" + funcno + "\" ></a></div></div>";
//		document.getElementById("popupwindow").innerHTML = cText;
	
	
		document.getElementById("popupwindow_msg").innerHTML = text;
		funchidden = "hiddenPopup();";
		funcyes = funchidden + funcyes;
		funcno = funchidden + funcno;
		if(checkIE())
		{
			func1 = new Function(funcyes);
			func2 = new Function(funcno);
		}
		else
		{
			func1 = funcyes;
			func2 = funcno;
		}
		document.getElementById("popupwindow_yes").setAttribute("onclick",func1);
		document.getElementById("popupwindow_no").setAttribute("onclick",func2);
		document.getElementById("popupwindow_grp").style.visibility = "visible";
		document.getElementById("popupwindow_btn").style.visibility = "visible";
	}
	else
	{
		hiddenPopup();
	}
}

// 確認ウインドウを消す
function hiddenPopup()
{
	// フラグ
	deleteCookie("popup");
	// ウインドウ
	//var cText = "";
	//document.getElementById("popupwindow").innerHTML = cText;
	document.getElementById("popupwindow_grp").style.visibility = "hidden";
	document.getElementById("popupwindow_btn").style.visibility = "hidden";
}

// モード切替
function changeMode(link,txt)
{
	var cYes = "goPage('"+link+"');";
	// 確認ウインドウを表示
	viewPopup(txt,cYes,"");
}

// ページを開く
function goPage(link)
{
	// ジャンプさせる
	function jump(){
		location.href = link;
	}
	setTimeout (jump, 1);
}

// バナーを切り替える
function changeBanner()
{
	// 読み込む番号
	var nNo = popBannerlist();
	var cText = "";
	// 表示する画像
	cText += "<a href=\"";
	cText += g_xml_banner.getElementsByTagName("link")[nNo].firstChild.data;
	cText += "\"><img src=\""
	cText += g_xml_banner.getElementsByTagName("image")[nNo].firstChild.data;
	cText += "\" title=\"";
	cText += g_xml_banner.getElementsByTagName("text")[nNo].firstChild.data;
	cText += "\" alt=\"";
	cText += g_xml_banner.getElementsByTagName("text")[nNo].firstChild.data;
	cText += "\"></img></a>";
	// 次の画像を読み込んでおく
	cText += "<img src=\"" + g_xml_banner.getElementsByTagName("image")[g_banner_list[0]].firstChild.data; + "\" ></img>"
	
	// 書き換える
//	$("banner").innerHTML = cText;
}

// バナーリストを混ぜる
function shuffleBanner()
{
	// 最大数
	var nMaxnum = g_xml_banner.getElementsByTagName("item").length;
	
	// 各データを入れ替える
	for(var i = 0; i < nMaxnum; i++)
	{
		// 入れ替える先
		var rnd = Math.floor(Math.random()*nMaxnum);
		var buf = g_banner_list[i];
		g_banner_list[i] = g_banner_list[rnd];
		g_banner_list[rnd] = buf;
	}
}

// リストからひとつ取り出す
function popBannerlist()
{
	// 最大数
	var nMaxnum = g_xml_banner.getElementsByTagName("item").length;
	// ID
	var nId = g_banner_list[0];
	// シフトする
	for(var i=0; i < nMaxnum-1; i++)
	{
		g_banner_list[i] = g_banner_list[i+1];
	}
	// 一番後ろに追加する
	g_banner_list[nMaxnum-1] = nId;
	
	// カウント増加
	g_nBannerCount++;
	// 一周したらシャッフルする
	if(g_nBannerCount >= nMaxnum){ shuffleBanner(); g_nBannerCount=0; }
	// IDを渡す
	return nId;
}

// swf用のタグを作成する
function createSwfTag(nId)
{
	var cText = "";
	var root = g_xml_data;
	
	var nWidth = g_xml_arylist[nId]['width'];
	var nHeight = g_xml_arylist[nId]['height'];
	cText += "<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0' width='" + nWidth + "px' height='" + nHeight + "px'>";
	cText += "<param name='movie' value='" + g_xml_arylist[nId]['swf'] + "' />";
	cText += "<param name='quality' value='high' />";
	cText += "<param name='wmode' value='transparent'>";
	cText += "<embed src='" + g_xml_arylist[nId]['swf'] + "'quality='high' width='" + nWidth + "px' height='" + nHeight + "px' align='center' wmode='transparent' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer' />";
	cText += "</object>";
	
	return cText;
}
// マウス
function initMouse()
{
	// ブラウザを判断する
	myOP = (navigator.userAgent.indexOf("Opera",0) != -1)?1:0; //OP
	myN6 = document.getElementById;  // N6 or IE
	myIE = document.all;             // IE
	myN4 = document.layers;          // N4
	
	if (myOP){                          // OP?
	    document.onmousemove = myMoveOP;
	}else if (myIE){                    // IE?
	    document.onmousemove = myMoveIE;
	    document.onscroll = myMoveOP;
	}else if (myN6){                    // N6?
	    window.addEventListener("mousemove",myMoveN6,true);
	}else if (myN4){                    // N4?
	    window.captureEvents(Event.MOUSEMOVE);
      window.onmousemove = myMoveN4;
   }
   g_mouse_obj = document.getElementById("mouseCursor").style;
}
function myMoveOP()
{
	 // OPでマウスが動いた
	g_mouse_x = window.event.clientX;
	g_mouse_y  = window.event.clientY;
	var scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;
	var scrollTop  = document.body.scrollTop  || document.documentElement.scrollTop;
	g_mouse_x += scrollLeft;
	g_mouse_y += scrollTop;
	moveMouseObj();
}
function myMoveN6(myEvent)
{ 
	// N6でマウスが動いた
	g_mouse_x = myEvent.clientX;
	g_mouse_y  = myEvent.clientY;
	var scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;
	var scrollTop  = document.body.scrollTop  || document.documentElement.scrollTop;
	g_mouse_x += scrollLeft;
	g_mouse_y += scrollTop;
	moveMouseObj();
}
function myMoveIE()
{
	// IEでマウスが動いた
	g_mouse_x = window.event.clientX;
	g_mouse_y  = window.event.clientY;
	var scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;
	var scrollTop  = document.body.scrollTop  || document.documentElement.scrollTop;
	g_mouse_x += scrollLeft;
	g_mouse_y += scrollTop;
	moveMouseObj();
}
function myMoveN4(myEvent)
{
	// N4でマウスが動いた
	g_mouse_x = myEvent.x;
	g_mouse_y  = myEvent.y;
	var scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;
	var scrollTop  = document.body.scrollTop  || document.documentElement.scrollTop;
	g_mouse_x += scrollLeft;
	g_mouse_y += scrollTop;
	moveMouseObj();
}
function moveMouseObj()
{
	if(g_mouse_obj!=null)
	{
		g_mouse_obj.left = (g_mouse_offset_x + g_mouse_x) + "px";
		g_mouse_obj.top =  (g_mouse_offset_y + g_mouse_y) + "px";
	}
}

// 通信関係
function getReq()
{
	var req = null;
	if (window.XMLHttpRequest) {
		// ブラウザ内蔵型の場合
		req = new XMLHttpRequest();	
	}

	if (req == null) {
		if (window.ActiveXObject) {
			try {
				req = new ActiveXObject("MXSML2.XMLHTTP");	
			}
			catch (e) {
				try {
					req = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (e) { req = null; }
			}
		}
	}

	return req;
}

// データをダウンロードするだけの単純な同期通信
function getDownloadBase(file)
{
	// ブラウザを調べる
	var req = getReq();
	// 取得不能
	if (req == null) {
		alert("XMLHttpRequestオブジェクトが取得できません");
		return null;
	}

	// 送信する
	req.open("GET", file+"?"+new Date().getTime(), false);
	req.send(null);

	return req;
}
function getDownload(file)
{
	return getDownloadBase(file).responseText;
}
function getDownloadXML(file)
{
	return getDownloadBase(file).responseXML;
}


/**
 * 文字列の一部を置換する
 * @param	str		対象の文字列
 * @param	regstr	検索する文字列 正規表現
 * @param	newstr	置換元の文字列
 * @param	flg		フラグ	{ /文字/フラグ }
 * @return			置換後の文字列
 */
function replaceString(str,regstr,newstr,flg)
{
	// 探して置換する
	var regexp = new RegExp(regstr, flg);
	str = str.replace(regexp,newstr);
	
	// 置換
	return str;
}

/*
 * アクセスカウンター
 * @param	id	対象の箱ID
 */
function linkcounter(id)
{
	//
	var file = "boxlink/link.php?id="+id;
	// ブラウザを調べる
	var req = getReq();
	// 取得不能
	if (req == null) {
		alert("XMLHttpRequestオブジェクトが取得できません");
		return null;
	}

	// 送信する
	req.open("GET", file, false);
	req.send(null);
}

/*
 * 並び順変更ボタン用関数
 * @param	type	並び順
 * @param	async	非同期かどうか(true,false)
 */
function sortButton(type,async)
{
	txt = "	箱の並び順を変更します。<br />現在の並び順は破棄されますがよろしいですか？";
	
	if(type == "hit"){ func = 'sortHit('+async+');'; }
	else if(type == "update"){ func = 'sortUpdate('+async+');'; }
	else if(type == "random"){ func = 'sortRandom('+async+');'; }
	else{ func = ""; }
	
	viewPopup(txt,func,"");
}

/*
 * 並び順をランダムにする
 * @param	async	非同期処理かどうか( true, false )
 */
function sortRandom(async)
{
	viewPopupText("処理中です。<br />しばらくお待ちください。");
	var i=0;
	// XML
	var root = loadXML(XML_DATA);
	// 個数
	var nBox_num = root.getElementsByTagName("box").length;
	
	// 初期値
	var nSortlist = new Array(108);
	for(i=0;i<nSortlist.length;i++){	nSortlist[i] = i;}
	
	for(i=0;i<nBox_num;i++)
	{
		var tmp = nSortlist[i];
		var rnd = Math.floor( Math.random() * nBox_num );
		tmp = nSortlist[i];
		nSortlist[i] = nSortlist[rnd];
		nSortlist[rnd] = tmp;
	}
	
	// 保存
	saveCookieSortlist(nSortlist);
	g_ary_list = nSortlist;
	
	hiddenPopup();
	
	if(async== true)
	{
		loadReplaceMode();
	}
	else
	{
		location.reload();
	}
}

/*
 * 並び順を人気順にする
 * @param	async	非同期処理かどうか( true, false )
 */
function sortHit(async)
{
	viewPopupText("処理中です。<br />しばらくお待ちください。");
	var i=0;
	var k=0;
	//
	var basepath = "boxlink/log/";
	// XML
	var root = loadXML(XML_DATA);
	// 個数
	var nBox_num = root.getElementsByTagName("box").length;
	
	// 初期値
	var nDatalist = new Array(108);
	for(i=0;i<nDatalist.length;i++){	nDatalist[i] = 0;}
	var nSortlist = new Array(108);
	for(i=0;i<nSortlist.length;i++){	nSortlist[i] = i;}
	
	for(i=0;i<nBox_num;i++)
	{
		var item = root.getElementsByTagName("box")[i];
		var path = basepath + item.getAttribute("id") + ".log";
		var data = getDownload(path);
		
		num = data.split('\r\n');
		if(isFinite(parseInt(num[0])))
		{
			nDatalist[i] = parseInt(num[0]);
		}
		else
		{
			nDatalist[i] = 0;
		}
	}
	
	// 並び替える
	for(i=0;i<nBox_num-1;i++)
	{
		for(k=i;k<nBox_num;k++)
		{
			if(nDatalist[i] < nDatalist[k])
			{
				tmp_sort = nSortlist[i];
				tmp_data = nDatalist[i];
				nSortlist[i] = nSortlist[k];
				nDatalist[i] = nDatalist[k];
				nSortlist[k] = tmp_sort;
				nDatalist[k] = tmp_data;
			}
		}
	}
	
	// 保存
	saveCookieSortlist(nSortlist);
	g_ary_list = nSortlist;
	
	hiddenPopup();
	
	if(async== true)
	{
		loadReplaceMode();
	}
	else
	{
		location.reload();
	}
}

/*
 * 並び順を更新順にする
 * @param	async	非同期処理かどうか( true, false )
 */
function sortUpdate(async)
{
	viewPopupText("処理中です。<br />しばらくお待ちください。");
	
	var i=0;
	var k=0;
	// XML
	var root = loadXML(XML_DATA);
	// 個数
	var nBox_num = root.getElementsByTagName("box").length;
	
	// 初期値
	var nDatalist = new Array(108);
	for(i=0;i<nDatalist.length;i++){	nDatalist[i] = 0;}
	var nSortlist = new Array(108);
	for(i=0;i<nSortlist.length;i++){	nSortlist[i] = i;}
	
	for(i=0;i<nBox_num;i++)
	{
		var time = 0;
		var item = root.getElementsByTagName("box")[i].getElementsByTagName("rss");
		var pathlen = item[0].childNodes.length;
		if(pathlen>0)
		{
			var path = item[0].firstChild.nodeValue;
			var url = "_common/php/rssreader.php";
			var paramList = "url="+ path;
			var file = url;
			// ブラウザを調べる
			var req = getReq();
			// 取得不能
			if (req == null) {
				alert("XMLHttpRequestオブジェクトが取得できません");
				return null;
			}
			// 送信する
			req.open("POST", file, false);
			req.setRequestHeader("content-type","application/x-www-form-urlencoded;charset=UTF-8");
			req.send(paramList);
			
			var xml_string = req.responseText;
			xml_string = replaceString(xml_string,'alt="[^"]*"','alt=""','ig');
			var response_xmldata = xmlParse(xml_string);

			var item = response_xmldata.getElementsByTagName('item');
			var dcDateValue = "";
			var dcDate = "";
			if(item[0].getElementsByTagName('pubDate').length > 0)
			{
				dcDate = item[0].getElementsByTagName('pubDate');
			    dcDateValue = dcDate[0].firstChild.nodeValue;
			}
			else
			{
		//		if(document.all){
				    dcDate = item[0].getElementsByTagName('dc:date');
		//		}else{
		//		    dcDate = item[0].getElementsByTagNameNS(dc,'date');
		//		}			    
				dcDateValue = dcDate[0].firstChild.nodeValue;
				dcDateValue = dcDateValue.replace('T',' ');	
				dcDateValue = replaceString(dcDateValue,'-','/','ig');
				//dcDateValue = dcDateValue.replace('+',' + ');
				
				// + で分割する
				if(dcDateValue.search('/\+/ig'))
				{
					var dateary = dcDateValue.split('+');
					dcDateValue = dateary[0];
				}
			}
			
			// 時間取得
			var datetime = Date.parse(dcDateValue);
			var newsdate = new Date(datetime);
			time = newsdate.getTime();
	    }
	    
	    nDatalist[i] = time;
	}
	
	// 並び替える
	for(i=0;i<nBox_num-1;i++)
	{
		for(k=i;k<nBox_num;k++)
		{
			if(nDatalist[i] < nDatalist[k])
			{
				tmp_sort = nSortlist[i];
				tmp_data = nDatalist[i];
				nSortlist[i] = nSortlist[k];
				nDatalist[i] = nDatalist[k];
				nSortlist[k] = tmp_sort;
				nDatalist[k] = tmp_data;
			}
		}
	}
	
	// 保存
	saveCookieSortlist(nSortlist);
	g_ary_list = nSortlist;
	
	hiddenPopup();
	
	if(async== true)
	{
		loadReplaceMode();
	}
	else
	{
		location.reload();
	}
}

// 確認ウインドウを出す
function viewPopupText(text)
{
//	var cText = "";
//	cText += "<div class=\"popup\"><div style=\"margin-top:10px;margin-bottom:10px;\">" + text + "</div>";
	document.getElementById("popupwindow_msg").innerHTML = text;
	document.getElementById("popupwindow_grp").style.visibility = "visible";
	document.getElementById("popupwindow_btn").style.visibility = "hidden";
}

/*
 * IEかチェックする
 * @return	{	IE => true , etc => false	}
 */
function checkIE()
{
	if(document.documentElement.getAttribute("style") == document.documentElement.style)
	{
		// IEの可能性大
		return true;
	}
	
	// IEではない
	return false;
}

/**
 * 指定したタグIDの属性を変更する
 * @param	target		対象の文書
 * @param	tagid		タグのID
 * @param	attr		変更したい属性
 * @param	value		内容
 * @param	mode		変更モード	{ "w" => 新規書込(初期値) , "a" => 追加 , "r" "r1" => 置換 , "r2" => 置換（ヒットしない場合も追加） }
 * @param	regstr		置換元の文字列 正規表現 {	mode == "r"	}
 */
function changeIDAttribute(target,tagid,attr,value,mode,regstr)
{
	// 小文字に変換
	mode = mode.toLowerCase();
	// 現在の内容
	var str = target.getElementById(tagid).getAttribute(attr);
	// モード別
	switch(mode)
	{
		// 新規書込み
		default:
		case "w":
			target.getElementById(tagid).setAttribute(attr,value);
			break;
			
		// 追加
		case "a":
			if(str == null){ str = ""; }
			target.getElementById(tagid).setAttribute(attr,str+value);
			break;
			
		// 置換 ヒットしなかった場合は追加しない
		case "r":
		case "r1":
			if(str == null){ str = ""; }
			else{
				// 置換
				str = replaceString(str,regstr,value);
				target.getElementById(tagid).setAttribute(attr,str);
			}
			break;
		
		// 置換 ヒットしなかった場合も追加する
		case "r2":
			var str2 = value;
			if(str == null){ str = ""; }
			else{
				// 置換
				var str2 = replaceString(str,regstr,value);
				if(str==str2){ str2 += value; }
				target.getElementById(tagid).setAttribute(attr,str2);
			}
			break;
	}
}

function checkBoxCookie(list,num)
{
	var nSortlist = new Array(108);
	for(i=0;i<nSortlist.length;i++){	nSortlist[i] = i;}
	
	// 個数
	var i = 0;
	for(i=num; i < 108 ; i++)
	{
		// データ番号
		if(list[i] != i)
		{
			// クッキーに保存する
			saveCookieSortlist(nSortlist);
			// 初期化したリストを渡す
			return nSortlist;
		}
	}
	return list;
}
