﻿//右側に挿入オブジェクト
$(function(){
	var win = window, doc = win.document;
	
	var date = GetDate();
	
	AddRightCalendar();
	AddSeizi();
	AddRightArchive();
	AddRightHayabusa();
	AddRightFavorite();
	
	/*
	if(date.year >= 2008 && date.month >= 10){
	}else if(date.year >= 2008 && date.month >= 8){
		
	}
	*/
	function AddSeizi(){
		var div = doc.createElement("div");
		div.innerHTML = [
			'<div>',
			'<a href="http://www35.atwiki.jp/kolia/pages/159.html">',
			'<img src="http://hirodoki.web.fc2.com/logo/minsyu.gif" border="0" style="margin:5px;">',
			'</a>',
			'</div>'
		].join("");
		
		div = $(div);
		
		return AddRight($("<h2>Politics</h2>"), div).attr("id","seizi");
	}
	
	function AddRightHayabusa(){
		var div = doc.createElement("div");
		div.innerHTML = [
			'<div>',
			'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=DEFVERSION" width="157" height="292">',
			'<param name="movie" value="http://space.jaxa.jp/today/blogparts/blogparts.swf" />',
			'<param name="menu" value="false" />',
			'<param name="quality" value="high" />',
			'<param name="bgcolor" value="#ffffff" />',
			'<embed src="http://space.jaxa.jp/today/blogparts/blogparts.swf" menu="false" quality="high" bgcolor="#ffffff" width="157" height="292" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />',
			'</object>',
			'</div>',
			'<div>',
			'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=DEFVERSION" width="160" height="120">',
			'<param name="movie" value="http://hayabusamatome.xrea.jp/wiki/cd/hayabusa_cd_1_0.swf" />',
			'<param name="menu" value="false" />',
			'<param name="quality" value="high" />',
			'<param name="bgcolor" value="#ffffff" />',
			'<embed src="http://hayabusamatome.xrea.jp/wiki/cd/hayabusa_cd_1_0.swf" menu="false" quality="high" bgcolor="#ffffff" width="160" height="120" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />',
			'</object>',
			'</div>'
		].join("");
		
		div = $(div);
		
		return AddRight($("<h2>JAXA</h2>"), div).attr("id","jaxa");
	}
	
	function AddRightArchive(){
		return AddRight($("<h2>Archive</h2>"), Archive()).attr("id", "archive");
	}
	
	function AddRightFavorite(){
		return AddRight($("<h2>Favorite</h2>"), Favorite()).attr("id", "favorite");
	}
	
	function AddRightCalendar(){
		var ul = $(doc.createElement("ul")).attr("id", "cal_nav");
		
		var before = {
			year: date.month == 1 ? date.year - 1 : date.year,
			month: date.month == 1 ? 12 : date.month - 1
		};
		var after = {
			year: date.month == 12 ? date.year + 1 : date.year,
			month: date.month == 12 ? 1 : date.month + 1
		};
		
		var before_a = GetAHTML(before.year, before.month).text("＜");
		var after_a = GetAHTML(after.year, after.month).text("＞");
		
		$(doc.createElement("li")).addClass("nav_left").append(before_a).appendTo(ul);
		$(doc.createElement("li")).addClass("nav_center").text(date.year.toString() + "年" + (date.month >= 10 ? date.month.toString() : "0" + date.month.toString()) + "月").appendTo(ul);
		$(doc.createElement("li")).addClass("nav_right").append(after_a).appendTo(ul);
		
		return AddRight(ul, Calendar()).attr("id", "yui_calendar");
		
		function GetAHTML(year, month){
			if(year == 2008 && month <= 7){
				return $("<a href=\"../../" + year.toString() + (month >= 10 ? month.toString() : ("0" + month.toString())) + ".html\"></a>");
			}else{
				if(date.year != year){
					return $("<a href=\"../../" + year.toString() + "/" + (month >= 10 ? month.toString() : ("0" + month.toString())) + "/\"></a>");
				}else{
					return $("<a href=\"../" + (month >= 10 ? month.toString() : ("0" + month.toString())) + "/\"></a>");
				}
			}
		}
	}
	
	//tit_eleもbody_eleもjQueryのオブジェクト
	function AddRight(tit_ele, body_ele){
		var root = $(doc.createElement("div"));
		var title = $(doc.createElement("div"));
		var body = $(doc.createElement("div"));
		title.append(tit_ele);
		body.append(body_ele);
		root
			.append(title)
			.append(body)
			.appendTo("#right_column");
		
		return root;
	}
	
	function Archive(){
		return _CreateArchive();
	}
	
	function Favorite(){
		return _CreateFavorite();
	}
	
	function _CreateArchive(){
		var div = $(doc.createElement("div"));
		$.ajax({
			url: "../../../diary.html",
			type: "GET",
			dataType: "html",
			success: function(data){
				var b = doc.createElement("div");
				b.innerHTML = data;
				var ret = $("#diary_list", b);
				div.html("<ul>" + ret.html() + "</ul>");
			}
		});
		
		return div;
	}
	
	function _CreateFavorite(){
		var div = $(doc.createElement("div"));
		//div.load("../../../favorite.html");
		$.ajax({
			url: "../../../favorite.html",
			type: "GET",
			dataType: "html",
			success: function(data){
				var b = doc.createElement("div");
				b.innerHTML = data;
				var ret = $("ul", b);
				div.html("<ul>" + ret.html() + "</ul>");
			}
		});
		
		return div;
	}
	
	//date変数に依存
	//jQueryのオブジェクトを返す
	function Calendar(){
		return _CreateCalendar(date.year, date.month, new Date);
	}
	
	//jQueryのオブジェクトを返すこと。
	function _CreateCalendar(y, m, today){
		if(!(1 <= m && m <= 12)) return null;
		var dates = ([undefined, 31, ((!(y % 400) || !(y % 4) && !!(y % 100)) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31])[m];
		var days = ['<span class="holiday">日</span>','月','火','水','木','金','<span class="weekend">土</span>'];
		
		var first = new Date(y, m - 1, 1);
		var last = new Date(y, m - 1, dates);
		
		var space1 = first.getDay();
		var space2 = last.getDay();
		var uni = space1 + dates + 6 - space2;
		var line = uni / 7;
		
		
		var i, j;
		
		var table = doc.createElement("table");
		table.id = "cal";
		
		//曜日///////////////////////////////////////////
		var thead = doc.createElement("thead");
		var tr_head = doc.createElement("tr");
		for(i = 0; i < 7; ++i){
			var th = doc.createElement("th");
			th.innerHTML = days[i];
			tr_head.appendChild(th);
		}
		thead.appendChild(tr_head);
		table.appendChild(thead);
		
		//日付///////////////////////////////////////////
		var currentDate = 1;
		var tbody = doc.createElement("tbody");
		
		//最初の行//////////////
		var tr_first = doc.createElement("tr");
		for(i = 0; i < space1; ++i){
			tr_first.appendChild(CreateSpace());
		}
		for(; i < 7; ++i){
			tr_first.appendChild(CreateDateCell(y, m, currentDate++));
		}
		tbody.appendChild(tr_first);
		
		//真ん中の行//////////////
		for(i = 1; i < line - 1; ++i){
			var tr = doc.createElement("tr");
			for(j = 0; j < 7; ++j){
				tr.appendChild(CreateDateCell(y, m, currentDate++));
			}
			tbody.appendChild(tr);
		}
		
		//最後の行//////////////
		var tr_last = doc.createElement("tr");
		for(i = 0; i <= space2; ++i){
			tr_last.appendChild(CreateDateCell(y, m, currentDate++));
		}
		for(; i < 7; ++i){
			tr_last.appendChild(CreateSpace());
		}
		tbody.appendChild(tr_last);
		
		table.appendChild(tbody);
		
		//終わり
		return $(table);
		
		function CreateSpace(){
			var td = doc.createElement("td");
			td.innerHTML = "-";
			td.className = "noselect";
			
			return td;
		}
		function CreateDateCell(y, m, d){
			var td = doc.createElement("td");
			
			if(IsExist(y, m, d)){
				var anc = doc.createElement("A");
				anc.href = "#d" + y + (m >= 10 ? m : "0" + m) + (d >= 10 ? d : "0" + d);
				anc.innerHTML = d.toString();
				td.className = "select";
				td.appendChild(anc);
			}else{
				td.innerHTML = d.toString();
				td.className = "noselect";
			}
			if(IsToday(y, m, d)){
				td.className += " today"
			}
			
			return td;
		}
		function IsExist(y, m, d){
			return !!doc.getElementById("d" + y + (m >= 10 ? m : "0" + m) + (d >= 10 ? d : "0" + d));
		}
		
		function IsToday(y, m, d){
			return today.getDate() == d && today.getMonth() == (m - 1) && today.getFullYear() == y;
		}
		function IsHoliday(y, m, d){
			return false;
		}
	}
	
	function GetDate(){
		var path = win.location.pathname;
		var index = path.lastIndexOf("/");
		var index2 = path.lastIndexOf("/", index - 1);
		
		return {
			year: path.substring(path.lastIndexOf("/", index2 - 1) + 1, index2) - 0,
			month: path.substring(index2 + 1, index) - 0
		};
	}
	

});

//左側に挿入オブジェクト

$(function(){
	var win = window, doc = document;
	
	AddInfo();
	
	
	function AddInfo(){
		var div = doc.createElement("div");
		div.innerHTML = [
			'<p>',
			'Blogつくりました。',
			'</p>',
			'<ul><li><a href="http://www14.atpages.jp/cnidarian/">',
			'寝る前5分で書くブログ@Word Press',
			'</a></li></ul>'
		].join("");
		
		
		div = $(div);
		
		return AddLeft($("<h2></h2>"), div).attr("id","information");
	}
	
	
	//tit_eleもbody_eleもjQueryのオブジェクト
	function AddLeft(tit_ele, body_ele){
		var root = $(doc.createElement("div"));
		var title = $(doc.createElement("div"));
		var body = $(doc.createElement("div"));
		title.append(tit_ele);
		body.append(body_ele);
		root
			.append(title)
			.append(body)
			.prependTo("#diary");
		
		return root;
	}
	
	
	
});


//右側に関係ないオブジェクト
$(function(){
	var eventAttach = (function(){
		if(document.addEventListener){
			return function(el, ev, fn){
				el.addEventListener(ev, fn, false);
			};
		}else if(document.attachEvent){
			return function(el, ev, fn){
				el.attachEvent("on" + ev, fn);
			};
		}else{
			return function(el, ev, fn){
				var old = el["on" + ev];
				el["on" + ev] = function(){
					if(typeof(old) === "function") old.apply(this, arguments);
					return fn.apply(this, arguments);
				};
			};
		}
	})();
	
	var url = "http://hirodoki.web.fc2.com/logo/analog.png";
	
	$(function(){
		var canvas = document[document.compatMode == "CSS1Compat" ? "documentElement" : "body"];
		
		var img = document.createElement("img");
		img.src = url;
		with(img.style){
			position = "absolute";
			right = "0px";
			top = canvas.scrollTop + "px";
		}
		
		document.getElementsByTagName("body").item(0).appendChild(img);
		
		eventAttach(window, "scroll", function(){
			img.style.top = canvas.scrollTop + "px";
		});
	});
})();