/**
 * @since 2007.09.13
 * @author okjungsoo
 * 이오공감 페이지를 정의합니다. 
 */
if(typeof(Page) == "undefined")
	Page = {};
	
Event.observe(window, 'load', function() {
	var topDialog = new Modal.RecommendDlg('eofeeling_recommend_top', {
		'zIndex':9901, 
		'top':'23px', 
		'left':'130px', 
		isRecommended:false
	});
    /*
	var bottomDialog = new Modal.RecommendDlg('eofeeling_recommend_bottom', {
		'zIndex':9901, 
		'top':'-248px', 
		'left':'130px', 
		isRecommended:false
	});
	*/
	try{
		var listCount = $('eomain_list').childElements().length;
	}catch(e) {
		var listCount = Page.EoFeeling.EOLIST_COUNT;
	}
	
	for(var i=0; i<listCount; i++) {
		new Modal.ReviewDlg('review_area_' +i);
		new Modal.ReviewList('review_list_' +i);
	}
	var reportDlg = new Modal.ReportDlg('eofeeling_report');
	Page.EoFeeling.isLoaded = true;
});

Page.EoFeeling = {
	isLoaded: false,
	EOLIST_COUNT: 15,
	
	checkReportedPost: function(postIndex, permaLink, postTitle, event) {
		if (postIndex == '' || permaLink == '') {
			return false;
		}else {
			var srcElement = Event.element(event);
			Event.stop(event);			
		}
		
		new Ajax.Request('http://www.egloos.com/exec/eofeeling/check_accuse_exec.php', {
			parameters: { 'pidx' : postIndex, 'permalink' : permaLink },
			onSuccess: function(response){
				var xml = response.responseXML;
				var channel = xml.getElementsByTagName('channel')[0];

				var params = {};
				for(var i=0; i<channel.childNodes.length; i++) {
					var node = channel.childNodes[i];
					var keyName = node.tagName;
					params[keyName] = this._getNodeValue(node, 0);
				}
				
				if(params['result'] == '0') {
					alert(params['message'].replace(/\\n/g,"\n"));
				}else {
					Modal.close();
					var elmPos = Position.cumulativeOffset(srcElement);
					var position = [(elmPos[0]) +"px", (elmPos[1] +15) +"px"];
					
					Modal.open('eofeeling_report', event, {
						'postIndex': params['pidx'], 
						'permaLink': params['permalink'], 
						'postTitle': params['subject'], 
						'left': position[0], 
						'top': position[1]
					});
				}
			}.bind(this),
			onFailure: function() {
				alert('잠시 후 이용해 주세요.');
			}
		});
	},
	
	_getNodeValue: function(node, defaultValue) {
		if(node.childNodes.length > 0) {
			return node.childNodes[0].nodeValue;
		}else {
			return defaultValue;
		}
	},
	
	updateRecommend: function(postIndex, serial, event) {
		if(postIndex == '' || serial == '') {
			return false;
		}
		var srcElement = Event.element(event);
		Event.stop(event);
		
		new Ajax.Request("/exec/eofeeling/get_recommend_exec.php", {
			parameters: $H({
				'pidx': postIndex,
				'serial': serial
			}),
			onSuccess: function(response){
				var params = {};
				var xmlDoc = response.responseXML;
				var node = xmlDoc.getElementsByTagName('recommendation')[0];
				
				var xmlAttr = node.attributes;
				for (var i=0; i<xmlAttr.length; i++) {
					params[xmlAttr[i].nodeName] = xmlAttr[i].nodeValue; 
				}

				var recommend = node.getElementsByTagName('recommend')[0];
				for(var j=0; j<recommend.childNodes.length; j++) {
					var item = recommend.childNodes[j];
					params[item.tagName] = item.childNodes[0].nodeValue;
				}
				var liElm = srcElement.parentNode.parentNode;
				liElm.innerHTML = this.updateTemplate.evaluate({
					'content': params['message'],
					'url': params['bloglink'],
					'nick': params['usernick'],
					'date': params['date'],
					'permalink': params['permalink'],
					'pbindex': params['pidx'],
					'serial': params['serial']
				});
			}.bind(this), 
			onFailure: function() {
			}
		});
	},
	
	updateTemplate: new Template(
		'<div id="update_review">' +
			'<input type="hidden" id="update_content" value="#{content}">' +
			'<input type="hidden" id="update_url" value="#{url}">' +
			'<input type="hidden" id="update_nick" value="#{nick}">' +
			'<input type="hidden" id="update_date" value="#{date}">' +
			'<input type="hidden" id="update_pbindex" value="#{pbindex}">' +
			'<input type="hidden" id="update_permalink" value="#{permalink}">' +
			'<input type="hidden" id="update_serial" value="#{serial}">' +
			'<textarea id="modify_textarea" class="write">#{content}</textarea>' +
			'<span>' +
				'<input type="button" onclick="Page.EoFeeling.updateReview(\'#{pbindex}\', \'#{serial}\');" value="수정하기" class="button btn24 btn_bold" /> ' +
				'<input type="button" onclick="Page.EoFeeling.cancelUpdate();" value="취소" class="button btn24 btn_weak" />' +
			'</span>' +
		'</div>'
	),
	
	updateReview: function(pbIndex, serial) {
		var div = $('update_review');
		if(div) {
			var content = $('modify_textarea').value.stripScripts().stripTags();
			new Ajax.Request("/exec/eofeeling/update_recommend_exec.php", {
				parameters: $H({
					'pidx': pbIndex,
					'serial': serial,
					'recommendation': content
				}),
				onSuccess: function(response){
					var xmlDoc = response.responseXML;
					var result = xmlDoc.getElementsByTagName('result')[0];
					this._updateReviewContent((result.childNodes[0].nodeValue == '1'? content: ''));
				}.bind(this), 
				onFailure: function(){
					alert('추천평을 수정하는데 실패하였습니다. 잠시 후 이용해 주세요.');
					this.cancelUpdate();
				}.bind(this)
			});
		}
	},
	
	cancelUpdate: function() {
		this._updateReviewContent();
	},
	
	_updateReviewContent: function(updatedReview) {
		var div = $('update_review');
		if(div) {
			var content = (updatedReview? updatedReview:$('update_content').value);
			html = Modal.ReviewList.reviewLiTemplate.evaluate({
				'content': content, 
				'url': $('update_url').value,
				'nick': $('update_nick').value, 
				'date': $('update_date').value
			}) + Modal.ReviewList.reviewEditTemplate.evaluate({
				'permaLink': $('update_permalink').value,
				'postIndex': $('update_pbindex').value,
				'serial': $('update_serial').value
			});
			div.parentNode.innerHTML = html;
		}
	},
	
	deleteRecommend: function(permaLink, pbIndex, serial, event) {
		var params = {
			confirmTitle : '삭제하시겠습니까??',
			url : '/exec/eofeeling/delete_recommend_exec.php',
			notifyTitle : '삭제에 실패하였습니다. 잠시 후 삭제해 주세요.'
		};		
		this._handleDeletion(params, {'permaLink': permaLink, 'pidx': pbIndex, 'serial': serial}, event);
	},
	
	deletePost: function(pbIndex, permaLink, event) {
		var params = {
			confirmTitle : '이오공감 2.0 리스트에서 삭제하시겠습니까?',
			url : '/exec/eofeeling/delete_post_exec.php',
			notifyTitle : '포스트 삭제에 실패하였습니다. 잠시 후 삭제해 주세요.'
		};		
		this._handleDeletion(params, {'pidx': pbIndex, 'permalink': permaLink}, event);
	},
	
	_hasBlankArgument: function(params) {
		for(var i=0; i<params.length; i++) {
			if(params[i] == '') { return true; } 
		}
		return false;
	},
	
	_handleDeletion: function(params, reqParams, event) {
		Event.stop(event);
		if(this._hasBlankArgument(arguments)) {
			return;
		}
		
		if(confirm(params['confirmTitle'])) {
			new Ajax.Request(params['url'], {
				parameters: reqParams,
				onSuccess: function(response){
					var xmlDoc = response.responseXML;
					var result = xmlDoc.getElementsByTagName('result')[0];
				
					if(result.childNodes[0].nodeValue == '1') {
						if(Page.refresh) { 
							Page.refresh(); 
						}else {
							location.href = "http://www.egloos.com/";
						}
					}else {
						alert(params['notifyTitle']);
					}
				}.bind(this), 
				onFailure: function(){
					alert(params['notifyTitle']);
				}
			});
		}
	}
};
