/* [www.zounohana.com]
 * Summary: global JavaScript 
 * Update:  2011-06-22
 */

/* Initial Document Setting
----------------------------------------*/
function docInit() {
	var favicon = document.createElement("link");
	favicon.setAttribute("rel", "shortcut icon");
	favicon.setAttribute("href", "http://www.zounohana.com/favicon.ico");
	document.getElementsByTagName("head")[0].appendChild(favicon);
	document.createElement("abbr");
}

/* Script for Global Navigation
----------------------------------------*/
function globalnav() {
	var c = {
		crClass: "on",
		crPostfix: "_on",
		hoverClass: "on",
		hoverPostfix: "_on",
		rootDir: "http://www.zounohana.com/"
	};
	
	var gnav = document.getElementById("global-nav");
	if(!gnav) return;
	var nav = gnav.getElementsByTagName("a");
	for (var i = 0, l = nav.length; i < l; i ++) setup(nav[i]);
	
	function setup(a) {
		var img = a.getElementsByTagName("img")[0];
		if(img) {
			img.extPos = img.src.lastIndexOf(".");
			img.srcPath = img.src.substring(0, img.extPos);
			img.ext = img.src.substring(img.extPos, img.src.length);
			(new Image()).src = img.srcPath + c.crPostfix + img.ext;
			(new Image()).src = img.srcPath + c.hoverPostfix + img.ext;
		}
		
		a.fNamePos = a.href.lastIndexOf("/") + 1;
		a.dirPath= a.href.substring(0, a.fNamePos);
		
		// 最後のリンクがトップページへのリンク
		c.rootDir = nav[nav.length-1].dirPath;
		
		var loc = location.href; // オブジェクト型ではなくて文字列型
		var locDirPos = loc.lastIndexOf("/") + 1;
		var locDirPath = loc.substring(0, locDirPos);
		
		if(a.dirPath == c.rootDir) { // トップページへのリンクの場合
			if(a.dirPath == locDirPath) {
				if(img) { img.src = img.srcPath + c.crPostfix + img.ext; }
				a.className += " " + c.crClass;
			}
		} else { // トップページ以外へのリンクの場合
			if (loc.indexOf(a.href) != -1) {
				if(img) { img.src = img.srcPath + c.crPostfix + img.ext; }
				a.className += " " + c.crClass;
			}
		}
		
		// ロールオーバーのための準備
		if(img)	 { img.orgSrc = img.src; }
		a.orgClassName = a.className;
		// ロールオーバーを設定
		a.onmouseover = function() {
			if(img) { img.src = img.srcPath + c.hoverPostfix + img.ext; }
			a.className += " " + c.hoverClass;
		};
		a.onmouseout = function() {
			if(img) { img.src = img.orgSrc; }
			a.className = a.orgClassName;
		};
	}
};

/* Show "new" icon on global navigation
----------------------------------------*/
//アイコン表示判定
function judgeUpdateIcon() {
	var eventXml = '/swf/update_event.xml';
	var staffBlogXml = '/api/update_blog.xml';
	var eventNav = $('#global-nav').find('.event').find('a');
	var staffBlogNav = $('#global-nav').find('.staffblog').find('a')
	if (!eventNav[0]) { return; }

	// Show icon on "Event"
/** data:
<zou> <entry> <update_time>2011-06-16 01:23:34</update_time> </entry> </zou> */
	requestXml(eventXml, function () {
		updateView(eventNav);
	});
	
	// Show icon on "Staff Blog"
/** data:
<date> <entry> <update_time>2011-06-12 13:37:47</update_time> </entry> </date> */
	requestXml(staffBlogXml, function () {
		updateView(staffBlogNav);
	});
}

// Request XML and execute callback
function requestXml(xmlUrl, callback) {
	$.ajax({
		url: xmlUrl,
		cache: false,
		dataType: 'xml',
		success: function (data) {
			var update_time = $($('update_time', data)[0]).text();
			if (judgeUpdateTime(update_time)) {
				callback();
			}
		}
	});
}

// Dom manipuration
function updateView(contextElement) {
	var $icon = $('<em>New</em>').css({
		'width': 0,
		'opacity': 0
		});
	contextElement.append($icon);
	$icon.animate({
		'width': 32,
		'opacity': 1
	}, 500);
}

//日付判定
function judgeUpdateTime(eDate) {
	var flg;//true:1週間以内
	var d = new Date();
//    var v_curDateUTC = Date.UTC(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds());
	var v_curDateUTC = Date.UTC(d.getFullYear(), d.getMonth(), d.getDate());
//console.log(v_curDateUTC);
	
	//eDate = "2011-06-09 19:46:34";
	var eventYear = parseInt(eDate.slice(0, 4), 10);
	var eventMonth = parseInt(eDate.slice(5, 7), 10)-1;
	var eventDate = parseInt(eDate.slice(8, 10), 10);
	var eventHours = parseInt(eDate.slice(11, 13), 10);
	var eventMinutes = parseInt(eDate.slice(14, 16), 10);
	var eventSeconds = parseInt(eDate.slice(17, 19), 10);
	var o_eventDateUTC = Date.UTC(eventYear, eventMonth, eventDate, eventHours, eventMinutes, eventSeconds);
	
	var delta = v_curDateUTC - o_eventDateUTC;
	delta = delta / 24 / 60 / 60 / 1000; //標準時からのミリ秒に変換

//console.log(delta);

	if (7 > delta) {//1週間以内かどうかの判定
		flg = true;
	}else {
		flg = false;
	}
	return flg;
}

/* onload event function
----------------------------------------*/
$(document).ready(function () {
	docInit();
	globalnav();
	judgeUpdateIcon();
});


