function actionCalendarMonthChange(){
	var date = $F('date').substring(0, 6);

	$('date').value = date;
	$('weblog:view').value = 'cal';
	$('view').value = 'cal';
	
	var param = Form.serialize('weblog');
	var url = 'ajax/ajaxCalendar.jsf';
	var myAjax = new Ajax.Updater(
									'calendarDiv', 
									url, 
									{
										method: 'post', 
										postBody: param, 
										onLoading: calendarLoading,
										onComplete: calendarComplete,
										onFailure: errHandler,
										onException: exceptionHandler
									}
								);
}

function errHandler(xmlHttpRequest){
	alert("error");
}
function successHandler(xmlHttpRequest){
	alert("success");
}

function exceptionHandler(ajaxReq, exceptionObj){
	alert("exception");
	alert(exceptionObj.description);
	alert(exceptionObj.number & 0xFFFF);
}

// ---------------
// Check (Comment)
//
function chkCmntName(val){

	// null
	if (val.match(/^\s*$/)){
		return 'Required \"name\".';
	}
	// length
	if (strlen(val) > 50){
		return '\"name\" is too long.';
	}
	
	return '';
}
function chkCmntEmail(val){
	// length
	if (strlen(val) > 255){
		return '\"e-mail\" address is too long.';
	}
	// format
	if (!val.match(/^\s*$/) && !val.match(/^\S+@\S+\.\S+$/)){
		return '\"e-mail\" address is invalid.';
	}
	
	return '';
}
function chkCmntHome(val){
	// length
	if (strlen(val) > 255){
		return '\"url\" is too long.';
	}
	// format
	if (!val.match(/^\s*$/) && !val.match(/^https?:\/\/.+/)){
		return '\"url\" is invalid.';
	}
	
	return '';
}
function chkCmntCmnt(val){
	// null
	if (val.match(/^\s*$/)){
		return 'Required \"comment\".';
	}
	
	return '';
}

function errPopup(errMessages){
	var objCmntPrev = document.getElementById('popup');
	var t = (navigator.userAgent.indexOf('MSIE') >= 0 ? (getEltPageTop($('comments_form')) - 20) : ((getCurrentWinHeight() - 100) / 2));
	var l = (getCurrentWinWidth() - 400) / 2;

	objCmntPrev.style.visibility = 'visible';
	objCmntPrev.style.top = t + 'px';
	objCmntPrev.style.left = l + 'px';
	setOpacity(objCmntPrev, 100);
	
	var error_msg = '';
	for (var i = 0; i < errMessages.length; i ++){
		if (errMessages[i] != ''){
			error_msg += errMessages[i] + '<br />';
		}
	}

	var addedHTML = '<div class="popup"><div class="popup_header"></div><div class="popup_body"><p class="popup_head"><span class="popup_left">Error!</span><span class="popup_right"></span></p><p class="popup_body_icon"></p><p class="popup_body_body">' + error_msg + '</p><form><input type="button" id="err_popup_btn_ok" class="btn" value="OK" /></form></div><div class="popup_footer"></div></div>';
	
	objCmntPrev.innerHTML = addedHTML;
			
	var objPopupBtnOK = $('err_popup_btn_ok');
	
	var funcOK = function(){
		var obj = document.getElementById('popup');
		var fadeoutOpacity = 100;
		var timerFadeout;
		
		removeListener(objPopupBtnOK, 'mouseover', styleBtnRollOver, false);
		removeListener(objPopupBtnOK, 'focus', styleBtnRollOver, false);
		removeListener(objPopupBtnOK, 'blur', styleBtnRollOut, false);
		removeListener(objPopupBtnOK, 'mouseout', styleBtnRollOut, false);
		removeListener(objPopupBtnOK, 'click', funcOK, false);
		
		fadeOut(obj, 100, 20, 50, enableCommentForm);
		
	};
	
	addListener(objPopupBtnOK, 'focus', styleBtnRollOver, false);
	addListener(objPopupBtnOK, 'mouseover', styleBtnRollOver, false);
	addListener(objPopupBtnOK, 'blur', styleBtnRollOut, false);
	addListener(objPopupBtnOK, 'mouseout', styleBtnRollOut, false);
	addListener(objPopupBtnOK, 'click', funcOK, false);
}


// ---------------
// Comment preview
//
function actionCommentPreview(e){
	//
	// clear preview comment
	var objCmntPrev = document.getElementById('popup');
	clearChildNodes(objCmntPrev);

	//
	// input data check
	var errMesName = chkCmntName($('input_name').value);
	var errMesEmail = chkCmntEmail($('input_email').value);
	var errMesHome = chkCmntHome($('input_home').value);
	var errMesCmnt = chkCmntCmnt($('input_comment').value);
	
	//
	// Disable comment form
	disableCommentForm();

	if (errMesName != "" || 
		errMesEmail != "" ||
		errMesHome != "" ||
		errMesCmnt != ""){
		
		var errMessages = new Array(errMesName, errMesEmail, errMesHome, errMesCmnt);
		
		errPopup(errMessages);
		
		return false;
	}

	//
	// ajax
	var param = Form.serialize('form_comment');
	var url = 'commentPreview.php';
	var objAjax = new Ajax.Updater(
									'popup', 
									url, 
									{
										method: 'post', 
										postBody: param, 
										onLoading: loadingCommentPreview,
										onComplete: completeCommentPreview
									}
								);

	return false;
}

function loadingCommentPreview(xmlHttpRequest){

	var objCmntPrev = document.getElementById('popup');
	var t = (isMSIE() ? (getEltPageTop($('comments_form')) - 20) : ((getCurrentWinHeight() - 100) / 2));
	var l = (getCurrentWinWidth() - 400) / 2;


	objCmntPrev.style.visibility = 'visible';
	objCmntPrev.style.top = t + 'px';
	objCmntPrev.style.left = l + 'px';
	setOpacity(objCmntPrev, 70);

	objCmntPrev.innerHTML = '<ul><li class="comment"><div class="comment_header"></div><div class="comment_body"><p class="comment_head"><span class="comment_name"></span><span class="comment_date"></span></p><p class="comment_loading"><img src="../img/indicator.gif" class="loading_img"/>loading..<br /></p></div><div class="comment_footer"></div></li></ul>';
}

function completeCommentPreview(xmlHttpRequest){

	var objCommentPrev = document.getElementById('popup');

	setOpacity(objCommentPrev, 100);
	objCommentPrev.innerHTML = xmlHttpRequest.responseText;
	
	if ($('prev_popup')){
	
		var objPrevBtnCancel = $('btn_prev_cancel');
		var objPrevBtnPost = $('btn_prev_post');
		
		addListener(objPrevBtnCancel, 'focus', styleBtnRollOver, false);
		addListener(objPrevBtnCancel, 'mouseover', styleBtnRollOver, false);
		addListener(objPrevBtnCancel, 'blur', styleBtnRollOut, false);
		addListener(objPrevBtnCancel, 'mouseout', styleBtnRollOut, false);
		addListener(objPrevBtnCancel, 'click', styleBtnCmntPrevCancel, false);
		
		addListener(objPrevBtnPost, 'focus', styleBtnRollOver, false);
		addListener(objPrevBtnPost, 'mouseover', styleBtnRollOver, false);
		addListener(objPrevBtnPost, 'blur', styleBtnRollOut, false);
		addListener(objPrevBtnPost, 'mouseout', styleBtnRollOut, false);
		addListener(objPrevBtnPost, 'click', actionCommentPost, false);
	}
	else if ($('err_popup')){
		var objPopupBtnOK = $('err_popup_btn_ok');
		
		var funcOK = function(){
			var obj = document.getElementById('popup');
			var fadeoutOpacity = 100;
			var timerFadeout;
			
			removeListener(objPopupBtnOK, 'mouseover', styleBtnRollOver, false);
			removeListener(objPopupBtnOK, 'focus', styleBtnRollOver, false);
			removeListener(objPopupBtnOK, 'blur', styleBtnRollOut, false);
			removeListener(objPopupBtnOK, 'mouseout', styleBtnRollOut, false);
			removeListener(objPopupBtnOK, 'click', funcOK, false);
			
			fadeOut(obj, 100, 20, 50, enableCommentForm);
			
		};
		
		addListener(objPopupBtnOK, 'focus', styleBtnRollOver, false);
		addListener(objPopupBtnOK, 'mouseover', styleBtnRollOver, false);
		addListener(objPopupBtnOK, 'blur', styleBtnRollOut, false);
		addListener(objPopupBtnOK, 'mouseout', styleBtnRollOut, false);
		addListener(objPopupBtnOK, 'click', funcOK, false);
	}
}

// ---------------
// Comment post
//
function actionCommentPost(e){

	//
	// clear preview comment
	var objCmntPrev = document.getElementById('popup');
	clearChildNodes(objCmntPrev);
	
	//
	// input data check
	var errMesName = chkCmntName($('input_name').value);
	var errMesEmail = chkCmntEmail($('input_email').value);
	var errMesHome = chkCmntHome($('input_home').value);
	var errMesCmnt = chkCmntCmnt($('input_comment').value);
	
	//
	// Disable comment form
	disableCommentForm();

	if (errMesName != "" || 
		errMesEmail != "" ||
		errMesHome != "" ||
		errMesCmnt != ""){
		
		var errMessages = new Array(errMesName, errMesEmail, errMesHome, errMesCmnt);
		
		errPopup(errMessages);
		
		return false;
	}

	//
	// ajax
	var param = Form.serialize('form_comment');
	var url = 'comment.php';
	var objAjax = new Ajax.Updater(
									'popup', 
									url, 
									{
										method: 'post', 
										postBody: param, 
										onLoading: loadingCommentPreview,
										onComplete: completeCommentPost
									}
								);
	return false;
}

function completeCommentPost(xmlHttpRequest){
	var objCmntPrev = document.getElementById('popup');

	var rootTagID = xmlHttpRequest.responseXML.firstChild.getAttribute('id');
	if (rootTagID != 'err_popup'){
		setOpacity(objCmntPrev, 0);
		objCmntPrev.style.visibility = 'hidden';
		
		var objListComment = document.getElementById('list_comment');

		// no comment check
		var objNoComment = document.getElementById('comment_not_exists');
		if (objNoComment){
			objListComment.removeChild(objNoComment);
		}

		if (isMSIE()){
			objListComment.insertAdjacentHTML('BeforeEnd', xmlHttpRequest.responseText);
		}
		else{
			objListComment.innerHTML += xmlHttpRequest.responseText;
		}

		new Effect.ScrollTo(objListComment.lastChild, {duration:0.5});

		enableCommentForm();
	}
	else{
		setOpacity(objCmntPrev, 100);
		objCmntPrev.innerHTML = xmlHttpRequest.responseText;

		var objPopupBtnOK = document.getElementById('err_popup_btn_ok');
		
		var funcOK = function(){
			var obj = document.getElementById('popup');
			var fadeoutOpacity = 100;
			var timerFadeout;
			
			removeListener(objPopupBtnOK, 'mouseover', styleBtnRollOver, false);
			removeListener(objPopupBtnOK, 'focus', styleBtnRollOver, false);
			removeListener(objPopupBtnOK, 'blur', styleBtnRollOut, false);
			removeListener(objPopupBtnOK, 'mouseout', styleBtnRollOut, false);
			removeListener(objPopupBtnOK, 'click', funcOK, false);
			
			fadeOut(obj, 100, 20, 50, enableCommentForm);
			enableCommentForm();
		};
		
		addListener(objPopupBtnOK, 'focus', styleBtnRollOver, false);
		addListener(objPopupBtnOK, 'mouseover', styleBtnRollOver, false);
		addListener(objPopupBtnOK, 'blur', styleBtnRollOut, false);
		addListener(objPopupBtnOK, 'mouseout', styleBtnRollOut, false);
		addListener(objPopupBtnOK, 'click', funcOK, false);
	}

	
	// clear comment area
	document.getElementById('input_comment').value = '';
}


// ===============
// Event
function setListeners(e){

	var objMenuComments = document.getElementById('menu_comments');
	addListener(objMenuComments, 'click', showInfoAndComments, false);

	var objCmntBtnClear = document.getElementById('btn_clear');	
	addListener(objCmntBtnClear, 'focus', styleBtnRollOver, false);
	addListener(objCmntBtnClear, 'mouseover', styleBtnRollOver, false);
	addListener(objCmntBtnClear, 'blur', styleBtnRollOut, false);
	addListener(objCmntBtnClear, 'mouseout', styleBtnRollOut, false);
	
	var objCmntBtnPreview = document.getElementById('btn_preview');
	addListener(objCmntBtnPreview, 'focus', styleBtnRollOver, false);
	addListener(objCmntBtnPreview, 'mouseover', styleBtnRollOver, false);
	addListener(objCmntBtnPreview, 'blur', styleBtnRollOut, false);
	addListener(objCmntBtnPreview, 'mouseout', styleBtnRollOut, false);
	addListener(objCmntBtnPreview, 'click', actionCommentPreview, false);
	
	var objCmntBtnPost = document.getElementById('btn_post');
	addListener(objCmntBtnPost, 'focus', styleBtnRollOver, false);
	addListener(objCmntBtnPost, 'mouseover', styleBtnRollOver, false);
	addListener(objCmntBtnPost, 'blur', styleBtnRollOut, false);
	addListener(objCmntBtnPost, 'mouseout', styleBtnRollOut, false);
	addListener(objCmntBtnPost, 'click', actionCommentPost, false);
	
	var objCmntInputName = document.getElementById('input_name');
	addListener(objCmntInputName, 'focus', styleInputFocus, false);
	addListener(objCmntInputName, 'blur', styleInputBlur, false);
	
	var objCmntInputEmail = document.getElementById('input_email');
	addListener(objCmntInputEmail, 'focus', styleInputFocus, false);
	addListener(objCmntInputEmail, 'blur', styleInputBlur, false);
	
	var objCmntInputHome = document.getElementById('input_home');
	addListener(objCmntInputHome, 'focus', styleInputFocus, false);
	addListener(objCmntInputHome, 'blur', styleInputBlur, false);
	
	var objCmntInputComment = document.getElementById('input_comment');
	addListener(objCmntInputComment, 'focus', styleInputFocus, false);
	addListener(objCmntInputComment, 'blur', styleInputBlur, false);
	
	new Draggable('popup');
}

///// Input
function styleInputFocus(e){
	var obj = (e.srcElement ? e.srcElement : e.target);
	var parentObj = obj.parentNode;
	parentObj.style.backgroundImage = 'url("img/' + obj.id + '_focus.png")';
}
function styleInputBlur(e){
	var obj = (e.srcElement ? e.srcElement : e.target);
	var parentObj = obj.parentNode;
	parentObj.style.backgroundImage = 'url("img/' + obj.id + '.png")';
}

///// Button
function styleBtnRollOut(e){
	var obj = (e.srcElement ? e.srcElement : e.target);
	obj.className = 'btn';
}
function styleBtnRollOver(e){
	var obj = (e.srcElement ? e.srcElement : e.target);
	obj.className = 'btn_over';
}

///// Action
// Menu -> comment
function showInfoAndComments(e){

	var objInfo = document.getElementById('info');
	var objCmnt = document.getElementById('comments');
	var objMenuComments = document.getElementById('menu_comments');
	
	objInfo.style.display = 'block';
	objCmnt.style.display = 'block';
	
	removeListener(objMenuComments, 'click', showInfoAndComments, false);
	addListener(objMenuComments, 'click', hideInfoAndComments, false);
	
	new Effect.ScrollTo('info', {duration:0.5});
}
function hideInfoAndComments(e){
	var objInfo = document.getElementById('info');
	var objCmnt = document.getElementById('comments');
	var objMenuComments = document.getElementById('menu_comments');
	
	objInfo.style.display = 'none';
	objCmnt.style.display = 'none';
	
	removeListener(objMenuComments, 'click', hideInfoAndComments, false);
	addListener(objMenuComments, 'click', showInfoAndComments, false);
}

// Comment Preview -> cancel
function styleBtnCmntPrevCancel(e){

	var obj = document.getElementById('popup');
	var startFadeoutOpacity = 100;
	
	var objPrevBtnCancel = document.getElementById('btn_prev_cancel');
	var objPrevBtnPost = document.getElementById('btn_prev_post');
	
	removeListener(objPrevBtnCancel, 'mouseover', styleBtnRollOver, false);
	removeListener(objPrevBtnCancel, 'focus', styleBtnRollOver, false);
	removeListener(objPrevBtnCancel, 'blur', styleBtnRollOut, false);
	removeListener(objPrevBtnCancel, 'mouseout', styleBtnRollOut, false);
	removeListener(objPrevBtnCancel, 'click', styleBtnCmntPrevCancel, false);
	
	removeListener(objPrevBtnPost, 'focus', styleBtnRollOver, false);
	removeListener(objPrevBtnPost, 'mouseover', styleBtnRollOver, false);
	removeListener(objPrevBtnPost, 'blur', styleBtnRollOut, false);
	removeListener(objPrevBtnPost, 'mouseout', styleBtnRollOut, false);
	
	fadeOut(obj, startFadeoutOpacity, 20, 50, enableCommentForm);
}

addListener(window, 'load', setListeners, false);



///// Enable comment form
function enableCommentForm(){
	document.getElementById('input_name').removeAttribute('disabled');
	document.getElementById('input_email').removeAttribute('disabled');
	document.getElementById('input_home').removeAttribute('disabled');
	document.getElementById('input_save').removeAttribute('disabled');
	document.getElementById('input_comment').removeAttribute('disabled');
	document.getElementById('btn_clear').removeAttribute('disabled');
	document.getElementById('btn_preview').removeAttribute('disabled');
	document.getElementById('btn_post').removeAttribute('disabled');
}

///// Disable comment form
function disableCommentForm(){
	document.getElementById('input_name').setAttribute('disabled', 'disabled');
	document.getElementById('input_email').setAttribute('disabled', 'disabled');
	document.getElementById('input_home').setAttribute('disabled', 'disabled');
	document.getElementById('input_save').setAttribute('disabled', 'disabled');
	document.getElementById('input_comment').setAttribute('disabled', 'disabled');
	document.getElementById('btn_clear').setAttribute('disabled', 'disabled');
	document.getElementById('btn_preview').setAttribute('disabled', 'disabled');
	document.getElementById('btn_post').setAttribute('disabled', 'disabled');
}

///// Popup window
/*
function createCommentNode(headerLeft, headerRight, bodyMessage){

	var elmUl = document.createElement('ul');
	
		var elmLi = document.createElement('li');
		elmLi.className = 'comment';
	
			var elmDivCmntHead = document.createElement('div');
			elmDivCmntHead.className = 'comment_header';
	
			var elmDivCmntBody = document.createElement('div');
			elmDivCmntBody.className = 'comment_body';
	
				var elmPCmntHead = document.createElement('p');
				elmPCmntHead.className = 'comment_head';
	
					var elmSpanCmntName = document.createElement('span');
					elmSpanCmntName.className = 'comment_name';
					
						var txtCmntName = document.createTextNode(headerLeft);
	
					var elmSpanCmntDate = document.createElement('span');
					elmSpanCmntDate.className = 'comment_date';
					
						var txtCmntDate = document.createTextNode(headerRight);
	
				var elmPCmntCmnt = document.createElement('p');
				elmPCmntCmnt.className = 'comment_comment';

					var txtCmntCmnt = document.createTextNode(bodyMessage);
					
			var elmDivCmntFoot = document.createElement('div');
			elmDivCmntFoot.className = 'comment_footer';

	elmUl.appendChild(elmLi);
		elmLi.appendChild(elmDivCmntHead);
		elmLi.appendChild(elmDivCmntBody);
	
			elmDivCmntBody.appendChild(elmPCmntHead);
				elmPCmntHead.appendChild(elmSpanCmntName);
					elmSpanCmntName.appendChild(txtCmntName);
					
				elmPCmntHead.appendChild(elmSpanCmntDate);
					elmSpanCmntDate.appendChild(txtCmntDate);
	
			elmDivCmntBody.appendChild(elmPCmntCmnt);
				elmPCmntCmnt.appendChild(txtCmntCmnt);
				
		elmLi.appendChild(elmDivCmntFoot);
		
	return elmUl;
}
*/