﻿/*
-----------------------------------------------
Utility Calsses and Functions
----------------------------------------------- */
var CSSClass = {};	// Create our namespace object.
CSSClass.is = function(e, c) {
	if (typeof e == "string") e = document.getElementById(e);
	var classes	= e.className;
	if (!classes)		return false;
	if (classes == c)	return true;
	return e.className.search("\\b" + c + "\\b") != -1;
};
CSSClass.add = function(e, c) {
	if (typeof e == "string") e = document.getElementById(e);
	if (CSSClass.is(e,c)) return;
	if (e.className) c = " " + c;
	e.className += c;
};
CSSClass.remove = function(e, c) {
	if (typeof e == "string") e = document.getElementById(e);
	e.className = e.className.replace(new RegExp("\\b" + c + "\\b\\s*", "g"), "");
};

function getElements(classname, tagname, root) {
	if		(!root)						root	= document;
	else if	(typeof root == "string")	root	= document.getElementById(root);
	if(!tagname)	tagname	= "*";
	var all	= root.getElementsByTagName(tagname);
	if (!classname)	return all;
	var elements	= [];
	for (var i=0; i<all.length; i++) {
		 var element	= all[i];
		 if (CSSClass.is(element, classname))	elements.push(element);
	}
	return elements;
}


/*
-----------------------------------------------
Global
----------------------------------------------- */
var w;


/*
-----------------------------------------------
Main
----------------------------------------------- */
function returnInitialValues() {
	o	= {};
	o.h	= h;
	o.d	= d;
	o.c	= '0';
	o.n	= '';
	return o;
}

/* Fetch Comments
----------------------------------------------- */
function fetchCommentsSilent() {
	
	var opt = {};
	opt.timeout 			= 90000;
	opt.errorHandler		= null;
	opt.parameters			= {};
	opt.parameters.phase	= 10;
	opt.parameters.handle	= h;
	opt.parameters.date		= d;
	HTTP.post("/runners/blog/comment_post_json.php", onFinishFetchCommentsSilent, opt);	
	
}

/* Update Comment
----------------------------------------------- */
function onFinishFetchCommentsSilent(rTxt) {

	/*******************************************************
	 * When no Error Handler is specified, rTxt gets NULL. *
	 *******************************************************/
	if (rTxt) {
		try{
			var rObj	= rTxt.parseJSON();
			if (!rObj.status)	return;
			if (rObj.comments.length) {
				var divComments	= document.getElementById('comments');
				var posted_comments	= getElements('posted_comment', 'div', 'comments');
				for (var i=posted_comments.length; i<rObj.comments.length; i++) divComments.appendChild(_createPostedComment(rObj.comments[i]));
			}
		} catch(e) {}
	}
	
}

/* Create Table of Comment
----------------------------------------------- */
function _createPostedComment(comment) {
	
	var divPostedComment	= document.createElement('div');
	var divHeader			= document.createElement('div');
	var divName				= document.createElement('div');
	var divPost				= document.createElement('div');
	var divComment			= document.createElement('div');
	var strongName			= document.createElement('strong');
	var spanName			= document.createElement('span');
	var aPost				= document.createElement('a');
	var buttonPost			= document.createElement('img');
	CSSClass.add(divPostedComment,	'posted_comment');
	CSSClass.add(divName, 			'comment_name');
	CSSClass.add(divPost, 			'comment_button');
	CSSClass.add(divComment, 		'comment_comment');
	aPost.href			= "javascript:_openWindowPostComment("+comment.comment_id+", '"+comment.name+"');void 0;";
	aPost.style.border	= "0";
	buttonPost.src		= "/img/runners/blog/post_comment.png";
	buttonPost.alt		= "このコメントにコメントする";
	buttonPost.title	= "このコメントにコメントする";
	buttonPost.border	= "0";
	if (document.addEventListener) {
		buttonPost.addEventListener("mouseover", function(e){e.currentTarget.src='/img/runners/blog/post_comment_hover.png';}, false);
		buttonPost.addEventListener("mouseout", function(e){e.currentTarget.src='/img/runners/blog/post_comment.png';}, false);
	} else if (document.attachEvent) {
		buttonPost.attachEvent("onmouseover", function(e){e.srcElement.src='/img/runners/blog/post_comment_hover.png';});
		buttonPost.attachEvent("onmouseout", function(e){e.srcElement.src='/img/runners/blog/post_comment.png';});
	}
	strongName.appendChild(document.createTextNode(comment.name	+ ' さん'));
	spanName.appendChild(document.createTextNode(' （' + comment.date_created + '）'));
	divComment.innerHTML	= comment.comment;
	divName.appendChild(strongName);
	divName.appendChild(spanName);
	if (comment.email) {
		aPost.appendChild(buttonPost);
		divPost.appendChild(aPost);
	}
	divHeader.appendChild(divName);
	divHeader.appendChild(divPost);
	divPostedComment.appendChild(divHeader);
	divPostedComment.appendChild(divComment);
	return divPostedComment;
	
}

function _openWindowPostComment(c, n)	{
	var url	= '/runners/blog/comment.htm?h='+encodeURIComponent(h)+'&d='+encodeURIComponent(d)+'&c='+encodeURIComponent(c)+'&n='+encodeURIComponent(n);
	w	= window.open(url, '', 'top=200,left=200,width=540,height=370,location=no,menubar=no,toolbar=no,status=no,scrollbar=no,resizable=no');
}

function closePopupWindow() {
	fetchCommentsSilent();
	if (!w.closed) w.close();
}

