/**
 * Copyright 2008 SK Communications. All rights reserved.
 * @author umkki
 * @since 2008.02.27
 * 희로애락 추천하기 팝업
 */

if (typeof(Modal) == "undefined") {
	//alert("You must first include Modal.js");
}

Object.extend(Modal, {
	setFocus: function(element) {
		if (Modal.current && Modal.current.setFocus) {
			Modal.current.setFocus(element);
		}
	},
	
	recommend: function() {
		if (Modal.current && Modal.current.recommend) {
			Modal.current.recommend();
		}
	}
});

Modal.EmotionRecommendDlg = Class.create();
Object.extend(Modal.EmotionRecommendDlg.prototype, {
	isLoaded: false,
	isFocus: false,
	beforeColor: '#AAAAAA',
	focusedColor: '#333333',
	TAG_NOTICE: "",
	WRITE_NOTICE: "위 태그에 대한 간단한 설명이나 추천하는 이유가 있으면 입력해 주세요. (100자 이하)",
	ERROR_NOTICE: "일시적인 장애입니다. 잠시 후 다시 이용해주세요.",
	
	initialize: function(_dialogID, _options) {
		this.dialogID = _dialogID;
		this.dialog = $(this.dialogID);
		this.options = _options;
		
		var textareas = this.dialog.getElementsByTagName('textarea');
		for (var i=0; i<textareas.length; i++) {
			var textarea = textareas[i];
			switch(textarea.className) {
				case 'tag':
					this.tag = textarea;
					break;
				case 'write':
					this.write = textarea;
					break;
			}
		}
		this.select = this.dialog.getElementsByTagName('select')[0];
		this.warning = this.dialog.getElementsByClassName('warning')[0];
		
		this.isLoaded = Modal.addDialog(this);
	},
	
	open: function(_params) {
		var topPosition = this.options.top;
		var leftPosition = this.options.left;
		
		this.dialog.setStyle({ zIndex: this.options.zIndex, top: topPosition, left: leftPosition });
		this.dialog.show();
		this.initForm();
	},
	
	close: function() {
		this.dialog.hide();
	},
	
	initForm: function() {
		this.warning.innerHTML = "";
		this.tag.value = this.TAG_NOTICE;
		this.write.value = this.WRITE_NOTICE;
		this.write.style.color = this.beforeColor;
		this.select.selectedIndex = 0;
		this.isFocused = false;
	},
	
	setFocus: function(element) {
		if(!this.isLoaded) { return;}
		if(!this.isFocused) {
			element.value = '';
			element.style.color = this.focusedColor;
			this.isFocused = true;
		}
	},
	
	recommend: function() {
		var tag = this.tag.value;
		var write = this.write.value;
		var emotion = this.select.value;
		if (this.validateForm(tag, write)) {
			new Ajax.Request('/exec/emotion/tag_recommend_exec.php', {
				parameters: {
					'emotion'	: emotion,
					'tag'		: tag,
					'message'	: write
				},
				onSuccess: function(transport) {
					var text = transport.responseText;
					if (text.isJSON()) {
						var result = text.evalJSON();
						if (result.result == '0') {
							this.warning.innerHTML = this.ERROR_NOTICE;
						}
						else {
							this.close();
						}
					}
					else {
						this.warning.innerHTML = this.ERROR_NOTICE;
					}
					
				}.bind(this),
				onFailure: function() {
					this.warning.innerHTML = this.ERROR_NOTICE;				
				}.bind(this)
			});
		}
	},
	
	validateForm: function(tag, write) {
		if (tag.length <= 0) { 
			this.warning.innerHTML = "태그를 입력해 주세요.";
			return false;
		}
		else if (tag.length > 20) {
			this.warning.innerHTML = "태그를 20자 이하로 입력해 주세요.";
			return false;
		}
		if (this.isFocused == false || write.length <= 0) {
			this.warning.innerHTML = "추천 사유를 입력해 주세요.";
			return false;
		}
		else if (write.length >= 100) {
			this.warning.innerHTML = "추천 사유를 100자 미만으로 입력해 주세요.";
			return false;
		}
		return true;
	}
});
