﻿//グローバル定義
var times = new Date();
var y = times.getFullYear();
var m = times.getMonth() +1;
m = "0" + m;
var d = times.getDate();
d = "0" + d;
var lastdate = "" + y + m.substring(m.length-2,m.length) + d.substring(d.length-2,d.length);
lastdate = parseInt(lastdate);    //現在の年月日を文字データに変換
uriData = this.location.href;	//permalinkを参照するため、URIを格納

var titles = new Array();
var sentence = new Array();
var images = new Array();
var categories = new Array();
var authors = new Array();
var days = new Array();
var permalinks = new Array();
var hc = ""; //登録されている記事数をチェック
var clickId ="";
var clickValue ="";


// デフォルトイベントアクションとバブリングの停止
function stopDefaultAndPropagation(e){
	if(e.stopPropagation){
		e.stopPropagation();
		}
		if(window.event){
			window.event.cancelBubble = true;
		}
		if(e.preventDefault){
			e.preventDefault();
		}
		if(window.event){
			window.event.returnValue = false;
		}
}

//　XMLデータを取得して、キャッシュする
function dataLoad()
{
	var filename = "data.xml?cache="+(new Date()).getTime();
	new Ajax.Request(filename, { method: "get",
		onSuccess: function(httpObj){
		xmlObj = httpObj.responseXML;	// 取得したXMLデータを格納
		dataCache();
	}});
}


//データを抽出
function dataCache(){
	sheetName = "Sheet1";	//　シート1から検索
	wsObj = getWorkSheet(xmlObj, sheetName);
	w = getWorkSheetColCount(wsObj);
	h = getWorkSheetRowCount(wsObj);
	for(i=1; i<h; i++){
		titles[i] = getCellData(xmlObj,sheetName,0,i);
		images[i] = getCellData(xmlObj,sheetName,1,i);
		sentence[i] = getCellData(xmlObj,sheetName,2,i);
		categories[i] = getCellData(xmlObj,sheetName,3,i);
		authors[i] = getCellData(xmlObj,sheetName,4,i);
		days[i] = getCellData(xmlObj,sheetName,5,i);
		permalinks[i] = getCellData(xmlObj,sheetName,6,i);
	}
	if(h>11){
		hc = h-11;
	}else{
		hc= 0;
	}
	generateList();
	rssCheck();
}

//RSSから記事IDを取得する
function rssCheck()
{
	feedno = location.search.substring(1);
	if(feedno !="")
	{
		displayFeed(feedno);
	}else{
		displayData();
	}
}

//　読み込んだXMLファイルを一覧表示させる
function displayData()
{
	var resultData = "";
	resultData += "<div id='center'>";
	for (i=h-1; i>hc; i--) {
		var pn = Math.floor(sentence[i].length/120);
		wtiin = days[i].substring(0,4) + days[i].substring(5,7) + days[i].substring(8,10);
		wtiin = parseInt(wtiin);
		if(wtiin <= lastdate){
			resultData += "<div class='entry'>";
			resultData += "<h2>"+ titles[i] +"</h2>";
			if (images[i] == "empty") {
				resultData += "<img class='nomargin' src='photo/"+ images[i] +".jpg' alt='' />";
				} else {
					npn = images[i].split("、");
					resultData += "<div class='imgbox'>";
					var npnl = npn.length;
					var pclass = "";
					if(pn+1>npnl) {
						for(ii=0;ii<npnl;ii++){
							resultData += "<div class='damy' style='background:url(photo/" + npn[ii] + ".jpg) no-repeat center center'><img src='img/empty.gif' alt='' width='100%' height='100%' /></div>";
						}
					} else {
						for(ii=0;ii<pn+1;ii++){
							resultData += "<div class='damy' style='background:url(photo/" + npn[ii] + ".jpg) no-repeat center center'><img src='img/empty.gif' alt='' width='100%' height='100%' /></div>";
						}
					}
					resultData += "</div>";
				}
				resultData += "<p>"+　sentence[i].replace(/「「/g,"</p><p>") +"</p>";
				resultData += "<ul><li>"+ categories[i] +"</li>";
				resultData += "<li>投稿者:"+ authors[i] +"</li>";
				resultData += "<li>" + days[i].substring(5,7) + "月" + days[i].substring(8,10) + "日</li>";
				resultData += "<li><a href='#' id='" + permalinks[i] + "'>Permalink</a></li></ul>";
				resultData += "</div>";
			}
		}
	resultData += "</div>"; 
	$("result").innerHTML = resultData;
	setActiveStyleSheet('index');
	return false;
}

//　初期生成
function generateList()
{
	//アーカイブリスト作成
	var aList = "";
	aList += "<h3>アーカイブ</h3>";
	aList += "<ul>";
	var archives = new Array();
	for (i=h-1; i>0; i--)
	{
		wtiin = days[i].substring(0,4) + days[i].substring(5,7) + days[i].substring(8,10);
		wtiin = parseInt(wtiin);
		if(wtiin <= lastdate){
			var n = days[i].substring(0,4) + days[i].substring(5,7);
			check = archives.indexOf(n);
			if(check < 0){
				archives[i] = n;
				aList += "<li><a href='#' id='mlist" + i + "'>"+ days[i].substring(0,4) + "年" + days[i].substring(5,7) +"月</a></li>";
			}
		}
	}
	aList += "</ul>";
	$("monthlist").innerHTML = aList;
	var mlist = $("monthlist");
	addListener(mlist,'click',sortData,false);
	
	//カテゴリリスト生成
	var categoryList = "";
	categoryList += "<h3>カテゴリ</h3>";
	categoryList += "<ul>";
	var aa =0;
	categoryList += "<li><a href='#' id='entry_all'>全て表示</a></li>";
	var categories = new Array();
	for (i=1; i<h; i++)
	{
		var n = getCellData(xmlObj,sheetName,3,i);
		check = categories.indexOf(n);
		if(check < 0){
			categories[i] = n;
			categoryList += "<li><a href='#' id='list" + i + "'>"+ categories[i] +"</a></li>";
		}
	}
	categoryList += "</ul>";
	$("category").innerHTML = categoryList;
	var entry_all = $("entry_all");
	addListener(entry_all,'click',entryAll,false);
	var clist = $("category");
	addListener(clist,'click',sortData,false);
}

//　全ての記事表示させる
function entryAll(e)
{
	hc =0;
	displayData();
	stopDefaultAndPropagation(e);
	return false;
}


//IDの取得
function searchId(e){
	if(e.target)
	{
		clickId = e.target.id;
	} else {
		clickId = e.srcElement.id;
	}
	if($(clickId) != null){
		clickValue = $(clickId).firstChild.nodeValue;
	}
}

//　クリックされたカテゴリを表示
function sortData(e)
{
	searchId(e);
	if(clickValue != null){
		var resultData = "";
		resultData += "<div id='center'>";
		for (i=h-1; i>0; i--)
		{
			var ym = days[i].substring(0,4) + "年" + days[i].substring(5,7) + "月";
			if (categories[i].match(clickValue)||ym.match(clickValue))
			{
				var pn = Math.floor(sentence[i].length/120);
				wtiin = days[i].substring(0,4) + days[i].substring(5,7) + days[i].substring(8,10);
				wtiin = parseInt(wtiin);
				if(wtiin <= lastdate){
					resultData += "<div class='entry'>";
					resultData += "<h2>"+ titles[i] +"</h2>";
					if (images[i] == "empty") {
						resultData += "<img class='nomargin' src='photo/"+ images[i] +".jpg' alt='' />";
						} else {
							npn = images[i].split("、");
							resultData += "<div class='imgbox'>";
							var npnl = npn.length;
							var pclass = "";
							if(pn+1>npnl) {
								for(ii=0;ii<npnl;ii++){
									resultData += "<div class='damy' style='background:url(photo/" + npn[ii] + ".jpg) no-repeat center center'><img src='img/empty.gif' alt='' width='100%' height='100%' /></div>";
								}
							} else {
								for(ii=0;ii<pn+1;ii++){
									resultData += "<div class='damy' style='background:url(photo/" + npn[ii] + ".jpg) no-repeat center center'><img src='img/empty.gif' alt='' width='100%' height='100%' /></div>";
								}
							}
							resultData += "</div>";
						}
						resultData += "<p>"+　sentence[i].replace(/「「/g,"</p><p>") +"</p>";
						resultData += "<ul><li>"+ categories[i] +"</li>";
						resultData += "<li>投稿者:"+ authors[i] +"</li>";
						resultData += "<li>" + days[i].substring(5,7) + "月" + days[i].substring(8,10) + "日</li>";
						resultData += "<li><a href='#' id='" + permalinks[i] + "'>Permalink</a></li></ul>";
						resultData += "</div>";
					}
				}
			}
			resultData += "</div>"; 
			$("result").innerHTML = resultData;
			setActiveStyleSheet('index');
			stopDefaultAndPropagation(e);
			return false;
		}
}


//　Permalinkを表示
function commentFeed(e)
{
	searchId(e);
	if(clickId.match("id")){
		displayFeed(clickId.substring(clickId.length-6,clickId.length));
	}
}

//RSSフィードを表示する
function displayFeed(feedno)
{
	var titlen = $("title");
	var className = titlen.firstChild.nodeValue;
	var resultData = "";
	resultData += "<div id='center'>";
	var dp = function(value,index){resultData += "<div class='damy' style='background:url(photo/" + value + ".jpg) no-repeat center center'><img src='img/empty.gif' alt='' width='100%' height='100%' /></div>";};
	var here = feedno.substring(2,6);
	var prev = here-1;
	var next = prev+2;
	prev = "0000" + prev;
	prev = "id" + prev.substring(prev.length-4,prev.length);
	next = "0000" + next;
	next = "id" + next.substring(next.length-4,next.length);
	var cnt =0;
	for(var i=h-1; i>0; i--){
		wtiin = days[i].substring(0,4) + days[i].substring(5,7) + days[i].substring(8,10);
		wtiin = parseInt(wtiin);
		if(wtiin <= lastdate){
			cnt++;
		}
	}
	if(feedno == permalinks[cnt])
	{
		resultData += "<p id='entrynav'><a href='#' id='fe" + prev + "'>１つ前の記事へ</a>｜<a href='#' id='ddmain'>メイン</a>｜１つ先の記事へ</p>";
	}else if(feedno == "id0001"){
		resultData += "<p id='entrynav'>１つ前の記事へ｜<a href='#' id='ddmain'>メイン</a>｜<a href='#' id='fe" + next + "'>１つ先の記事へ</a></p>";
	}else{
		resultData += "<p id='entrynav'><a href='#' id='fe" + prev + "'>１つ前の記事へ</a>｜<a href='#' id='ddmain'>メイン</a>｜<a href='#' id='fe" + next + "'>１つ先の記事へ</a></p>";
	}
	for (i=cnt; i>0; i--)
	{
		wtiin = days[i].substring(0,4) + days[i].substring(5,7) + days[i].substring(8,10);
		wtiin = parseInt(wtiin);
		if (wtiin <= lastdate&&permalinks[i].match(feedno))
			{
				var pn = Math.floor(sentence[i].length/120);
				var npn = images[i].split("、");
				var npnl = npn.length;
				resultData += "<div class='entry'>";
				resultData += "<h2>"+ titles[i] +"</h2>";
				if(npnl>2){
					setActiveStyleSheet('design2');
					resultData += "<p>"+　sentence[i].replace(/「「/g,"</p><p>") +"</p>";
					if (images[i] == "empty") {
						resultData += "<img class='nomargin' src='photo/"+images[i] +".jpg' alt='' />";
					} else {
						resultData += "<div class='imgbox'>";
						npn.each(dp);
						resultData += "</div>";
					}
				}else{
					setActiveStyleSheet('index');
					if (images[i] == "empty") {
						resultData += "<img class='nomargin' src='photo/"+images[i] +".jpg' alt='' />";
					} else {
						resultData += "<div class='imgbox'>";
						npn.each(dp);
						resultData += "</div>";
					}
					resultData += "<p>"+　sentence[i].replace(/「「/g,"</p><p>") +"</p>";
				}
				resultData += "<ul><li>"+ categories[i] +"</li>";
				resultData += "<li>投稿者:"+ authors[i] +"</li>";
				resultData += "<li>" + days[i].substring(5,7) + "月" + days[i].substring(8,10) + "日</li></ul>";
				resultData += "<br class='clear' /></div>";
		}
	}
	$("result").innerHTML = resultData;
	if(titles.length>11){hc = titles.length-11;}//記事数の修正
	var ddmain = $("ddmain");
	addListener(ddmain,'click',displayData,false);
	return false;
}

//　イベントリスナーをセットする
function setListeners(){
	var kiji = $("maincol");
	addListener(kiji,'click',commentFeed,false);
}


//　イベントリスナーを登録するための機能
function addListener(elem,eventType,func,cap){
	if(elem.addEventListener){
		elem.addEventListener(eventType,func,cap);
	}else if(elem.attachEvent){
		elem.attachEvent('on'+eventType,func);
	}else {
		alert('ご利用のブラウザではサポートされていません。');
		return false;
	}
}

//　イベントリスナーを削除するための機能
function removeListener(elem,eventType,func,cap){
	if(elem.removeEventListener){
		elem.removeEventListener(eventType,func,cap);
	}else if(elem.detachEvent){
		elem.detachEvent('on'+eventType,func);
	}
}

addListener(window,'load',dataLoad,false);
addListener(window,'load',setListeners,false);

