/**
 * HASHTAG
 * @class hashtag
 * @author workingby <bumyul2000@godo.co.kr>
 * @version 1.0
 * @date 2016-10-05
 */
var page = 1;
var ajaxHashtagUrl = '../../proc/hashtag/ajax.getHashtagData.php';

var HashtagCoreController = function()
{
	var self = this;
	var hashtagSelector;
	var deleteHashtagSelector;

	this.ajaxHashtagList = function(param)
	{
		//ajax url Àç¼³Á¤ - À¯Àú¸ðµå ÀÏ½Ã
		if(param.ajaxUrl){
			ajaxHashtagUrl = param.ajaxUrl;
		}
		if(param.obj){
			var hashtagInputListSearchObj = param.obj;
			param.obj = null;
		}
		jQuery.post(ajaxHashtagUrl, param, function(res){
			var dataArray = new Array();
			dataArray = res.split("|");

			if(dataArray[0] === 'success'){
				switch(param.mode){
					//°ü¸®¸ðµå > ÇØ½ÃÅÂ±× °ü¸® > ¸®½ºÆ®
					//°ü¸®¸ðµå > ÇØ½ÃÅÂ±× °ü·Ã¼³Á¤ > »ç¿ëÀÚ¼³Á¤ ÆË¾÷
					case 'allList':
						var hashtagData = eval("("+dataArray[1]+")");
						if(hashtagData){
							jQuery.each(hashtagData, function( index, value ) {
								jQuery("#hashtagListBox").append(value);
							});
							page += 1;
						}
					break;

					//°ü¸®¸ðµå > ÇØ½ÃÅÂ±× °ü¸® > ¸®½ºÆ®
					//°ü¸®¸ðµå > ÇØ½ÃÅÂ±× °ü·Ã¼³Á¤ > »ç¿ëÀÚ¼³Á¤ ÆË¾÷
					case 'clickAllList':
						var hashtagData = eval("("+dataArray[1]+")");

						jQuery("#hashtagListBox").empty();
						if(hashtagData){
							jQuery.each(hashtagData, function( index, value ) {
								jQuery("#hashtagListBox").append(value);
							});
						}
					break;

					//°ü¸®¸ðµå > »óÇ°»ó¼¼ > »óÇ° ÇØ½ÃÅÂ±×
					case 'goodsList':
						var hashtagData = eval("("+dataArray[1]+")");

						if(hashtagData){
							jQuery.each(hashtagData, function( index, value ) {
								jQuery("#hashtagListBox").append(value);
							});
						}
					break;

					//input ÇØ½ÃÅÂ±× ¸®½ºÆ® [ÆäÀÌÁö ´ÙÁß »ç¿ë]
					case 'inputList':
						var hashtagData = eval("("+dataArray[1]+")");

						if(hashtagData != '' && hashtagData != null && hashtagData != 'undefined'){
							hashtagInputListSearchObj.autocomplete({
								source: hashtagData
							});
						}
					break;

					//°ü¸®¸ðµå > »óÇ°»ó¼¼ > »óÇ° ÇØ½ÃÅÂ±×
					case 'addLayout':
						var hashtagData = eval("("+dataArray[1]+")");

						jQuery("#hashtagListBox").append(hashtagData);
						jQuery("#hashtag").val('');
					break;

					//°ü¸®¸ðµå > ÇØ½ÃÅÂ±× °ü¸® > Ãß°¡
					case 'addLive':
						var hashtagData = eval("("+dataArray[1]+")");

						jQuery("#hashtagListBox").prepend(hashtagData);
						jQuery("#hashtag").val('');
					break;

					//°ü¸®¸ðµå > ÇØ½ÃÅÂ±× °ü¸® > »èÁ¦
					case 'deleteLive':
						deleteHashtagSelector.remove();

						//ÇØ½ÃÅÂ±× Á¤º¸ ¸®¼Â
						self.resetInfo();
					break;

					//°ü¸®¸ðµå > ºü¸¥ ÇØ½ÃÅÂ±× ¼öÁ¤ > »èÁ¦
					case 'deleteManageLive':
						deleteHashtagSelector.remove();
					break;

					//°ü¸®¸ðµå > ÇØ½ÃÅÂ±× °ü·Ã ¼³Á¤ > »ç¿ëÀÚ ¼³Á¤ ÆË¾÷ ÆäÀÌÁö
					case 'saveDisplay':
						alert("ÀúÀåµÇ¾ú½À´Ï´Ù.");
						window.location.reload();
					break;

					//À¯Àú¸ðµå > »óÇ°»ó¼¼ÆäÀÌÁö > Ãß°¡
					case 'addLiveUser':
						var hashtagData = eval("("+dataArray[1]+")");

						jQuery("#hashtagListBox").append(hashtagData);
						jQuery("#hashtag").val('');
					break;
				}
			}
			else if(dataArray[0] === 'fail'){
				if(param.mode !== 'inputList'){
					alert(dataArray[1]);
				}
			}
			else { }

			return;
		});
	};

	this.moveTag = function(event)
	{
		var keyMove = false;
		var event = event || window.event;
		var keyCode = event.keyCode || event.which;

		switch (keyCode) {
			case 37 : case 38 :
				self.moveUp();
				keyMove = true;
			break;
			case 39 : case 40 :
				self.moveDown();
				keyMove = true;
			break;
		}

		if(keyMove === true){
			if (event.stopPropagation) {
				event.stopPropagation();
			}
			else {
				event.cancelBubble = true;
			}
			return false;
		}
	};

	this.moveUp = function()
	{
		if(hashtagSelector){
			hashtagSelector.insertBefore(hashtagSelector.prev());
			hashtagSelector.focus();
		}
	};

	this.moveDown = function()
	{
		if(hashtagSelector){
			hashtagSelector.insertAfter(hashtagSelector.next());
			hashtagSelector.focus();
		}
	};

	//ÇØ½ÃÅÂ±× ¸í Å¬¸¯½Ã
	this.changeAction = function()
	{
		hashtagSelector = jQuery(this);

		//»ö»óº¯°æ
		self.changeBackground();

		//ÇØ½ÃÅÂ±× Á¤º¸º¯°æ
		self.changeInfo();
	};

	this.changeBlurAction = function()
	{
		if(hashtagSelector){
			hashtagSelector = null;
		}
		jQuery(this).css("background-color", "white");
	}

	this.changeBackground = function()
	{
		hashtagSelector.siblings().css("background-color", "white");
		hashtagSelector.css("background-color", "#e8f5bb");
	};

	//ÇØ½ÃÅÂ±× Á¤º¸ º¯°æ
	this.changeInfo = function()
	{
		if (jQuery("#hashtagWidget_name").length > 0 && jQuery("#hashtagWidgetUrl").length > 0 && jQuery("#hashtagRegistGoodsCount").length > 0){
			var hashtagDataName = hashtagSelector.attr("data-name");
			var hashtagWidgetUrl = jQuery("#cfgRootDir").val() + "/goods/goods_hashtag_list.php?hashtag=" + hashtagDataName;
			jQuery("#hashtagWidget_name").val(hashtagDataName);
			jQuery("#hashtagWidgetUrl").html(hashtagWidgetUrl);
			jQuery("#hashtagRegistGoodsCount").html(hashtagSelector.attr("data-goodsCount"));
		}
	};

	//ÇØ½ÃÅÂ±× Á¤º¸ ¸®¼Â
	this.resetInfo = function()
	{
		jQuery("#hashtagWidgetUrl").html("ÇØ½ÃÅÂ±×¸¦ ¼±ÅÃÇÏ¿© ÁÖ¼¼¿ä.");
		jQuery("#hashtagRegistGoodsCount").html(0);
	}

	this.deleteHashtag = function()
	{
		if(confirm("»èÁ¦ ½Ã »óÇ°¿¡ µî·ÏµÈ ÇØ½ÃÅÂ±×µµ »èÁ¦µË´Ï´Ù.\n°è¼ÓÇÏ½Ã°Ú½À´Ï±î?")){
			deleteHashtagSelector = jQuery(this).closest("div");
			var hashtagName = deleteHashtagSelector.attr('data-name');

			self.ajaxHashtagList({mode:'deleteLive', hashtag:hashtagName});
		}
	};

	//°ü¸® > ºü¸¥ ÇØ½ÃÅÂ±× ¼öÁ¤ > »èÁ¦
	this.deleteManageHashtag = function()
	{
		deleteHashtagSelector = jQuery(this).closest("div");
		var hashtagName = deleteHashtagSelector.attr('data-name');
		var goodsno = deleteHashtagSelector.closest("td").attr('area-data-goodsno');
		var param = {
			mode: 'deleteManageLive',
			hashtag: hashtagName,
			goodsno : goodsno
		};

		self.ajaxHashtagList(param);
	};

	//·¹ÀÌ¾Æ¿ô¸¸ »èÁ¦
	this.deleteHashtagLayout = function()
	{
		jQuery(this).closest("div").remove();
	}

	//ÃÊ°ú length »èÁ¦
	this.cutMaxLength = function(thisObj)
	{
		var maxLength = 20;
		var inputValue = thisObj.val();
		thisObj.val(inputValue.substr(0, maxLength));
	}

	//Æ¯¼ö¹®ÀÚ Ã¼Å©
	this.checkSpecialCharacter = function(thisObj)
	{
		var thisObjValue = thisObj.val();
		var regPattern = /[~!@\#$%<>^&*\()\-=+\¡¯\\\|\/\.\,]/gi;
		if(regPattern.test(thisObjValue)) {
			alert("Æ¯¼ö¹®ÀÚ´Â ÀÔ·Â ÇÒ ¼ö ¾ø½À´Ï´Ù.");
			thisObj.val(thisObjValue.replace(regPattern, ""));
			return false;
		}

		return true;
	}
};

//ÇØ½ÃÅÂ±× °ü¸® ÆäÀÌÁö
var HashtagListController = function()
{
	var self = this;
	var CoreController = new HashtagCoreController();
	var searchTextConfirm = false;
	var pageNum = 150;

	var __construct = function()
	{
		//¼³Á¤Á¤º¸ÀúÀå
		jQuery("#hashtagListConfig-save-btn").click(self.saveListConfigForm);
		//ÇØ½ÃÅÂ±× °Ë»ö input listing
		jQuery(document).on('keyup','.hashtagInputListSearch',function(){
			var inputListParam = {
				mode: 'inputList',
				searchText: jQuery(this).val(),
				obj:jQuery(this)
			};
			CoreController.ajaxHashtagList(inputListParam);
		});
		//ÇØ½ÃÅÂ±× Á¤º¸ º¯°æ
		jQuery("#hashtagListBox").on("click", "div", CoreController.changeAction);
		//ÇØ½ÃÅÂ±× »èÁ¦
		jQuery("#hashtagListBox").on("click", "span", CoreController.deleteHashtag);
		//ÇØ½ÃÅÂ±× ÄÚµå»ý¼º
		jQuery("#hashtagCreateCodeBtn").click(self.popupHashtagCreateCode);
		//ÇØ½ÃÅÂ±× Ãß°¡
		jQuery("#hashtagAddBtn").click(self.addHashtag);
		//input keyup event
		jQuery("#hashtag").keyup(self.keyupEvent);
		//ÇØ½ÃÅÂ±× °Ë»ö
		jQuery("#hashtagSearch").keyup(self.checkVoidSearch);
		jQuery("#hashtagSearchBtn").click(function(){
			self.clickHashtagListBox();
		});
		//ÇØ½ÃÅÂ±× ¸®½ºÆ® ½ºÅ©·Ñ ÆäÀÌÂ¡
		jQuery("#hashtagListBox").scroll(function(){
			self.scrollHashtagListBox();
		});

		//listing
		CoreController.ajaxHashtagList({mode:'allList', page:1, pageNum:pageNum});
		//set add input
		jQuery('.hashtagInputListSearch').trigger("keyup");
	};

	//ÇØ½ÃÅÂ±× »óÇ°¸®½ºÆ® °øÅë ¼³Á¤ ÀúÀå
	this.saveListConfigForm = function()
	{
		jQuery('#mode').val('listConfigSave');
		jQuery('#hashtagListConfigForm').submit();
	};

	//ºó°ªÀÏ¶§ ÀüÃ¼ search
	this.checkVoidSearch = function()
	{
		if(jQuery(this).val() === '' && searchTextConfirm === true){
			self.clickHashtagListBox();
		}
	}

	//°Ë»ö Å¬¸¯ ¸®½ºÆ®
	this.clickHashtagListBox = function()
	{
		searchTextConfirm = true;
		page = 1;
		var param = {
			mode : 'clickAllList',
			page : page,
			searchText : jQuery("#hashtagSearch").val(),
			pageNum : pageNum
		};
		CoreController.ajaxHashtagList(param);
	}

	//ÇØ½ÃÅÂ±× ¸®½ºÆ® ÆäÀÌÂ¡
	this.scrollHashtagListBox = function()
	{
		if(jQuery("#hashtagListBox").outerHeight() + jQuery("#hashtagListBox").scrollTop() >= jQuery("#hashtagListBox").prop("scrollHeight")){
			if(page < 2) page = 2;
			var param = {
				mode : 'allList',
				page : page,
				searchText : jQuery("#hashtagSearch").val(),
				pageNum : pageNum
			};
			CoreController.ajaxHashtagList(param);
		}
	};

	//ÇØ½ÃÅÂ±× Ãß°¡
	this.addHashtag = function()
	{
		var hashtag = jQuery("#hashtag");
		if(!jQuery.trim(hashtag.val())){
			alert("ÇØ½ÃÅÂ±×¸íÀ» ÀÔ·ÂÇØ ÁÖ¼¼¿ä.");
			hashtag.focus();
			return;
		}
		if(hashtag.val().length > 20){
			alert("ÃÖ´ë µî·Ï ±ÛÀÚ¼ö´Â 20±ÛÀÚ ÀÔ´Ï´Ù.");
			CoreController.cutMaxLength(hashtag);
			return;
		}

		CoreController.ajaxHashtagList({ mode: 'addLive', hashtag: hashtag.val() });
	};

	this.keyupEvent = function(event)
	{
		//Æ¯¼ö¹®ÀÚ Ã¼Å©
		var checkCharacter = true;
		checkCharacter = CoreController.checkSpecialCharacter(jQuery(this));
		if(checkCharacter === false){
			return;
		}

		//ÇØ½ÃÅÂ±× Ãß°¡ - enter
		var event = event || window.event;
		var keyCode = event.keyCode || event.which;
		if(keyCode === 13){
			self.addHashtag();
		}
	}

	//ÇØ½ÃÅÂ±× ÄÚµå »ý¼º ÆË¾÷
	this.popupHashtagCreateCode = function()
	{
		if(!jQuery("#hashtagWidget_name").val()){
			alert("ÇØ½ÃÅÂ±×¸¦ ¼±ÅÃÇÏ¿© ÁÖ¼¼¿ä.");
			return;
		}
		if(!jQuery("#hashtagWidget_width").val()){
			alert("°¡·Î °³¼ö¸¦ ÀÔ·ÂÇÏ¿© ÁÖ¼¼¿ä.");
			return;
		}
		if(!jQuery("#hashtagWidget_height").val()){
			alert("¼¼·Î °³¼ö¸¦ ÀÔ·ÂÇÏ¿© ÁÖ¼¼¿ä.");
			return;
		}
		if(!jQuery("#hashtagWidget_iframeWidth").val()){
			alert("IFRAME °¡·Î »çÀÌÁî¸¦ ÀÔ·ÂÇÏ¿© ÁÖ¼¼¿ä.");
			return;
		}
		if(!jQuery("#hashtagWidget_imageWidth").val()){
			alert("ÀÌ¹ÌÁö °¡·Î »çÀÌÁî¸¦ ÀÔ·ÂÇÏ¿© ÁÖ¼¼¿ä.");
			return;
		}

		var parameter = "?hashtag=" + jQuery("#hashtagWidget_name").val() + "&hashtagWidth=" + jQuery("#hashtagWidget_width").val() + "&hashtagHeight=" + jQuery("#hashtagWidget_height").val() + "&hashtagIframeWidth=" + jQuery("#hashtagWidget_iframeWidth").val() + "&hashtagImageWidth=" + jQuery("#hashtagWidget_imageWidth").val();
		window.open('./popup.hashtagCreateCode.php' + parameter,'hashtagCreateCode', 'width=1050px, height=800px, scrollbars=yes');
	}

	__construct();
};

//»óÇ° »ó¼¼ÆäÀÌÁö
var HashtagGoodsViewController = function()
{
	var self = this;
	var CoreController = new HashtagCoreController();

	var __construct = function()
	{
		jQuery("#hashtagListBox").on("click", "div", CoreController.changeAction);
		jQuery("#hashtagListBox").on("blur", "div", CoreController.changeBlurAction);
		//ÇØ½ÃÅÂ±× »èÁ¦
		jQuery("#hashtagListBox").on("click", "span", self.deleteHashtagLayout);
		//ÇØ½ÃÅÂ±× Ãß°¡
		jQuery("#hashtagAddBtn").click(self.addHashtag);
		//input keyup event
		jQuery("#hashtag").keyup(self.keyupEvent);
		//set add input
		jQuery("#hashtag").trigger("keyup");
		//goods hashtag lisging
		var goodsno = jQuery("#goods-form input[name='goodsno']").val();
		if(goodsno > 0){
			CoreController.ajaxHashtagList({mode:'goodsList', goodsno: goodsno});
		}
		//¼ø¼­º¯°æ
		jQuery("#hashtagListBox").on("keydown", CoreController.moveTag);
	};

	this.keyupEvent = function()
	{
		//Æ¯¼ö¹®ÀÚ Ã¼Å©
		var checkCharacter = true;
		checkCharacter = CoreController.checkSpecialCharacter(jQuery(this));
		if(checkCharacter === false){
			return;
		}

		//ÇØ½ÃÅÂ±× Ãß°¡ input listing
		var inputListParam = {
			mode: 'inputList',
			searchText: jQuery("#hashtag").val(),
			obj: jQuery("#hashtag")
		};
		CoreController.ajaxHashtagList(inputListParam);
	}

	this.addHashtag = function()
	{
		var hashtag = jQuery("#hashtag");
		if(!jQuery.trim(hashtag.val())){
			alert("ÇØ½ÃÅÂ±×¸íÀ» ÀÔ·ÂÇØ ÁÖ¼¼¿ä.");
			hashtag.focus();
			return;
		}
		if(hashtag.val().length > 20){
			alert("ÃÖ´ë µî·Ï ±ÛÀÚ¼ö´Â 20±ÛÀÚ ÀÔ´Ï´Ù.");
			CoreController.cutMaxLength(hashtag);
			return;
		}
		var hashtaglistBoxDiv = jQuery("#hashtagListBox div");
		if(hashtaglistBoxDiv.length >= 10){
			alert("ÃÖ´ë µî·Ï °³¼ö´Â 10°³ ÀÔ´Ï´Ù.");
			return;
		}
		var hashtagReplaceValue = jQuery.trim(hashtag.val()).replace(/ /g, '_');
		var duplicateHashtag = false;
		hashtaglistBoxDiv.each(function(){
			if(hashtagReplaceValue === jQuery.trim(jQuery(this).attr('data-name'))){
				duplicateHashtag = true;
				return false;
			}
		});
		if(duplicateHashtag === true){
			alert("µ¿ÀÏÇÑ ÇØ½ÃÅÂ±×°¡ Á¸ÀçÇÕ´Ï´Ù.");
			return;
		}

		CoreController.ajaxHashtagList({mode:'addLayout', hashtag:hashtag.val()});
	};

	//»èÁ¦
	this.deleteHashtagLayout = function()
	{
		var deleteObj = jQuery(this).closest("div");
		if(deleteObj.find("input[name='hashtagNo[]']").val() !== ''){
			var inputParam = {
				type:"hidden",
				name:"hashtagDelName[]",
				value:deleteObj.attr('data-name')
			};
			jQuery("<input></input>").attr(inputParam).appendTo(jQuery("#hashtagListBox"));
		}
		deleteObj.remove();
	}

	__construct();
};

//ÆË¾÷ ÇØ½ÃÅÂ±× À§Á¬¸®½ºÆ® (ÄÚµå»ý¼º ¹Ì¸®º¸±â) ÆäÀÌÁö
var HashtagPopupCreateCodeController = function()
{
	var self = this;
	var CoreController = new HashtagCoreController();

	var __construct = function()
	{
		//¼Ò½ºº¹»ç
		jQuery("#sourceCopy").click(self.copySource);
		//Ã¢´Ý±â
		jQuery("#popupClose").click(function(){
			window.close();
		});

		//¸µÅ© »èÁ¦
		jQuery(window).load(self.deleteHashtagWidgetListGoodsLink);
	};

	//¼Ò½ºº¹»ç
	this.copySource = function()
	{
		var clipData = jQuery('#hashtag_previewSourceArea').text();
		if(window.clipboardData){
			alert("º¹»çµÇ¾ú½À´Ï´Ù.\n¼îÇÎ¸ô³» »óÇ°¸®½ºÆ®¸¦ ³ëÃâ½ÃÅ³ À§Ä¡¿¡ ¼Ò½º¸¦ ºÙ¿©³Ö¾î ÁÖ¼¼¿ä.");
			window.clipboardData.setData("Text", clipData);
		}
		else {
			prompt("ÄÚµå¸¦ Å¬¸³º¸µå·Î º¹»ç(Ctrl+C) ÇÏ½Ã°í.\n¼îÇÎ¸ô³» »óÇ°¸®½ºÆ®¸¦ ³ëÃâ½ÃÅ³ À§Ä¡¿¡ ¼Ò½º¸¦ ºÙ¿©³Ö¾î ÁÖ¼¼¿ä.", clipData);
		}
		return;
	}

	//¸µÅ© »èÁ¦
	this.deleteHashtagWidgetListGoodsLink = function()
	{
		jQuery("#hashtag_previewLayout iframe").contents().find('a').removeAttr("onclick");
		jQuery("#hashtag_previewLayout iframe").contents().find('.hashtagSelector').removeAttr("onclick");
	}

	__construct();
};

//ÇØ½ÃÅÂ±× °ü·Ã ¼³Á¤ ÆäÀÌÁö
var HashtagConfigController = function()
{
	var self = this;
	var CoreController = new HashtagCoreController();

	var __construct = function()
	{
		//¼³Á¤ ÀúÀå
		jQuery("#hashtagConfig_submitImg").click(self.saveConfig);
		//ÇØ½ÃÅÂ±× ¸¶ÀÌ±×·¹ÀÌ¼Ç
		jQuery("#hashtagMigragionBtn").click(self.migrationHashtag);
		jQuery(".hashtagDisplayPopupBtn").click(self.openDisplayPopup);
	};

	//¼³Á¤ ÀúÀå
	this.saveConfig = function()
	{
		jQuery('#mode').val('configSave');
		jQuery('#hashtagConfigForm').submit();
	}

	//ÇØ½ÃÅÂ±× ¸¶ÀÌ±×·¹ÀÌ¼Ç
	this.migrationHashtag = function()
	{
		var migrationParam = jQuery.param(jQuery("input[type='checkbox']:checked"));
		if(!migrationParam){
			alert("»ý¼ºÇÒ Å¸ÀÔÀ» ¼±ÅÃÇÏ¿© ÁÖ¼¼¿ä.");
			return;
		}

		var param = {
			mode: 'migrationHashtag',
			checkboxParam: migrationParam
		};
		self.showProgressBar();
		jQuery.post(ajaxHashtagUrl, param, function(res){
			var dataArray = new Array();
			dataArray = res.split("|");

			if(dataArray[0] === 'success'){
				var migrationGoodsCount = eval("("+dataArray[1]+")");
				alert("ÃÑ " + comma(migrationGoodsCount) + "°³ÀÇ »óÇ°¿¡ ÇØ½ÃÅÂ±×°¡ ¼³Á¤µÇ¾ú½À´Ï´Ù." );
				document.location.reload();
			}
			else if(dataArray[0] === 'fail'){
				alert("ÇØ½ÃÅÂ±× »ý¼ºÀ» ½ÇÆÐÇÏ¿´½À´Ï´Ù.\n°í°´¼¾ÅÍ¿¡ ¹®ÀÇÇÏ¿© ÁÖ¼¼¿ä.");
			}
			else { }

			return;
		})
		.always(function(){
			self.hiddenProgressBar();
		})
		.fail(function(){
			alert("ÇØ½ÃÅÂ±× »ý¼ºÀ» ½ÇÆÐÇÏ¿´½À´Ï´Ù.\n°í°´¼¾ÅÍ¿¡ ¹®ÀÇÇÏ¿© ÁÖ¼¼¿ä.");
			self.hiddenProgressBar();
		});
	}

	//ÇÁ·Î±×·¹½º¹Ù ³ëÃâ
	this.showProgressBar = function()
	{
		var progressImgMarginTop = Math.round((jQuery(window).height() - 116) / 2);
		jQuery("body").append('<div id="hashtagPrograssbar" style="position:absolute;top:0;left:0;background:#44515b;filter:alpha(opacity=80);opacity:0.8;width:100%;height:'+jQuery('body').height()+'px;cursor:progress;z-index:100000;margin:0 auto;text-align: center;"><img src="../img/admin_progress.gif" border="0" style="margin-top:'+progressImgMarginTop+'px;"/></div>');
	}

	//ÇÁ·Î±×·¹½º¹Ù °¨Ãã
	this.hiddenProgressBar = function()
	{
		jQuery("#hashtagPrograssbar").remove();
	}

	//¼³Á¤ ÆË¾÷ ¿ÀÇÂ
	this.openDisplayPopup = function()
	{
		var hashtagDisplayPopup = window.open('./popup.hashtagDisplay.php', 'hashtagDisplayPopup', 'width=1000px,height=800px,scrollbars=no,resizeable=no');
		if(hashtagDisplayPopup){
			hashtagDisplayPopup.focus();
		}
	}

	__construct();
};

//ÇØ½ÃÅÂ±× »ç¿ëÀÚ¼³Á¤ µð½ºÇÃ·¹ÀÌ ÆË¾÷ ÆäÀÌÁö
var HashtagPopupDisplayController = function()
{
	var self = this;
	var CoreController = new HashtagCoreController();
	var addHashtagSelector;
	var searchTextConfirm = false;
	var pageNum = 250;

	var __construct = function()
	{
		//ÀüÃ¼¸®½ºÆ® ÇØ½ÃÅÂ±× Å¬¸¯½Ã
		jQuery("#hashtagListBox").on("click", "div", self.focusAllListDiv);
		//³ëÃâµÇ´Â ÇØ½ÃÅÂ±× ¸®½ºÆ® Å¬¸¯½Ã
		jQuery("#hashtagDisplayListBox").on("click", "div", CoreController.changeAction);
		//ÇØ½ÃÅÂ±× »èÁ¦
		jQuery("#hashtagDisplayListBox").on("click", "span", self.deleteHashtagLayout);

		jQuery("#hashtagSearch").keyup(function(){
			//ºó°ªÀÏ¶§ ÀüÃ¼ search
			if(jQuery(this).val() === '' && searchTextConfirm === true){
				self.clickHashtagListBox();
			}
			//ÇØ½ÃÅÂ±× input listing
			var inputListParam = {
				mode: 'inputList',
				searchText: jQuery("#hashtagSearch").val(),
				obj: jQuery("#hashtagSearch")
			};
			CoreController.ajaxHashtagList(inputListParam);
		});
		//ÇØ½ÃÅÂ±× ÀüÃ¼¸®½ºÆ® °Ë»ö
		jQuery("#hashtagSearchBtn").click(function(){
			self.clickHashtagListBox();
		});
		//ÇØ½ÃÅÂ±× ÀüÃ¼¸®½ºÆ® ½ºÅ©·Ñ ÆäÀÌÂ¡
		jQuery("#hashtagListBox").scroll(function(){
			self.scrollHashtagListBox();
		});
		//Ãß°¡
		jQuery("#addHashtagBtn").click(self.addHashtagDisplay);
		//ÀúÀå
		jQuery("#saveHashtagDisplayBtn").click(self.saveHashtagDisplayList);
		//´Ý±â
		jQuery("#closeHashtagDisplayBtn").click(self.closeHashtagDisplayPopup);

		//ÇØ½ÃÅÂ±× ÀüÃ¼¸®½ºÆ® °Ë»ö INPUT
		jQuery("#hashtagSearch").trigger("keyup");

		//ÀüÃ¼ ÇØ½ÃÅÂ±× ¸®½ºÆ® listing
		CoreController.ajaxHashtagList({mode:'allList', page:1, pageNum:pageNum});

		//¼ø¼­º¯°æ
		jQuery(window).on("keydown", CoreController.moveTag);
	};

	//°Ë»ö Å¬¸¯ ¸®½ºÆ®
	this.clickHashtagListBox = function()
	{
		searchTextConfirm = true;
		page = 1;
		var param = {
			mode : 'clickAllList',
			page : page,
			searchText : jQuery("#hashtagSearch").val(),
			pageNum : pageNum
		}
		CoreController.ajaxHashtagList(param);
	}

	//ÇØ½ÃÅÂ±× ÀüÃ¼ ¸®½ºÆ® ÆäÀÌÂ¡
	this.scrollHashtagListBox = function()
	{
		if(jQuery("#hashtagListBox").outerHeight() + jQuery("#hashtagListBox").scrollTop() >= jQuery("#hashtagListBox").prop("scrollHeight")){
			if(page < 2) page = 2;
			var param = {
				mode : 'allList',
				page : page,
				searchText : jQuery("#hashtagSearch").val(),
				pageNum : pageNum
			}
			CoreController.ajaxHashtagList(param);
		}
	};

	//ÀüÃ¼ ÇØ½ÃÅÂ±× ¸®½ºÆ® Å¬¸¯½Ã ¾×¼Ç
	this.focusAllListDiv = function()
	{
		var thisObj = jQuery(this);

		thisObj.css('background-color', '');
		thisObj.toggleClass("hashtagLayout-focusDiv");
	}

	//Ãß°¡
	this.addHashtagDisplay = function()
	{
		//¼±ÅÃµÈ ÇØ½ÃÅÂ±×
		var selectObj = jQuery(".hashtagLayout-focusDiv");
		if(selectObj.length < 1){
			alert("Ãß°¡ÇÒ ÇØ½ÃÅÂ±×¸¦ ¼±ÅÃÇÏ¿© ÁÖ¼¼¿ä.");
			return;
		}

		alert("Áßº¹µÈ ÇØ½ÃÅÂ±×´Â Á¦¿ÜÇÏ°í Ãß°¡µË´Ï´Ù.");

		selectObj.each(function(){
			var duplicateHashtag = false; //Áßº¹¿©ºÎ
			var cloneHashtag = jQuery(this).clone(); //º¹Á¦
			jQuery("#hashtagDisplayListBox div").each(function(){
				if(jQuery(this).attr('data-name') === cloneHashtag.attr('data-name')){
					duplicateHashtag = true;
					return false;
				}
			});

			jQuery(this).removeClass("hashtagLayout-focusDiv");
			if(duplicateHashtag === false){
				cloneHashtag.css("background-color", "white");
				jQuery("#hashtagDisplayListBox").append(cloneHashtag);
			}
		});
	}

	//ÀúÀå
	this.saveHashtagDisplayList = function()
	{
		var param = {
			mode : 'saveDisplay',
			hashtagNo : jQuery.param(jQuery("#hashtagDisplayForm input[name='hashtagNo[]']"))
		};
		CoreController.ajaxHashtagList(param);
	}

	//»èÁ¦
	this.deleteHashtagLayout = function()
	{
		jQuery(this).closest("div").remove();
	}

	//´Ý±â
	this.closeHashtagDisplayPopup = function()
	{
		window.close();
	}

	__construct();
};

//À¯Àú¸ðµå > »óÇ°»ó¼¼ÆäÀÌÁö
var HashtagUserViewController = function(mobile)
{
	var self = this;
	var CoreController = new HashtagCoreController();

	var __construct = function()
	{
		//Ãß°¡
		jQuery('#hashtagAddBtn').click(self.saveHashtagLiveUser);
		//input keyup event
		jQuery("#hashtag").keyup(function(){
			var checkCharacter = true;
			checkCharacter = self.keyupEvent();
			if(checkCharacter === false){
				return;
			}

			if(mobile === true){
				var ajaxUrl = jQuery("#cfgRootDir").attr('rootDir') + '/proc/hashtag/ajax.getHashtagData.php';
			}
			else {
				var ajaxUrl = '../proc/hashtag/ajax.getHashtagData.php';
			}
			var inputListParam = {
				mode:'inputList',
				searchText: jQuery("#hashtag").val(),
				ajaxUrl: ajaxUrl,
				obj: jQuery("#hashtag"),
			};
			CoreController.ajaxHashtagList(inputListParam);
		});
		jQuery("#hashtag").trigger("keyup");
	};

	this.keyupEvent = function()
	{
		//Æ¯¼ö¹®ÀÚ Ã¼Å©
		var checkCharacter = true;
		checkCharacter = CoreController.checkSpecialCharacter(jQuery("#hashtag"));

		return checkCharacter;
	}

	//Ãß°¡
	this.saveHashtagLiveUser = function()
	{
		var hashtag = jQuery("#hashtag");
		var hashtaglistBoxDiv = jQuery("#hashtagListBox div");
		var hashtagValue = jQuery.trim(hashtag.val()).replace(/ /g, '_');

		if(!hashtagValue){
			alert("ÇØ½ÃÅÂ±×¸íÀ» ÀÔ·ÂÇØ ÁÖ¼¼¿ä.");
			hashtag.focus();
			return;
		}
		if(hashtagValue.length > 20){
			alert("ÃÖ´ë µî·Ï ±ÛÀÚ¼ö´Â 20±ÛÀÚ ÀÔ´Ï´Ù.");
			CoreController.cutMaxLength(hashtag);
			return;
		}
		if(hashtaglistBoxDiv.length >= 10){
			alert("ÃÖ´ë µî·Ï °³¼ö´Â 10°³ ÀÔ´Ï´Ù.");
			return;
		}
		var duplicateHashtag = false;
		hashtaglistBoxDiv.each(function(){
			if(hashtagValue === jQuery.trim(jQuery(this).attr('data-name'))){
				duplicateHashtag = true;
				return false;
			}
		});
		if(duplicateHashtag === true){
			alert("µ¿ÀÏÇÑ ÇØ½ÃÅÂ±×°¡ Á¸ÀçÇÕ´Ï´Ù.");
			return;
		}

		var mobilePath = '';
		if(mobile === true){
			var mobileRootDir = new Array();
			var showPath = document.location.pathname;
			if (showPath.charAt(0) == '/')	{
				showPath = showPath.substring(1);
			}
			mobileRootDir = showPath.split("/");
			mobilePath = '/' + mobileRootDir[0] + '/';
		}

		var param = {
			mode : 'addLiveUser',
			hashtag : hashtagValue,
			goodsno : jQuery("input[name='goodsno']").val(),
			mobilePath : mobilePath
		};
		CoreController.ajaxHashtagList(param);
	};

	__construct();
};

//°ü¸®¸ðµå > »óÇ°°ü¸® > ºü¸¥ ÇØ½ÃÅÂ±× ¼öÁ¤ ÆäÀÌÁö
var HashtagManageListController = function()
{
	var self = this;
	var CoreController = new HashtagCoreController();

	var __construct = function()
	{
		//ÇØ½ÃÅÂ±× »èÁ¦
		jQuery("#admin-list-table").on("click", "span", CoreController.deleteManageHashtag);

		jQuery(document).on('keyup','.hashtagInputListSearch',function(){
			var inputListParam = {
				mode:'inputList',
				searchText: jQuery(this).val(),
				obj: jQuery(this),
			};
			CoreController.ajaxHashtagList(inputListParam);
		});

		jQuery('.hashtagInputListSearch').trigger("keyup");
	};

	__construct();
};

//ÇØ½ÃÅÂ±× input list setting
//°ü¸®¸ðµå > »óÇ°°ü¸® > »óÇ°°ü¸® ¸®½ºÆ® ÆäÀÌÁö
//°ü¸®¸ðµå > »óÇ°¼±ÅÃ ÆË¾÷
var HashtagInputListController = function()
{
	var self = this;
	var CoreController = new HashtagCoreController();

	var __construct = function()
	{
		jQuery(document).on('keyup','.hashtagInputListSearch',function(){
			var inputListParam = {
				mode:'inputList',
				searchText: jQuery(this).val(),
				obj: jQuery(this),
			};
			CoreController.ajaxHashtagList(inputListParam);
		});

		jQuery('.hashtagInputListSearch').trigger("keyup");
	};

	__construct();
};