/* Mys.LogCtrl - 로그 컨트롤러. 모든 로그에 관한 동작을 제어. by J.K */
Mys.LogCtrl = function(config)
{
/*	if(!EXT_SESSION.myLogo){
		EXT_SESSION.myLogo = '/images/icon/defaultImage.gif';
	}*/
	Ext.apply(this, config);

	this.initialize();
}

// Event 사용을 위해 Ext.util.Observable을 상속.
Ext.extend(Mys.LogCtrl, Ext.util.Observable,
{
	itemClassId : 1,
	pageType : "my",
	property : "date",

	gradeListHtml : '<ul class="gradeList">' +
								/*'<li class="border"><em>공개 설정</em></li>'+*/
								'<li><a href="#" class="public" onclick="return false">전체공개</a></li>' +
								'<li><a href="#" class="group" onclick="return false">채널공개</a></li>' +
								'<li><a href="#" class="friend" onclick="return false">친구공개</a></li>' +
								'<li><a href="#" class="private" onclick="return false">비공개</a></li>' +
							'</ul>',

	titleTemplate : new Ext.Template('<form onsubmit="return false" class="titleForm">' +
											'<input type="text" name="title" value="{title}"/><label for="title">오늘 로그 제목</label>' +
											'<ul>' +
												'<li><a href="#" onclick="return false" class="saveBtn">저장</a></li>' +
												'<li><a href="#" onclick="return false" class="cancelBtn">취소</a></li>' +
											'</ul>' +
										'</form>'),

	/* 초기화 함수. */
	initialize : function(){
		this.containerEl = Ext.get("logBox");

		// item Set
		this.itemSet();

		// category set
		//this.categorySet();

		// 오늘 로그 제목 set
		this.titleSet("daily");

		this.openReply();

		// 구독하기
		var subscribeBtn = Ext.get("subscribeBtn");
		if(subscribeBtn)
			subscribeBtn.on("click", this.subscribe, this);

		//링크를 통해 들어왔을 때 아이템 highlight
		//this.highlightItem();

	  	if(GROUP_FLAG && GROUP_MEMBER_FLAG)
      		this.setGroupFunc();

      this.addEvents({'modify' : true});

      var writeCtrl = new Mys.LogWriteCtrl({logCtrl : this, mode : this.mode, containerName : "logBox", useModify : true});

      writeCtrl.on("write", this.applyItems, this);
	}

	,openReply : function(){
		if(typeof(document.location.hash) == "undefined" || document.location.hash == "#")
			return;
	}

	,highlightItem : function(){
		if(!document.location.hash || document.location.hash == "#")
			return;

		var hash = document.location.hash.replace("#", "");

		Ext.get(hash).parent('.item').highlight("#000", {attr: "border-color", duration : 2});
	}

	/* 아이템 세팅 */
	,itemSet : function(){
		this.items = new Ext.util.MixedCollection(false, function(item){return item.data.item_id});

		if(!this.data.item)
			return;

		var item;
		var itemsEl = this.containerEl.select('.item', true).elements;

		// item에 기능 추가
		for(var i = 0; i < this.data.item.length; i++){
			item = this.getLogItem({data:this.data.item[i], el:itemsEl[i], ctrl:this});

			if(this.openItemId == this.data.item[i].item_id)
			{
				item.data.replyOn = true;
				item.data.openReplyItemId = this.openReplyItemId;
			}

			item.set(true);
			item.on("modify", this.onClickModify, this);

			/*if(item.data.view_type == 1){
			this.setHiddenHeight(item.el);
			}*/
			this.items.add(item);
		}

		delete this.data;
	}

	,getLogItem : function(obj)
	{
	  return new Mys.LogItem(obj);
	}

	,setHiddenHeight : function(itemEl, modifyFlag, removeHidden){
		var contentEl = itemEl.child("p.itemMemo");
		var foldBtnEl = itemEl.child("p.foldBtn");

		if(removeHidden){
			foldBtnEl.setStyle("display", "none")
			contentEl.removeClass("hidden");
			contentEl.addClass("auto");
			return;
		}

		var modifyExtraHeight = 0;

		if(modifyFlag){
			modifyExtraHeight = -5;
		}

		var minHeight = 198;

		contentEl.removeClass("hidden");
		var itemHeight= itemEl.getHeight();
		var addClassName, removeClassName, showFlag;

		if(itemHeight < minHeight){
			addClassName = "auto";
			removeClassName = "hidden";
			showFlag = false;
		}
		else if(itemHeight == minHeight){
			addClassName = "hidden";
			removeClassName = "auto";
			showFlag = false;
		}
		else{
			addClassName = "hidden";
			removeClassName = "auto";
			showFlag = true;
		}

		contentEl.addClass(addClassName);
		if(contentEl.hasClass(removeClassName)){contentEl.removeClass(removeClassName)}

		showFlag?foldBtnEl.setStyle("display", "block"):foldBtnEl.setStyle("display", "none");
	}

	/* 제목 추가, 수정 세팅 */
	,titleSet : function(type){
		if(PAGE_USER_ID != EXT_SESSION.getID() && !GROUP_MEMBER_FLAG)
			return;


		var titleEl = Ext.get(type+"Title");

		titleEl.on("click", this.onClickTitle, this, {el:titleEl, type:type});
	}

	,onClickTitle : function(evt, t, obj){
		var title;
		var titleEl = obj.el;
		var type = obj.type;
		titleEl.setStyle("display", "none");

		if(type == "daily")
			title = this.titleData.title?titleEl.dom.innerHTML:"";
		else
			title = titleEl.dom.innerHTML;

		var data = {title : title};

		var titleFormEl = titleEl.insertHtml("afterEnd", this.titleTemplate.apply(data), true);
		titleFormEl.addKeyListener(Ext.EventObject.ESC, this.hideTitleForm);

		titleFormEl.on("submit", this.onClickTitleSave, this, {formEl:titleFormEl, type:type, titleEl:titleEl});
		titleFormEl.child(".cancelBtn").on("click", this.hideTitleForm);
		titleFormEl.child(".saveBtn").on("click", this.onClickTitleSave, this, {formEl:titleFormEl, type:type, titleEl:titleEl});

		titleFormEl.fadeIn({useDisplay:true});

		(function(){this.focus()}).createDelegate(titleFormEl.dom.title).defer(350, this);
	}

	,onClickTitleSave : function(evt, t, obj){
		var titleFormEl = obj.formEl;
		var type = obj.type;
		var title = titleFormEl.dom.title.value;

		if(!title){alert("제목을 입력해주세요"); titleFormEl.dom.title.focus(); return}

		if(type == "daily")
			Global.modelMinilog.add_daily_title(PAGE_USER_ID, START_DATE, title.encodeSP(),  this.titleData?this.titleData.daily_title_id:null, this.cbOnClickTitleSave, this, obj);
	}

	,cbOnClickTitleSave : function(data, obj){

		if(!data && data.reponse.code != 100){alert(data.response.message); return}
		var formEl = obj.formEl;
		var titleEl = obj.titleEl;
		this.titleData = data.response.item;
		titleEl.dom.innerHTML = this.titleData.title;
		this.hideTitleForm(null, null, obj);
	}

	,hideTitleForm : function(evt, t, obj){
		var targetEl;

		if(!obj)obj = {};

		targetEl = "formEl" in obj?obj.formEl:Ext.get(t.target.parentNode) || Ext.get(t).parent("form");
		titleEl = "titleEl" in obj?obj.titleEl:targetEl.prev("a");

		titleEl.fadeIn({useDisplay:true});
		targetEl.remove();
	}

	,onClickModify : function(item){
			this.fireEvent("modify", item);
	}

	/* 카테고리 데이터 세팅 */
	,categorySet : function(){
		//this.cateItems = Global.cateItems;
		//this.cateItems = new Ext.util.MixedCollection(false, function(item){return item.category_id});

		//this.cateItems.addAll(CATE_DATA);
	}

	/* 서버에 upload 되어있는 파일을 삭제. */
	,removeUploadedFiles : function(item){
	  var fileNumbers = this.getFileNumbers(item.data.memo);
	  if(fileNumbers.length)
		{
			this.deleteItem = item;
		    Global.FileServer.deleteFileWithFileNo(fileNumbers, this.cbDeleteUploadedFiles, this);
		}
		else
			this.removeItem(item);
	}
	,cbDeleteUploadedFiles : function(){
		this.removeItem(this.deleteItem);

		delete this.deleteItem;
	}

	// 로그 아이템 삭제
	,removeItem : function(item){
		var r = this.getUpdateDate_StartItemID(item.data.item_id);
		
		Global.modelLogItem.remove(GROUP_FLAG?PAGE_USER_ID:EXT_SESSION.getID(), item.data.item_id, r.updateDate, r.startItemID, this.itemClassId, null, this.pageType, this.cbRemoveItem, this);
	}

	// 아이템 삭제 Callback
	,cbRemoveItem : function(data){
		if(!data || data.response.code != 100){alert(data.response.message); return;}

		var logItems = Mys.getSafeArray(data.response.item);

		this.applyItems(logItems, null, "ACTION_REMOVE");
	}

	// 아이템 삭제, 수정 시 아이템 정보를 다시 가져옴.
	,refresh : function(){

		// loading 이미지 추가 할 것
		this.load();
	}

	,load : function(){
		Global.modelLogItem.get(this.property, PAGE_USER_ID, START_DATE, START_DATE, null, null, this.itemClassId, null, this.pageType, null, null, this.cbLoad, this);
	}

	,cbLoad : function (data)
	{
		if (!data || data.response.code != 100){alert(data.response.message); return;}

		var data = Mys.getSafeArray(data.response.item);

		this.dataToItem(data);
	//	this.applyItems(this.items);
	}

	,modifyItem : function(data){
		var item = this.items.key(data.item_id);
		var removeHidden = false;
		if(!item){window.status = '내부오류 347'; return;}

		if((data.memo && data.memo != item.data.memo) || (data.view_type != item.data.view_type)){
			item.setMemo(data.memo, data.view_type, data.anc_item_id?true:false);

			if(!item.data.view_type)
				removeHidden = true;

			/*if(!data.anc_item_id)
				this.setHiddenHeight(item.el, true, removeHidden);*/
		}

		if(!data.anc_item_id && data.ref_count != item.data.ref_count){
			item.setReplyCount(data.ref_count);
		}
		if(data.agree_count != item.data.agree_count){
			item.setAgreeCount(data.agree_count);
		}
		if(data.grade != item.data.grade){
			item.setGrade(data.grade);
		}
		if(data.category_id != item.data.category_id){
			item.setCategory(data.category_id);
		}

		if(data.rss_publish != item.data.rss_publish){
			item.setRss(data.rss_publish);
		}

		if(data.publish != item.data.publish){
			item.setPublish(data.publish);
		}

		if(item.el.child(".newMark"))
		  data.read_flag ? item.el.child(".newMark").addClass("none") : item.el.child(".newMark").removeClass("none");
	}

	// 받아온 데이터를 Item 데이터로.
	,applyItems : function(logItems, contents, action){
		if(!logItems || logItems.length < 1) {return};

		var item, data;

		for(var i = 0; i < logItems.length; i++)
		{
			data = logItems[i];

			item = this.items.key(data.item_id);

			if(item && data.delete_date){ // 삭제
				item.el.slideOut("t", {remove:true, duration:0.3});

				this.items.removeKey(item.data.item_id);

				if(!this.items.length)
					(function(){this.containerEl.insertHtml("beforeEnd", "<p id='emptyContents' class='empty'>글이 없습니다</p>", true)}).defer(300, this);

			}
			else if(item) // 수정
			{
				this.modifyItem(data);
			}
			else // 생성
			{
				if(data.delete_date)
					continue;

				if(!this.items.length){
					var emptyEl = Ext.get("emptyContents");

					if(emptyEl)
						emptyEl.remove();
				}


				this.addItem(data, (contents && data.item_id == contents.item_id)?contents:null);
			}
		}

		// lightBox init.
		//initLightbox();
	}

	// 아이템 생성
	,addItem : function(data, contents){
		var item, html;
		item = this.getLogItem({contents:contents, data:data, ctrl:this});

		this.items.add(item);

		html = item.getRenderHtml();

		item.el = this.containerEl.insertHtml("afterBegin", html, true);

	//	if(!Ext.isIE6)
	//		item.el.child(".itemNavi").fadeIn({easing:"easeNone", duration:0.3, useDisplay:true});

		//Animation(item.el).to('opacity', '1').duration(2000).go();

		item.el.setStyle("display","block");

		// 글만 있을 때와, 사진 있을 때 아이콘이 안맞는 것 수정.
		if(item.hasImage)
			item.el.addClass("image");

		//item.el.slideIn("t", {easing:"easeNone", duration:0.3, useDisplay:true});
		item.set();
		item.on("modify", this.onClickModify, this);

		if(data.view_type == 1){
		//	item.el.addClass("hidden");
			//this.setHiddenHeight(item.el);
		}
		return item;
	}

	/* item의 update date를 가져옴 */
	,getUpdateDate : function (data){
        var item_id;

        if (data.anc_item_id)  // 리플이면
            item_id = data.anc_item_id;
        else
            item_id = data.item_id;

		var update_date = 0;
		var upItem = null;

	   	this.items.each(function(item){

		   	    if (item.data.anc_item_id != item_id) return;
		 		// 최대값 update_date
			   	if (update_date < item.data.obDate.getTime())
			   	{
			   		update_date = item.data.obDate.getTime();
			   		upItem = item;
				}
			}
		, this);

		if (!upItem || !upItem.data.update_date)
			return null;

		return update_date;
    }

  ,test : function ()
  {
	 	var up_Item_id = null;
		var update_date = 0;
		var start_item_id = null;
		var bFirst = true;

		//Global.i = this.items;

   	    this.items.each(
   		function(item)
	   	{
	   		// 최소값 item_id
	   		if (bFirst)
		   		start_item_id = item.data.item_id;
		   	else if (start_item_id > item.data.item_id)
		   		start_item_id = item.data.item_id;
		   	bFirst = false;

		   	if (!item.data.obDate) return;

			// 최대값 update_date
		   	if (update_date < item.data.obDate.getTime())
		   	{
		   		update_date = item.data.obDate.getTime();
		   		up_Item_id = item.data.item_id;
			}
		}
		, this);

	if (up_Item_id && start_item_id)
	{
	    var item = this.items.key(up_Item_id);
	    if (!item) return null;

	    return {updateDate: update_date, startItemID: start_item_id };
	}

	return null;
  }

  ,getUpdateDate_StartItemID : function (item_id)
  {
        if (!item_id) {window.status = "내부오류679"; return; }

        var updateDate, startItemID;
        var item = this.items.get(item_id);

        if (item)// 원글이면
        {
            var r = this.test();
            if (!r) { window.status ="내부오류744"; return; }
            updateDate = r.updateDate;
            startItemID = r.startItemID;
        }

        return {updateDate: updateDate, startItemID:startItemID };

	 /*	var up_Item_id = null;
		var update_date = 0;
		var start_item_id = null;
		var bFirst = true;

		//Global.i = this.items;

   	    this.items.each(
   		function(item)
	   	{
	   		// 최소값 item_id
	   		if (bFirst)
		   		start_item_id = item.data.item_id;
		   	else if (start_item_id > item.data.item_id)
		   		start_item_id = item.data.item_id;
		   	bFirst = false;

		   	if (!item.data.obDate) return;

			// 최대값 update_date
		   	if (update_date < item.data.obDate.getTime())
		   	{
		   		update_date = item.data.obDate.getTime();
		   		up_Item_id = item.data.item_id;
			}
		}
		, this);

	if (up_Item_id && start_item_id)
	{
	    return {update_date:update_date, start_item_id : start_item_id};
	}

	return null;*/
  }

	/* 로그에 올려진 File의 number를 가져옴. */
	,getFileNumbers : function(memo){
		var fromVal = 0, toVal=0;
		var fileNumbers = [];

		var counter = 0;
		while(fromVal >=0 && toVal>=0){

			fromVal = memo.indexOf('&upload_no=',fromVal)+11;
			//추후 <br/>로 수정
			toVal = memo.indexOf('<br>',toVal+4);

			if(fromVal <0 || toVal <0)
				break;

			fileNumbers.push(memo.substring(fromVal,toVal));

			if(counter++>40){
				window.status = "내부오류 Code=409";
			 	break;
			}

		}
		return fileNumbers;
	}

  // 모임의 탈퇴하기 등 모임 관련 함수 event 설정
	,setGroupFunc : function()
	{
	  if(Ext.get("btn_group_quit"))
  	  Ext.get("btn_group_quit").on("click",function(){
  	      if(confirm("정말 탈퇴하시겠습니까?"))
  	        this.quitGroup();
  	    },this);
	}

	,quitGroup : function()
	{
	  Global.modelGroup.withdraw(PAGE_USER_ID, function(data){
	      if(data.response.code == 100)
	      {
	        alert("탈퇴 되었습니다.");
	        (parseInt(GROUP_TYPE) == 2)?window.location.href="http//"+DOMAIN:window.location.reload();
	      }
	      else
	        alert("탈퇴에 실패하였습니다. 잠시 후 다시 시도하여 주세요.");
	    },this);
	}

	,subscribe : function()
	{
			if(GROUP_FLAG)
			{
					Global.modelGroup.join(PAGE_USER_ID, null, this.cbSubscribe, this);
			}
			else
			{
					Global.modelFriend.inviteEmail(PAGE_USER_ID, null, this.cbSubscribe, this);
			}
	}

	,cbSubscribe : function(data)
	{
			if(!data || data.response.code != 100)
			{
					alert("데이터 전송 도중 문제가 발생하였습니다. 구독하기 버튼을 다시 한번 눌러주세요");
					return;
			}

			var ment;

			if(GROUP_FLAG)
				ment = Global.logUserName+"채널을";
			else
				ment = Global.logUserName+"님의 로그를";

			alert(ment+" 구독하였습니다");
			window.location.reload();
	}
});

/* Mys.LogReplyCtrl - logCtrl을 상속. 리플 생성, 삭제 수정에 대한 컨트롤러 by J.K */
Mys.LogReplyCtrl = function(config){
	Ext.apply(this,config);

	this.initialize();
};

Ext.extend(Mys.LogReplyCtrl, Mys.LogCtrl, {
	replyCountPerPage : 150,
	writeBoxTemplate : new Ext.Template("<form class='writeReplyForm' onsubmit='return false'>" +
																			"<div class='iconBox_1'>" +
																				"<a href='{userUrl}' onclick='return false'>" +
																					"<img src='{mylogo}' alt='{name}' />" +
																				"</a>" +
																			"</div>" +
																			"<textarea name='textarea'></textarea>" +
																			"<input type='image' src='./images/icon/talkBox/btn_reply_write.gif' alt='리플 쓰기'/>" +
																		"</form>"),
	initialize : function(){
		this.toggleFlag = false;
		this.items = new Ext.util.MixedCollection(false, function(item) {return item.data.item_id;});
		this.addEvents({'replyCountChange' : true});
	}

	,toggle : function(btnEl){
		if(this.toggleFlag)
		{
			this.toggleFlag = false;

			if(btnEl) btnEl.removeClass('clicked');

			this.hide();
		}
		else
		{
			if(!this.box)
				this.makeBox();

			this.toggleFlag = true;

			this.showLoadingImg();

			if(btnEl) btnEl.addClass('clicked');

			this.show();

			this.loadData();
		}
	}

	,hide : function(){
		//this.box.slideOut("t",{easing:"easeOut", duration:0.3, useDisplay:true});
		this.box.setStyle("display", "none");
	}

	,show : function(){
		//this.box.slideIn("t",{duration:0.3, useDisplay:true});
		this.box.setStyle("display", "block");
	}

	,loadData : function(){
		/* 추후 수정 - start, limit 제한 없이 */
		var limit = this.replyCountPerPage;
		var start = 0;

		Global.modelLogItem.getReply(this.prtData.item_id, start, limit, 1,this.cbLoadData, this, this.prtData);
	}

	,cbLoadData : function(data, item){
		this.hideLoadingImg();

		if (!data || data.response.code != 100){ alert(data.response.message); return;}

		replyItems = Mys.getSafeArray(data.response.item);

		this.applyItems(replyItems);

		// 아이템이 없으면 리플 쓰기에 focus
		if(!this.items.length && Mys.loginCheck())
			this.writeBoxEl.dom.textarea.focus();

		if(Global.noticeCtrl)
			Global.noticeCtrl.get(null, null, 0);
	}

	,applyItems : function(replyItems){

        if(!replyItems || replyItems.length < 1) return;
        var data, item, ancItem;

        for(var i = 0; i < replyItems.length; i++)
        {
            data = replyItems[i];
            if (!data) { window.status = "내부오류337"; continue; }

            item = this.items.key(data.item_id);

            // 원글이면
            if (data.item_id == this.prtData.item_id){
                this.fireEvent("replyCountChange", data.ref_count?data.ref_count:0);

            /*     var n = data.agree_count;
                if (!data.agree_count) n = 0;
                this.fireEvent("symcountchange", n);*/
            }
            else if (item && data.delete_date)// 삭제
            {
            	this.removeReplyItem(data.item_id);
            }
            else if (item){ // 수정
              if (data.ref_item_id){
                  this.modifyItem(data);
              }
            }
            else{ // 생성
		        if(data.delete_date)
	            	continue;

      			ancItem = this.prtData;

        		if(!ancItem){window.status = "내부오류346"; return;}

        		if (data.ref_item_id == data.anc_item_id)
 	        		item = this.addReplyItem(data);
 	        	else
 	        		item = this.addReReplyItem(data);

 	        	/*if(i == 1) // 첫번 째 Reply에 추가. IE6에서 CSS 깨지는 것 방지.
 	        		item.el.addClass('first');*/
	        }
	    }
//	    initLightbox();

	    Mys.LayerNavi.set();
	}

	,removeReplyItem : function(item_id)
	{
		this.removeChildItems(item_id, true);

		var item = this.items.key(item_id);
		this.removeItem(item.data, true);
	}

	,removeChildItems : function(prt_item_id, bUpdateRefCount)
	{
		if (!prt_item_id) { window.status = "내부오류 613"; return; }

	 	this.items.each(
   		function(item)
	   	{
			// rep - rep
	   		if (item.data.anc_item_id == prt_item_id &&
		   		item.data.ref_item_id != prt_item_id)
			{
				this.removeItem(item.data, bUpdateRefCount);
			}
			// rep
			if (item.data.ref_item_id == prt_item_id)
			{
				this.removeItem(item.data, bUpdateRefCount);
			}
		}
		, this);
	}
    ,removeItem : function(data, bUpdateRefCount)
	{
    	var item = this.items.key(data.item_id);
    	if (!item){ window.status = "내부오류776" + data.item_id; return;}

		this.items.removeKey(item.data.item_id);

    	var el = Ext.get(item.el);
    	if (el){
		    el.removeAllListeners();
            el.remove();
        }
	}

  ,getLogReplyItem : function(obj)
  {
    return new Mys.LogReplyItem(obj);
  }

	,addReReplyItem : function(data){
		var beforeItem;
		this.items.each(function(item){
	//	alert(item.data.item_id+" = "+data.ref_item_id + " = "+item.data.ref_item_id);
		if(item.data.item_id == data.ref_item_id){
			beforeItem = item;
		}
		if(item.data.ref_item_id == data.ref_item_id){
			beforeItem = item;
		}
		}, this);

		var item = this.items.key(data.item_id);
		if(!item){
			item = this.getLogReplyItem({data:data, ctrl:this});
			this.items.add(item);
		}

		type ="reReply";
		html = item.getRenderHtml(type);

		if(!beforeItem){
			if(this.writeBoxEl)
				item.el = this.writeBoxEl.insertHtml("beforeBegin", html, true);
			else
		    	item.el = this.box.insertHtml("beforeEnd", html, true);
		}
		else
    		item.el = beforeItem.el.insertHtml("afterEnd", html, true);

		item.set(type);

		return item;
	}

	,addReplyItem : function(data){

		if (!data.anc_item_id){
			window.status = "내부오류 305";
		    return;
		}
    	var item = this.items.key(data.item_id);

    	if (!item)
    		item = this.getLogReplyItem({data:data, ctrl:this});

		var html, type, prtGrade = 0;

		// 리플일 경우
	/*	if (item.data.ref_item_id && item.data.anc_item_id && item.data.ref_item_id == item.data.anc_item_id)
		{
			// 원글의 grade : 귓속말인지 판단하기 위한 자료
			var prtItem = this.items.key(item.data.ref_item_id);
			if (prtItem)
				prtGrade = prtItem.data.grade;
		}*/

    	this.items.add(item);

//		if (item.data.ref_item_id == item.data.anc_item_id){
			type = "reply";
			html = item.getRenderHtml(type);
	/*	}
		else{
			type ="reReply";
			html = item.getRenderHtml(type);
		}*/

		if(this.writeBoxEl)
			item.el = this.writeBoxEl.insertHtml("beforeBegin", html, true);
		else
	    	item.el = this.box.insertHtml("beforeEnd", html, true);

	    item.set(type);

		if(item.data.item_id == this.prtData.openReplyItemId){
			window.scroll(0, item.el.getTop());
		}

		return item;
	}

	,makeBox : function(){
	  if(this.prtEl.child(".replyBox"))
	    this.box = this.prtEl.child(".replyBox");
	  else
  		this.box = this.prtEl.insertHtml('beforeEnd', "<div class='replyBox'></div>", true);
		if(!Global.isRefuser && Mys.loginCheck()){
			var data = {mylogo : EXT_SESSION.myLogo , name : EXT_SESSION.loginUserName, userUrl : "http://"+EXT_SESSION.myDomain+"."+DOMAIN};
			this.writeBoxEl = this.box.insertHtml('beforeEnd', this.writeBoxTemplate.apply(data), true);
			this.writeBoxEl.on("submit", this.onClickWrite, this);
		}
	}

    ,onClickWrite : function(){
    	if(this.isWriting){alert("처리 중입니다. 잠시만 기다려주세요"); return}
    	if(!this.writeBoxEl.dom.textarea.value){alert("내용을 입력해주세요"); return}

    	var memo = this.writeBoxEl.dom.textarea.value;

    	memo = memo.replace(/\n/gi, "<br>").encodeSP();

    	var update = this.getUpdateDate(this.prtData);

		if(!update)
			update = this.prtData.obDate.getTime();

    	//this.showLoadingImg();
    	this.isWriting = true;

    	Global.modelLogItem.createReply(this.prtData.item_id, memo, null, update, this.cbOnClickWrite, this);
    }

    ,cbOnClickWrite : function(data){
    	this.isWriting = false;
 		//this.hideLoadingImg();
		if (!data || data.response.code != 100){ alert(data.response.message); return;}

		this.writeBoxEl.dom.textarea.value = "";

		replyItems = Mys.getSafeArray(data.response.item);

		this.applyItems(replyItems);
    }

	,showLoadingImg : function(){
		if(!this.loadingEl){
			var naviEl = this.prtEl.child('.itemNavi');

			if(!this.imgSrc)
				this.imgSrc = naviEl.child(".gradeBtn")?"../images/icon/loading_creator.gif":"../images/icon/loading.gif";

			this.loadingEl = naviEl.insertHtml("beforeEnd", "<li class='last'><img class='loading' src='"+this.imgSrc+"' title='로딩 중...' alt='로딩 중...'/></li>", true);
		}
		this.loadingEl.fadeIn({useDisplay:true});
	}

	,hideLoadingImg : function(){
		if(!this.loadingEl){
			window.status = '내부 오류 601';
			return;
		}

		this.loadingEl.fadeOut({useDisplay:true});
	}
});

/* Mys.LogReReplyCtrl - logReplyCtrl을 상속. 리플의 리플에 대한 컨트롤러 by J.K */
Mys.LogReReplyCtrl = function(config){
	Mys.LogReReplyCtrl.superclass.constructor.call(this, config)
};

Ext.extend(Mys.LogReReplyCtrl, Mys.LogReplyCtrl, {
	writeBoxTemplate : new Ext.Template("<form onsubmit='return false' class='writeReReplyForm'>" +
																			"<div class='iconBox_1'>" +
																				"<a href='{userUrl}' onclick='return false'>" +
																					"<img src='{mylogo}' alt='{name}' />" +
																				"</a>" +
																			"</div>" +
																			"<textarea name='textarea'></textarea>" +
																			"<input type='image' src='./images/icon/talkBox/btn_reply_write.gif' alt='리플 쓰기'/>" +
																		"</form>")
	,toggle : function(){
		if(this.toggleFlag)
		{
			this.toggleFlag = false;
			this.hide();
		}
		else
		{
			this.toggleFlag = true;

			if(!this.box)
				this.makeBox();

			this.show();

			this.box.dom.textarea.focus();
		}
	}
	,hide : function(){
		this.box.setStyle("display", "none");
	}

	,makeBox : function(){
		if(Mys.loginCheck()){
			// 리플에 리플 붙은 마지막 아이템 검색
			var insertEl,tempEl, firstFlag = true;
			tempEl = this.prtEl;

			do{
				insertEl = tempEl;
				tempEl = insertEl.next();
			}while(tempEl.hasClass('reReply'));


			var data = {mylogo : EXT_SESSION.myLogo, name : EXT_SESSION.loginUserName, userUrl : "http://"+EXT_SESSION.myDomain+"."+DOMAIN};
			this.box = insertEl.insertHtml('afterEnd', this.writeBoxTemplate.apply(data), true);
			this.box.on("submit", this.onClickWrite, this);
		}
	}

    ,onClickWrite : function(){

    	if(Global.prohibitRreplyFlag == 1 && EXT_SESSION.getID() != PAGE_USER_ID){
    		alert("이 로그는 로그 주인만 댓글의 댓글을 달 수 있습니다");
    		return;
    	}
    	if(this.isWriting){alert("처리 중입니다. 잠시만 기다려주세요"); return}

    	if(!this.box.dom.textarea.value){
    		alert("내용을 입력해주세요");
    		return;
    	}

    	var memo = this.box.dom.textarea.value;
    	memo = memo.replace(/\n/gi, "<br>").encodeSP();
    	var updateDate = this.prtCtrl.getUpdateDate(this.prtData);

    	//this.showLoadingImg();

    	this.isWriting = true;

    	Global.modelLogItem.createReply(this.prtData.item_id, memo, null, updateDate, this.cbOnClickWrite, this);
    }

    ,cbOnClickWrite : function(data){
 		//this.hideLoadingImg();
 		this.isWriting = false;

		if (!data || data.response.code != 100){ alert(data.response.message); return;}

		this.box.dom.textarea.value = "";
    	this.toggle();

		replyItems = Mys.getSafeArray(data.response.item);

		this.prtCtrl.applyItems(replyItems);
    }
});

/* Mys.LogItem - 로그의 원글에 대한 아이템 클래스 - by J.K */
Mys.LogItem = function(config){
	Ext.apply(this, config);

	var dd = this.data.update_date;

 	if (dd)
	  	this.data.obDate = Date.parseString(dd, null, true);

	this.addEvents({"modify" : true});
}

Ext.extend(Mys.LogItem, Ext.util.Observable, {
	logTemplate : new Ext.Template('<div class="item {rss} {contentsClass}" style="display:none">' +
															'<a name="{linkDate}"></a>' +
															'{contents}'+
															'<p class="itemMemo">{memo}</p>' +
															'{foldNavi}' +
															'<ul class="itemNavi">' +
																'<li class="first">{writtenDate}</li>' +
																'{groupText}' +
																'<li>{replyText}</li>' +
																'<li class="category">{cateText}</li>' +
																'<li class="last"><a href="#" onclick="return false;" title="글 주소 복사" class="copyUrl"/>글주소<span>{linkUrl}</span></a></li>' +
																'{creatorNavi}' +
															'</ul>' +
														'</div>'),

  getReplyCtrl : function()
  {
    return new Mys.LogReplyCtrl({prtEl:this.el, prtData:this.data});
  },

	set : function(copyCheck){
		this.el.dom.id = this.data.item_id;

		this.replyCtrl = this.getReplyCtrl();
		this.replyCtrl.on('replyCountChange', function(replyCount){this.setReplyCount(replyCount)}, this);

		this.replyEl = this.el.child('.replyBtn');
		if(this.replyEl)
			this.replyEl.on("click", this.onClickReply, this);

   	this.agreeEl = this.el.child('.agreeBtn');
		if(this.agreeEl)
			this.agreeEl.on('click', this.onClickAgree, this);

		var modifyEl = this.el.child('.modifyBtn');

		if(modifyEl)
			modifyEl.on('click', this.onClickModify, this);

		var removeEl = this.el.child('.removeBtn');
		if(removeEl)
			removeEl.on('click', this.onClickRemove, this);

		// init 함수에서 이미 처리하기 때문에 처음 item을 set할 때는 실행하지 않는다.
		if(!copyCheck){
			var copyEl = this.el.child('.copyUrl');
			if(copyEl){
				copyEl.on("mouseover", function(){
					Mys.clip.setText(this.child('span','false').innerHTML);

					if(Mys.clip.div){
						Mys.clip.receiveEvent('mouseout', null);
						Mys.clip.reposition(this.dom);
					}
					else
						Mys.clip.glue(this.dom);
				});
			}
		}

		if(Mys.creatorCheck(this.data.creator_id)){
			this.gradeEl = this.el.child('.gradeBtn');

		/*	if(this.gradeEl)
				this.gradeEl.on("click", this.onClickModifyGrade, this); */
		}

		if(!this.set_overload() && this.data.replyOn)
		{
			this.replyCtrl.toggle(this.replyEl, true);
		}
	}

	,set_overload : function()
	{
	  /* overload */
	  return false;
	}

	,showLoadingImg : function(childName, insertLocation, useDefault, imgSrc){
		var className = "";
		if(!childName)
			childName = ".itemNavi";

		if(!this.loadingEl){
			var insertEl = this.el.child(childName);

			if(!insertLocation)
				insertLocation = "beforeEnd";

			if(!useDefault){
				if(!this.imgSrc && !useDefault){
					imgSrc = this.imgSrc = insertEl.child(".grade")?"loading_creator.gif":"loading.gif";
				}
				else if(this.imgSrc && !useDefault)
					imgSrc = this.imgSrc;

				className = "class='last'";
			}
      if(Global.isMain)
        var imgPath = "./minilog/images/icon/";
      else
        var imgPath = "./images/icon/";
			this.loadingEl = insertEl.insertHtml(insertLocation, "<li "+className+"'><img class='loading' src='"+imgPath+imgSrc+"' title='로딩 중...' alt='로딩 중...'/></li>", true);
		}
		this.loadingEl.fadeIn({useDisplay:true});
	}

	,hideLoadingImg : function(){
		if(!this.loadingEl){
			window.status = '내부 오류 602';
			return;
		}
		this.loadingEl.fadeOut({useDisplay:true});
		delete this.loadingEl;
	}

	,onClickRemove : function(){
		if(!Mys.loginCheck(true) || (EXT_SESSION.getID() != PAGE_USER_ID && !Mys.creatorCheck(this.data.creator_id, true)))
			return;

		var answer = confirm("정말 삭제하시겠습니까?");
		if(!answer)
			return;

		this.showLoadingImg();
		this.ctrl.removeUploadedFiles(this);
	}

	,onClickModify : function(evt, t){
			this.fireEvent("modify", {el: this.el, replyName : ".replyBox", contentsName : ".itemContents", memoName : ".itemMemo", naviName : ".itemNavi", data: this.data});
	}


	,onClickModifySave : function(){
		var memo = this.modifyFormEl.dom.textarea.value;
		if(!memo){
			alert("내용을 입력해주세요");
			return;
		}

		this.showLoadingImg("ul", "afterBegin", true, "loading_write.gif");


		if(this.mediaList){
			// 태그에 <br>이 없으면 추가
			var parser = new Mys.ParseItem;

			parser.on("findtag", this.onParseFindTag, this);

			memo = parser.parse(memo, true);

			// 그림 & 사진 권한 변경 or 삭제
			if(this.mediaList.length){
				this.modifyMediaList();
				return;
			}
		}
		this.modify();
	}

	,modify : function(){
		var memo = this.modifyFormEl.dom.textarea.value;

		memo = memo.replace(/\n/gi, "<br>").encodeSP();

		var updateDate = this.ctrl.getUpdateDate(this.data);

		var grade, categoryId;

		if(this.modifyGradeEl){
			grade = this.modifyGradeEl.dom.value;
			this.data.grade = grade;
		}

		if(this.modifyCategoryEl)
			categoryId = this.modifyCategoryEl.dom.value;

		Global.modelLogItem.modify(this.data.item_id, memo, updateDate, null, grade, categoryId, this.cbModify, this);
	}

	,modifyMediaList : function(){
		this.updateMediaList = [];
		this.deleteMediaLIst = [];
		grade = this.modifyGradeEl.dom.value;
		this.mediaList.each(function(item, index, length){
			item.valid?this.updateMediaList.push(item.no):this.deleteMediaLIst.push(item.no);
		}, this);

		if(grade != this.data.grade && this.updateMediaList.length){ // 권한 변경
			Global.FileServer.modifyFile(this.updateMediaList, grade, function(){if(this.deleteMediaLIst.length){this.deleteMediaList()}else{this.modify()}}, this);
		}else if(this.deleteMediaLIst.length){ // 삭제
			this.deleteMediaList();
		}else
			this.modify();
	}

	// 그림 & 사진 삭제
	,deleteMediaList : function(){
		Global.FileServer.deleteFileWithFileNo(this.deleteMediaLIst, this.modify, this);
	}

	,cbModify : function(data){
		if(!data || data.response.code != 100){alert(data.response.message); return;}

		var items = Mys.getSafeArray(data.response.item);

		this.ctrl.applyItems(items, null, "ACTION_MODIFY");
		this.hideLoadingImg();
		this.hideModify();

		if(this.modifyGradeEl){
			//this.setGradeText(data.response.item.grade);
		}

		if(this.mediaList){
			delete this.deleteMediaList;
			delete this.updateMediaList;
			delete this.mediaList;
		}
	}

	,setGradeText : function(grade){

		switch(grade){
			case "9" :
				gradeText = "전체공개";
				break;

			case "8" :
				gradeText = "채널공개";
				break;

			case "1" :
				gradeText = "친구공개";
				break;

			default :
				gradeText = "비공개";
				break;
		}

		this.gradeEl.update(gradeText);

	}
	,hideModify : function(){
		this.modifyFormEl.remove();

		delete this.modifyFormEl;
		delete this.modifyGradeEl;
		delete this.modifyCategoryEl;

		this.naviEl.fadeIn({useDisplay:true});
		this.contentsEl.setStyle("display","block");
	}

	,onClickAgree : function(){
		if(!Mys.loginCheck(true))
			return;

		this.showLoadingImg();
		Global.modelLogItem.addAgree(this.data.item_id, this.cbOnClickAgree, this);
	}

	,onClickModifyGrade : function(){
		if(!this.gradeToggle){
			this.gradeToggle = true;
			this.gradeEl.addClass("clicked");

			if(!this.gradeListEl){
				this.makeGradeList();
				this.gradeListEl.alignTo(this.gradeEl, "bl", [-2, 2]);
			}

			this.gradeListEl.setStyle("display","block");


			(function(){Ext.fly(document.body).on("click", this.hideGradeList, this)}).defer(100, this);
		}
		else{
			this.hideGradeList();
		}
	}
	,makeGradeList : function(){
			this.gradeListEl = this.el.insertHtml('afterBegin',this.ctrl.gradeListHtml, true);
			if(GROUP_FLAG){
				this.gradeListEl.child(".friend").parent().remove();
				this.gradeListEl.child(".private").parent().remove();
			}
			else
				this.gradeListEl.child(".group").parent().remove();

			this.gradeListEl.select("a").on("click", function(evt, el, opt){
				var grade;
				var className = el.className;

				switch(className){
					case "public" :
						grade = 9;
						break;

					case "group":
						grade = 8;
						break;

					case "friend" :
						grade = 1;
						break;

					case "private" :
						grade = 0;
						break;

					default :
						return;
						break;
				}
				this.modifyGrade(grade);
			}, this);
	}

	,hideGradeList : function(){
			this.gradeToggle = false;

			Ext.fly(document.body).un("click", this.hideGradeList);

			this.gradeEl.removeClass("clicked");

			this.gradeListEl.setStyle("display","none");
	}

	,modifyGrade : function(grade){
		this.showLoadingImg();
		Global.modelLogItem.modify(this.data.item_id, null, null, null, grade, this.data.category_id, this.cbModifyGrade, this);
	}

	,cbModifyGrade : function(data){
		var gradeText, item;

		this.hideGradeList();
		this.hideLoadingImg();
		if(!data | data.response.code != 100){alert(data.response.message); return}

		this.setGradeText(data.response.item.grade);
	}

	,cbOnClickAgree : function(data){
		this.hideLoadingImg();
		if (!data || data.response.code != 100){
			alert(data.response.message);
			return;
		}

		this.setAgreeCount(data.response.item.agree_count);
	}

	,setMemo : function(memo, view_type, isReply)
	{
		var parser = new Mys.ParseItem(view_type);
		var childName = isReply?".replyContents":".itemMemo";
		this.data.view_type = view_type;
		this.data.memo = memo;

		var memo = parser.parse(memo);
		memo += parser.getFileQuery();

		this.data.text_memo = parser.text_memo;
		//this.data.memo = parser.parse(memo);

		this.el.child(childName).update(memo);
	}

	,setGrade : function(grade){
		this.data.grade = grade;

		this.setGradeText(grade);
	}

	,setRss : function(rss) {
		this.data.rss_publish = rss;
		(rss == 1)?this.el.addClass("rss"):this.el.removeClass("rss");
	}

	,setPublish : function(publish){
		this.data.publish = publish;
	}

	,setCategory : function(category_id){
		this.data.category_id = category_id;

		if(category_id == 101)
		{
				var title = "글";
				this.el.child('.category').update(title);
		}
		/*else{
			//data.cateText = data.c_title;
			this.ctrl.cateItems.each(function(item, index, length){

				if(category_id == item.category_id){
					this.el.child('.category').update(item.title);
					return;
				}
			}, this);
		}*/
	}

	,setReplyCount : function(replyCount){
		if(!this.replyEl){ window.status = '내부오류 528'; return;}

		this.data.ref_count = replyCount;

		replyText = replyCount?"댓글 <span>"+replyCount+"</span>":"리플쓰기";

		this.replyEl.update(replyText);
	}

	,setAgreeCount : function(agreeCount){
		if(!this.agreeEl){ window.status = '내부오류 528'; return;}

		this.data.agree_count = agreeCount;
		this.agreeEl.update("공감 <span>"+agreeCount+"</span>");
	}

	,onClickReply : function(evt, el, opt){
		// replyBtn 이미지 변경을 위해.
		if(!this.replyEl)
			this.replyEl = Ext.get(el);

		// 공개설정 창이 열려있을 경우 닫기.
		if(this.gradeToggle)
			this.hideGradeList();

		this.replyCtrl.toggle(this.replyEl);
	}

	,getRenderHtml : function(){
		// this에 추가로 저장하면 비효율적이므로, Ext.apply를 이용하는 것으로 바꿀 것. replyItem도.
		var data = {};

		Ext.apply(data, this.data);
		var dd = Date.parseDate(data.insert_date, "Y-m-d G:i:s");
		var tpl = this.logTemplate;

		data.replyText = "<a class='replyBtn' href='#' onclick='return false'>리플쓰기</a>";

		if(data.category_id == 101){
			//	data.cateText = GROUP_FLAG?"토크":"지금 나는";
			data.cateText = "글";
		}
		else
			data.cateText = data.c_title;

		/*else{
			//data.cateText = data.c_title;
			this.ctrl.cateItems.each(function(item, index, length){

				if(data.category_id == item.category_id){
					data.cateText = item.title;
					return;
				}
			}, this);
		}*/

		if(this.contents !== null)
		{
			if(!Global.contentsParser)
				Global.contentsParser = new Mys.ParseContents();

			data.contents = Global.contentsParser.parse(this.contents);
			data.contents = "<div class='itemContents'>"+data.contents+"</div>";

			data.contentsClass = "contents";
		}
		// 글쓴 자신은 공감을 할 수 없으므로, 나타내지 않는다.
		//this.data.agreeText = "<a class='agreeBtn' href='#' onclick='return false'>공감하기</a>";

		if(!Global.parser)
			Global.parser = new Mys.ParseItem();
		else
			Global.parser.initialize();

		data.memo = Global.parser.parse(data.memo);

		data.memo += Global.parser.getFileQuery();
		this.data.text_memo = Global.parser.text_memo;
		this.hasImage = Global.parser.hasImage();

		switch(this.data.grade){
			case "9" :
				var gradeType = "전체공개";
				break;

			case "8" :
				var gradeType = "채널공개";
				break;

			case "1" :
				var gradeType = "친구공개";
				break;

			default :
				var gradeType = "비공개";
				break;
		}

		if(Mys.creatorCheck(data.creator_id)){
			//data.creatorNavi = '<li class="creator grade"><a href="#" onclick="return false" class="gradeBtn">'+gradeType+'</a></li>';
			data.creatorNavi = '<li class="creator gradeBtn" style="padding-left:20px">'+gradeType+'</li>';
			data.creatorNavi += '<li class="creator"><a href="#" onclick="return false" class="modifyBtn">수정</a></li>';
			data.creatorNavi += '<li class="creator last"><a href="#" onclick="return false" class="removeBtn">삭제</a></li>';
		}

		if(data.view_type == 1){
			data.foldNavi = '<p class="foldBtn"><a href="#" onclick="Mys.foldToggle(this); return false">펼치기</a></p>';
		}

		if(GROUP_FLAG){
			data.groupText = "<li>"+data.name+"</li>";
		}

		data.writtenDate = dd.dateFormat("G:i");
		data.linkDate = dd.dateFormat("G:i:s");
		data.linkUrl = "http://"+PAGE_USER_DOMAIN+"."+DOMAIN+"/"+START_DATE+"#"+ data.linkDate;
		if(data.rss_publish == 1)
			data.rss = "rss";
		return tpl.apply(data);
	}
});


/* Mys.LogReplyItem - logItem을 상속. 리플과 리플의 리플에 대한 아이템 클래스 by J.K */
Mys.LogReplyItem = function(config){
	Mys.LogReplyItem.superclass.constructor.call(this, config);
}

Ext.extend(Mys.LogReplyItem, Mys.LogItem, {
	replyTemplate : new Ext.Template("<div class='reply'>" +
																	"<div class='iconBox_2 userIcon'>" +
																		"<a href='{userUrl}' onclick='return false'>" +
																			"<img src='{mylogo}' class='userImage' alt='{userName}'/>" +
																			"<span class='domain'>{logoDomain}</span>" +
																			"<span class='userId'>{logoId}</span>"+
																			"<span class='refuser'>1</span>" +
																		"</a>" +
																	"</div>" +
																	"<p class='replyContents'>{memo}</p>"+
																	"<ul class=replyNavi>" +
																		"<li class='userName'>{name}</li>" +
																		"<li>{insert_date}</li>" +
																		"{replyBtn}" +
																		"{agreeBtn}" +
																		"{ownerNavi}" +
																	"</ul>"+
																"</div>"),

	reReplyTemplate : new Ext.Template("<div class='reReply'>" +
																	"<div class='iconBox_2 userIcon'>" +
																		"<a href='{userUrl}' onclick='return false'>" +
																			"<img src='{mylogo}'  class='userImage' alt='{userName}'/>" +
																			"<span class='domain'>{logoDomain}</span>" +
																			"<span class='userId'>{logoId}</span>" +
																			"<span class='refuser'>1</span>" +
																		"</a>" +
																	"</div>" +
																	"<p class='replyContents'>{memo}</p>"+
																	"<ul class=replyNavi>" +
																		"<li class='userName'>{name}</li>" +
																		"<li>{insert_date}</li>" +
																		"{agreeBtn}" +
																		"{ownerNavi}" +
																	"</ul>"+
															"</div>"),

	modifyTemplate : new Ext.Template('<form name="modify_{item_id}" class="{className}">' +
																				'<textarea name="textarea" rows="3">{memo}</textarea>' +
																				'<div class="md_right"><a href="#" onclick="return false" class="saveBtn"><img class="nofold" src="./home/images/btn_save.gif"></a>'+
																				'<a href="#" onclick="return false" class="cancelBtn"><img class="nofold" src="./home/images/btn_cancel.gif"></a></div>'+
																			'<div style="clear:both;"></div></form>')

  ,getLogReReplyCtrl : function()
  {
    return new Mys.LogReReplyCtrl({prtEl:this.el, prtData:this.data, prtCtrl : this.ctrl});
  }

	,set : function(type){
		var replyEl, agreeEl, deleteEl;

		if(type == "reply"){
			this.replyEl = this.el.child('.replyBtn');
			this.reReplyCtrl = this.getLogReReplyCtrl();
		}

		if(this.replyEl)
			this.replyEl.on("click", this.onClickReply, this);


    this.agreeEl = this.el.child('.agreeBtn');

		if(this.agreeEl)
			this.agreeEl.on('click', this.onClickAgree, this);
/*
		if(this.agreeEl){
      if(Mys.creatorCheck(this.data.creator_id)){
        this.agreeEl.remove();
      delete this.agreeEl;
      }else
        this.agreeEl.on('click', this.onClickAgree, this);
      }
*/

		this.removeEl = this.el.child('.removeBtn');
		if(this.removeEl)
			this.removeEl.on('click', this.onClickRemove, this);

		this.modifyEl = this.el.child('.modifyBtn');
		if(this.modifyEl)
			this.modifyEl.on('click', this.onClickModify, this, {replyName:"replyBox", contentsName : ".replyContents", naviName : ".replyNavi", className : "modifyReplyForm", mode:"reply"});
	}

	,onClickModify : function(el, evt, opt){
		if(!Mys.loginCheck(true) || !Mys.creatorCheck(this.data.creator_id, true))
			return;

		// 글쓰기 창이 열려있으면 닫기.
		/*if(logWriteCtrl.writeToggleFlag)
			logWriteCtrl.writeToggle(null,null,{}); */

		if(!this.contentsEl)
			this.contentsEl = this.el.child(opt.contentsName);

		if(!this.naviEl)
			this.naviEl = this.el.child(opt.naviName);

		this.naviEl.setStyle('display', 'none');
		this.contentsEl.setStyle('display','none');

		var memo = this.data.memo;

		memo = memo.replace(/<br>|<br\/>/gi, "\n");

		memo = memo.replace(/\*가입\s/, "");

		var data = {item_id : this.data.item_id, memo: memo, className : opt.className};

		var html = this.modifyTemplate.apply(data);

		this.modifyFormEl = this.contentsEl.insertHtml('afterEnd', html, true);

		this.modifyFormEl.child('.saveBtn').on("click", this.onClickModifySave, this);
		this.modifyFormEl.child('.cancelBtn').on("click", this.hideModify, this);
		this.modifyFormEl.addKeyListener(Ext.EventObject.ESC, this.hideModify, this);
		this.modifyFormEl.dom.textarea.focus();
	}

	,getRenderHtml : function(type){
		var tpl, data = {};
		Ext.apply(data, this.data);

		var dd = Date.parseDate(data.insert_date, "Y-m-d G:i:s");

		var parser = new Mys.ParseItem("reply");

		data.memo = parser.parse(data.memo);

		data.memo = parser.getImageQuery() + data.memo;


		switch(type){
			case "reply" :
					tpl = this.replyTemplate;
					break;

			case "reReply" :
					tpl = this.reReplyTemplate;
					break;
		}


			data.agreeBtn = this.getAgreeHtml(data.agree_count, data.agree_flag);

		if(Mys.loginCheck() && !Global.isRefuser){
			if((Global.prohibitRreplyFlag == 0 || EXT_SESSION.getID() == PAGE_USER_ID)){
				/*if(data.ref_count)
					data.replyText = "<a class='replyBtn' href='#' onclick='return false'>댓글 <span class='replyCount'>"+data.ref_count+"</span></a>";
				else*/
				data.replyBtn = "<li><a class='replyBtn' href='#' onclick='return false'>리플쓰기</a></li>";
			}
		}
		else if(data.ref_count){
				data.replyBtn = "<li>댓글 <span class='replyCount'>"+data.ref_count+"</span></li>";
		}

		data.ownerNavi = "";

		if(Mys.creatorCheck(data.creator_id)){
			data.ownerNavi += "<li class='creatorfirst'><a href='#' onclick='return false' class='modifyBtn'>수정</a></li>";
		}

		if(Mys.creatorCheck(data.creator_id) || Mys.creatorCheck(this.ctrl.prtData.creator_id)){
				data.ownerNavi += "<li class='creator "+(data.ownerNavi ? "" : "first")+"'><a href='#' onclick='return false' class='removeBtn'>삭제</a></li>";
		}

		if(!data.mylogo)
		{
			data.mylogo = '/images/icon/defaultImage.gif';
		}
		data.userUrl = "http://"+data.mydomain+"."+DOMAIN;

		data.logoDomain = encode64(data.mydomain);
		data.logoId = encode64(data.creator_id);

		data.insert_date = dd.dateFormat("Y-m-d G:i");
    data.newClass = data.read_flag ? 'none' : '';

		return tpl.apply(data);
	}

	,getAgreeHtml : function(agree_count)
	{
		if(Mys.loginCheck()){
  		if(agree_count)
  			return "<li><a class='agreeBtn' href='#' onclick='return false'>공감 <span class='agreeCount'>"+agree_count+"</span></a></li>";
  		else
  			return "<li><a class='agreeBtn' href='#' onclick='return false'>공감하기</a></li>";
		}else if(agree_count){
				return "<li>공감 <span class='agreeCount'>"+agree_count+"</span></li>";
		}

	}

	,onClickRemove : function(){
		if(!Mys.loginCheck(true) || (EXT_SESSION.getID() != PAGE_USER_ID && !Mys.creatorCheck(this.data.creator_id, true)))
			return;

		var answer = confirm("정말 삭제하시겠습니까?");
		if(!answer)
			return;

		var updateDate = this.ctrl.getUpdateDate(this.data);

		Global.modelLogItem.remove(this.data.creator_id, this.data.item_id, updateDate, null, 1 /* class Id */, null, null, this.cbOnClickRemove, this);
	}

	,cbOnClickRemove : function (data)
	{
		if (!data || data.response.code != 100){alert(data.response.message); return;}

		replyItems = Mys.getSafeArray(data.response.item);

		this.ctrl.applyItems(replyItems);
	}
	,showLoadingImg : function(){
		Mys.LogReplyItem.superclass.showLoadingImg.call(this, ".replyNavi");
	}

	,onClickReply : function(){
		this.reReplyCtrl.toggle();
	}
});

/* Mys.Model.Minilog */
Mys.Model.Minilog = function(user_id)
{
	this.user_id = user_id;
	Mys.Model.Minilog.superclass.constructor.call(this);
};

Ext.extend (Mys.Model.Minilog, Mys.Model,
{
	getInterface : function(callback,scope)
	{
		var query = "model=minilog&view=json&mode=get&user_id="+this.user_id ;
		this.ajax.request(query, callback, scope);

	},
	getDir : function(callback,scope)
	{
		var query = "model=minilog&view=json&mode=get_directory&user_id="+this.user_id ;
		this.ajax.request(query, callback, scope);

	},

	modifyDir : function(md_Arr,callback,scope)
	{
		var query = "model=minilog&view=json&mode=modify_directory&user_id="+this.user_id;
		for(var i = 0;i<md_Arr.length;i++)
		{
			query += "&md_array["+i+"][dir_index]="+md_Arr[i]['dir_index'];
			query += "&md_array["+i+"][dir_order]="+md_Arr[i]['dir_order'];
			query += "&md_array["+i+"][visible]="+md_Arr[i]['visible'];
			if(md_Arr[i]['title'])
				query += "&md_array["+i+"][title]="+md_Arr[i]['title'];
		}

		this.ajax.request(query, callback, scope);
	},

	modifyDirWithID : function(user_id, md_Arr,callback,scope)
	{
		var query = "model=minilog&view=json&mode=modify_directory&user_id="+user_id;
		for(var i = 0;i<md_Arr.length;i++)
		{
			query += "&md_array["+i+"][dir_index]="+md_Arr[i]['dir_index'];
			query += "&md_array["+i+"][dir_order]="+md_Arr[i]['dir_order'];
			query += "&md_array["+i+"][visible]="+md_Arr[i]['visible'];
			if(md_Arr[i]['title'])
				query += "&md_array["+i+"][title]="+md_Arr[i]['title'];
		}

		this.ajax.request(query, callback, scope);
	},

	modify : function(object, callback, scope)
	{
		var query = "model=minilog&view=json&mode=modify&user_id=" + object.user_id;

		// 배경
		query += "&bg_color=" + object.bg_color;
		if(object.bg_image)
			query += "&bg_image=" + object.bg_image.encode();
		if(object.bg_top_image)
			query += "&bg_top_image=" + object.bg_top_image.encode();
		query += "&bg_image_type=" + object.bg_image_type;
		// 기본(시스템 포함) 글꼴
		query += "&font_facename=" + object.font_facename;
		query += "&font_size=" + object.font_size;
		query += "&font_weight=" + object.font_weight;
		query += "&font_color=" + object.font_color;
		// 헤더
		query += "&header_visible=" + object.header_visible;
		query += "&header_font_facename=" + object.header_font_facename;
		query += "&header_font_size=" + object.header_font_size;
		query += "&header_font_weight=" + object.header_font_weight;
		query += "&header_font_color=" + object.header_font_color;
		query += "&header_info_font_color=" + object.header_info_font_color;
		query += "&header_add_font_color=" + object.header_add_font_color;
		// 메뉴
		query += "&menu_bg_color=" + object.menu_bg_color;
		query += "&menu_font_facename=" + object.menu_font_facename;
		query += "&menu_font_size=" + object.menu_font_size;
		query += "&menu_font_weight=" + object.menu_font_weight;
		query += "&menu_info_color=" + object.menu_info_color;
		query += "&menu_font_color=" + object.menu_font_color;
		query += "&menu_click_font_use=" + object.menu_click_font_use;
		query += "&menu_click_font_color=" + object.menu_click_font_color;

		query += "&menu_nickname_font_color=" + object.menu_nickname_font_color;
		// 속지
		query += "&paper_color=" + object.paper_color;
		if(object.paper_image)
			query += "&paper_image=" + object.paper_image.encode();
		if(object.paper_top_image)
			query += "&paper_top_image=" + object.paper_top_image.encode();
		if(object.paper_bottom_image)
			query += "&paper_bottom_image=" + object.paper_bottom_image.encode();
		query += "&paper_image_type=" + object.paper_image_type;
		if(object.paper_left_image)
			query += "&paper_left_image=" + object.paper_left_image.encode();
		query += "&paper_title_font_facename=" + object.paper_title_font_facename;
		query += "&paper_title_font_size=" + object.paper_title_font_size;
		query += "&paper_title_font_weight=" + object.paper_title_font_weight;
		query += "&paper_title_font_color=" + object.paper_title_font_color;
		query += "&paper_font_facename=" + object.paper_font_facename;
		query += "&paper_font_size=" + object.paper_font_size;
		query += "&paper_font_weight=" + object.paper_font_weight;
		query += "&paper_font_color=" + object.paper_font_color;
		query += "&paper_reply_font_color=" + object.paper_reply_font_color;
		query += "&paper_font_size=" + object.paper_font_size;
		query += "&paper_font_weight=" + object.paper_font_weight;
		// 테두리
		query += "&outline_color=" + object.outline_color;
		query += "&outline_thickness=" + object.outline_thickness;

    // 사이드 bar
		query += "&sb_bg_color=" + object.sb_bg_color;
		query += "&sb_title_color=" + object.sb_title_color;
		query += "&sb_contents_color=" + object.sb_contents_color;
		query += "&sb_opacity=" + object.sb_opacity;

		this.ajax.request(query, callback, scope);
	}

	,add_daily_title : function(user_id, current_date, title, daily_title_id, callback, scope, el)
	{
		var query='model=minilog&view=json&mode=add_daily_title&user_id='+user_id+'&current_date='+current_date+'&title='+title;

		if(daily_title_id)
			query += '&daily_title_id='+daily_title_id;

		this.ajax.request(query, callback, scope, null, null, el);
	}
	,modify_log_title : function(user_id, title, callback, scope){
		var query= 'model=profile&view=json&mode=modify_user&user_id='+user_id+'&title='+title;
		this.ajax.request(query, callback, scope, null, null, el);
	}


/*
    ** type
		sb_public_ch_fold - 구독체널
		sb_private_ch_fold - 구독채널(비공개)
		sb_following_fold - 구독로그
		sb_follower_fold - 내로그 구독자
		sb_reply_fold -최근 댓글
		sb_help_fold - 활용도구
		sb_guide_fold - 추천기능

		** value
		0 - folded
		1 - unfolded
*/
	,modifyBarFold : function(user_id, type, value, callback, scope)
	{
		var query= 'model=minilog&view=json&mode=modify&user_id='+user_id.encode()+'&'+type+'='+value;
		this.ajax.request(query, callback, scope);
	}
});

/* logItem에 필요한 Date 함수 추가 */



/**
 * justcorners.js 1.81 (21-Mar-20090606)
 * (c) by Christian Effenberger
 * All Rights Reserved
 * Source: corner.netzgesta.de
 * Distributed under Netzgestade Software License Agreement
 * http://www.netzgesta.de/cvi/LICENSE.txt
 * License permits free of charge
 * use on non-commercial and
 * private web sites only
**/

var tmp = navigator.appName == 'Microsoft Internet Explorer' && navigator.userAgent.indexOf('Opera') < 1 ? 1 : 0;
if(tmp) var isIE = document.namespaces && !window.opera ? 1 : 0;

if(isIE) {
	if(document.namespaces['v']==null) {
		var e=["shape","shapetype","group","background","path","formulas","handles","fill","stroke","shadow","textbox","textpath","imagedata","line","polyline","curve","roundrect","oval","rect","arc","image"],s=document.createStyleSheet();
		for(var i=0; i<e.length; i++) {s.addRule("v\\:"+e[i],"behavior: url(#default#VML);");} document.namespaces.add("v","urn:schemas-microsoft-com:vml");
	}
}

function roundedCorners(ctx,width,height,radius,lt,rt,lb,rb){
	ctx.beginPath(); ctx.moveTo(0,radius);
	if(lb==1) {ctx.lineTo(0,height-radius); ctx.quadraticCurveTo(0,height,radius,height); }else {ctx.lineTo(0,height); }
	if(rb==1) {ctx.lineTo(width-radius,height); ctx.quadraticCurveTo(width,height,width,height-radius); }else {ctx.lineTo(width,height); }
	if(rt==1) {ctx.lineTo(width,radius); ctx.quadraticCurveTo(width,0,width-radius,0); }else {ctx.lineTo(width,0); }
	if(lt==1) {ctx.lineTo(radius,0); ctx.quadraticCurveTo(0,0,0,radius); }else {ctx.lineTo(0,0); }
	ctx.closePath();
}

function addRoundedIECorners() {
	var image, object, vml, classNames, data, classes = '';
	var iradius = 0, iborder = 0, icolor = '', newClasses = '';
	var maxdim = 0, mindim = 0, i, j, child, tmp = '';
	var radius = null, display = "", flt = "", color = '';
	var tl = 1, tr = 1, bl = 1, br = 1;
	var children = document.getElementsByTagName('img');
	var theimages = new Array();
	for(i=0;i<children.length;i++) {
		child = children[i];
		classNames = child.className.split(' ');
		for(j=0;j<classNames.length; j++) {
			if(classNames[j] == 'corners') {theimages.push(child); break; }
		}
	}
	for(i=0;i<theimages.length;i++) {
		image = theimages[i]; iradius = 16; color = '0000ff';
		tl = 1;	tr = 1; bl = 1; br = 1; iborder = 0;
		object = image.parentNode;
		classes = image.className.split(' ');
		for(j=0;j<classes.length;j++) {
			if(classes[j].indexOf("iradius") == 0) {
				iradius = classes[j].substring(7);
			}else if(classes[j].indexOf("iborder") == 0) {
				iborder = classes[j].substring(7);
			}else if(classes[j].indexOf("icolor") == 0) {
				icolor = classes[j].substring(6);
			}else if(classes[j].indexOf("iradiae") == 0) {
				tmp = classes[j].substring(7);
				tl = (tmp.substr(0,1)!="1"?0:1);
				tr = (tmp.substr(1,1)!="1"?0:1);
				bl = (tmp.substr(2,1)!="1"?0:1);
				br = (tmp.substr(3,1)!="1"?0:1);
			}
		} newClasses = '';
		for(j=0;j<classes.length;j++) {
			if(classes[j] != "corners") {
				if(newClasses) { newClasses += ' '; }
				newClasses += classes[j];
			}
		}
		maxdim = Math.min(image.width,image.height)/2;
		mindim = (iradius==0?16:iradius);
		radius = Math.min(maxdim,mindim);
		iborder = Math.min(iborder,2);
		color = (icolor.match(/^[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]$/i)?icolor:color);
		display = (image.currentStyle.display.toLowerCase()=='block')?'block':'inline-block';
		vml = document.createElement(['<var style="zoom:1;overflow:hidden;display:' + display + ';width:' + image.width + 'px;height:' + image.height + 'px;padding:0;">'].join(''));
		flt =  image.currentStyle.styleFloat.toLowerCase();
		display = (flt=='left'||flt=='right')?'inline':display;
		var path = "m 0," + radius;
		if(bl==1) {path += " l 0," + (image.height-radius) + " qy " + radius + "," + image.height;}else {path += " l 0," + image.height;}
		if(br==1) {path += " l " + (image.width-radius) + "," + image.height + " qx " + image.width + "," + (image.height-radius);}else {path += " l " + image.width + "," + image.height;}
		if(tr==1) {path += " l " + image.width + "," + radius + " qy " + (image.width-radius) + ",0";}else {path += " l " + image.width + ",0";}
		if(tl==1) {path += " l " + radius + ",0 qx 0," + radius;}else {path += " l 0,0";}
		path += " x e"; data = '<v:shape strokeweight="'+iborder+'px" stroked="'+(iborder>0?"t":"f")+'" strokecolor="#'+color+'" filled="t" fillcolor="#ffffff" coordorigin="0,0" coordsize="' + image.width + ',' + image.height + '" path="' + path + '" style="zoom:1;margin:-1px 0 0 -1px;padding: 0;display:' + display + ';width:' + image.width + 'px;height:' + image.height + 'px;"><v:fill src="' + image.src + '" type="frame" /></v:shape>';
		vml.innerHTML = [data ].join('');
		vml.className = newClasses;
		vml.style.cssText = image.style.cssText;
		vml.style.visibility = 'visible';
		vml.src = image.src; vml.alt = image.alt;
		if(image.id!='') vml.id = image.id;
		if(image.title!='') vml.title = image.title;
		if(image.getAttribute('onclick')!='') vml.setAttribute('onclick',image.getAttribute('onclick'));
		image.insertAdjacentElement('BeforeBegin',vml);
		if(image.getAttribute("usemap")) {
			object.style.position = 'relative';
			object.style.height = image.height+'px';
			object.style.width = image.width+'px';
			image.left = 0; image.top = 0;
			image.style.position = 'absolute';
			image.style.height = image.height+'px';
			image.style.width = image.width+'px';
			image.style.left = 0 + 'px';
			image.style.top = 0 + 'px';
			image.style.filter = "Alpha(opacity=0)";
		}else {
			image.style.display = 'none';
		}
	}
}

function addRoundedIECorner(evt, t, obj){
		var image = t;
		var object, vml, classNames, data, classes = '';
		var iradius = 0, iborder = 0, icolor = '', newClasses = '';
		var maxdim = 0, mindim = 0, i, j, child, tmp = '';
		var radius = null, display = "", flt = "", color = '';
		var tl = 1, tr = 1, bl = 1, br = 1;

		iradius = 16; color = '0000ff';
		tl = 1;	tr = 1; bl = 1; br = 1; iborder = 0;
		object = image.parentNode;
		classes = image.className.split(' ');
		for(j=0;j<classes.length;j++) {
			if(classes[j].indexOf("iradius") == 0) {
				iradius = classes[j].substring(7);
			}else if(classes[j].indexOf("iborder") == 0) {
				iborder = classes[j].substring(7);
			}else if(classes[j].indexOf("icolor") == 0) {
				icolor = classes[j].substring(6);
			}else if(classes[j].indexOf("iradiae") == 0) {
				tmp = classes[j].substring(7);
				tl = (tmp.substr(0,1)!="1"?0:1);
				tr = (tmp.substr(1,1)!="1"?0:1);
				bl = (tmp.substr(2,1)!="1"?0:1);
				br = (tmp.substr(3,1)!="1"?0:1);
			}
		} newClasses = '';
		for(j=0;j<classes.length;j++) {
			if(classes[j] != "corners") {
				if(newClasses) { newClasses += ' '; }
				newClasses += classes[j];
			}
		}

		maxdim = Math.min(image.width,image.height)/2;
		mindim = (iradius==0?16:iradius);
		radius = Math.min(maxdim,mindim);
		iborder = Math.min(iborder,2);
		color = (icolor.match(/^[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]$/i)?icolor:color);
		display = (image.currentStyle.display.toLowerCase()=='block')?'block':'inline-block';
		vml = document.createElement(['<var style="zoom:1;overflow:hidden;display:' + display + ';width:' + image.width + 'px;height:' + image.height + 'px;padding:0;">'].join(''));
		flt =  image.currentStyle.styleFloat.toLowerCase();
		display = (flt=='left'||flt=='right')?'inline':display;
		var path = "m 0," + radius;
		if(bl==1) {path += " l 0," + (image.height-radius) + " qy " + radius + "," + image.height;}else {path += " l 0," + image.height;}
		if(br==1) {path += " l " + (image.width-radius) + "," + image.height + " qx " + image.width + "," + (image.height-radius);}else {path += " l " + image.width + "," + image.height;}
		if(tr==1) {path += " l " + image.width + "," + radius + " qy " + (image.width-radius) + ",0";}else {path += " l " + image.width + ",0";}
		if(tl==1) {path += " l " + radius + ",0 qx 0," + radius;}else {path += " l 0,0";}
		path += " x e"; data = '<v:shape strokeweight="'+iborder+'px" stroked="'+(iborder>0?"t":"f")+'" strokecolor="#'+color+'" filled="t" fillcolor="#ffffff" coordorigin="0,0" coordsize="' + image.width + ',' + image.height + '" path="' + path + '" style="zoom:1;margin:-1px 0 0 -1px;padding: 0;display:' + display + ';width:' + image.width + 'px;height:' + image.height + 'px;"><v:fill src="' + image.src + '" type="frame" /></v:shape>';
		vml.innerHTML = [data ].join('');
		vml.className = newClasses;
		vml.style.cssText = image.style.cssText;
		vml.style.visibility = 'visible';
		vml.src = image.src; vml.alt = image.alt;
		if(image.id!='') vml.id = image.id;
		if(image.title!='') vml.title = image.title;
		if(image.getAttribute('onclick')!='') vml.setAttribute('onclick',image.getAttribute('onclick'));
		image.insertAdjacentElement('BeforeBegin',vml);
		if(image.getAttribute("usemap")) {
			object.style.position = 'relative';
			object.style.height = image.height+'px';
			object.style.width = image.width+'px';
			image.left = 0; image.top = 0;
			image.style.position = 'absolute';
			image.style.height = image.height+'px';
			image.style.width = image.width+'px';
			image.style.left = 0 + 'px';
			image.style.top = 0 + 'px';
			image.style.filter = "Alpha(opacity=0)";
		}else {
			image.style.display = 'none';
		}

}

function addRoundedCorner(obj){
		var image = obj?obj:this;

		var object, canvas, context, classNames, classes = '';
		var iradius = 0, iborder = 0, icolor = '', newClasses = '';
		var maxdim = 0, mindim = 0, i, j, child, tmp = '';
		var tl = 1, tr = 1, bl = 1, br = 1, color = '';

		iradius = 16; color = '0000ff';
		tl = 1;	tr = 1; bl = 1; br = 1; iborder = 0;
		object = image.parentNode;

		canvas = document.createElement('canvas');
		if(canvas.getContext) {
			classes = image.className.split(' ');
			for(j=0;j<classes.length;j++) {
				if(classes[j].indexOf("iradius") == 0) {
					iradius = classes[j].substring(7);
				}else if(classes[j].indexOf("iborder") == 0) {
					iborder = classes[j].substring(7);
				}else if(classes[j].indexOf("icolor") == 0) {
					icolor = classes[j].substring(6);
				}else if(classes[j].indexOf("iradiae") == 0) {
					tmp = classes[j].substring(7);
					tl = (tmp.substr(0,1)!="1"?0:1);
					tr = (tmp.substr(1,1)!="1"?0:1);
					bl = (tmp.substr(2,1)!="1"?0:1);
					br = (tmp.substr(3,1)!="1"?0:1);
				}
			} newClasses = '';
			for(j=0;j<classes.length;j++) {
				if(classes[j] != "corners") {
					if(newClasses) { newClasses += ' '; }
					newClasses += classes[j];
				}
			}
			canvas.className = newClasses;
			canvas.style.cssText = image.style.cssText;
			canvas.style.height = image.height+'px';
			canvas.style.width = image.width+'px';
			canvas.height = image.height;
			canvas.width = image.width;
			canvas.src = image.src; canvas.alt = image.alt;
			if(image.id!='') canvas.id = image.id;
			if(image.title!='') canvas.title = image.title;
			if(image.getAttribute('onclick')!='') canvas.setAttribute('onclick',image.getAttribute('onclick'));
			maxdim = Math.min(canvas.width,canvas.height)/2;
			mindim = (iradius==0?16:iradius);
			iradius = Math.min(maxdim,mindim);
			iborder = Math.min(iborder*2,iradius);
			color = (icolor.match(/^[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]$/i)?icolor:color);
			context = canvas.getContext("2d");
			if(image.getAttribute("usemap")) {
				object.style.position = 'relative';
				object.style.height = image.height+'px';
				object.style.width = image.width+'px';
				canvas.left = 0; canvas.top = 0;
				canvas.style.position = 'absolute';
				canvas.style.left = 0 + 'px';
				canvas.style.top = 0 + 'px';
				image.left = 0; image.top = 0;
				image.style.position = 'absolute';
				image.style.height = image.height+'px';
				image.style.width = image.width+'px';
				image.style.left = 0 + 'px';
				image.style.top = 0 + 'px';
				image.style.opacity = 0;
				object.insertBefore(canvas,image);
			}else {
				object.replaceChild(canvas,image);
			}
			context.clearRect(0,0,canvas.width,canvas.height);
			globalCompositeOperation = "source-in";
			roundedCorners(context,canvas.width,canvas.height,iradius,tl,tr,bl,br);
			context.clip();
			context.fillStyle = 'rgba(0,0,0,0)';
			context.fillRect(0,0,canvas.width,canvas.height);
			context.drawImage(image,0,0,canvas.width,canvas.height);
			if(iborder>0) {
				roundedCorners(context,canvas.width,canvas.height,iradius,tl,tr,bl,br);
				context.strokeStyle = '#'+color;
				context.lineWidth = iborder;
				context.stroke();
			}
			canvas.style.visibility = 'visible';
		}
}

function addRoundedCorners() {
	var image, object, canvas, context, classNames, classes = '';
	var iradius = 0, iborder = 0, icolor = '', newClasses = '';
	var maxdim = 0, mindim = 0, i, j, child, tmp = '';
	var tl = 1, tr = 1, bl = 1, br = 1, color = '';
	var children = document.getElementsByTagName('img');
	var theimages = new Array();
	for(i=0;i<children.length;i++) {
		child = children[i];
		classNames = child.className.split(' ');
		for(j=0;j<classNames.length; j++) {
			if (classNames[j] == 'corners') {theimages.push(child); break; }
		}
	}
	for(i=0;i<theimages.length;i++) {
		image = theimages[i]; iradius = 16; color = '0000ff';
		tl = 1;	tr = 1; bl = 1; br = 1; iborder = 0;
		object = image.parentNode;
		canvas = document.createElement('canvas');
		if(canvas.getContext) {
			classes = image.className.split(' ');
			for(j=0;j<classes.length;j++) {
				if(classes[j].indexOf("iradius") == 0) {
					iradius = classes[j].substring(7);
				}else if(classes[j].indexOf("iborder") == 0) {
					iborder = classes[j].substring(7);
				}else if(classes[j].indexOf("icolor") == 0) {
					icolor = classes[j].substring(6);
				}else if(classes[j].indexOf("iradiae") == 0) {
					tmp = classes[j].substring(7);
					tl = (tmp.substr(0,1)!="1"?0:1);
					tr = (tmp.substr(1,1)!="1"?0:1);
					bl = (tmp.substr(2,1)!="1"?0:1);
					br = (tmp.substr(3,1)!="1"?0:1);
				}
			} newClasses = '';
			for(j=0;j<classes.length;j++) {
				if(classes[j] != "corners") {
					if(newClasses) { newClasses += ' '; }
					newClasses += classes[j];
				}
			}
			canvas.className = newClasses;
			canvas.style.cssText = image.style.cssText;
			canvas.style.height = image.height+'px';
			canvas.style.width = image.width+'px';
			canvas.height = image.height;
			canvas.width = image.width;
			canvas.src = image.src; canvas.alt = image.alt;
			if(image.id!='') canvas.id = image.id;
			if(image.title!='') canvas.title = image.title;
			if(image.getAttribute('onclick')!='') canvas.setAttribute('onclick',image.getAttribute('onclick'));
			maxdim = Math.min(canvas.width,canvas.height)/2;
			mindim = (iradius==0?16:iradius);
			iradius = Math.min(maxdim,mindim);
			iborder = Math.min(iborder*2,iradius);
			color = (icolor.match(/^[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]$/i)?icolor:color);
			context = canvas.getContext("2d");
			if(image.getAttribute("usemap")) {
				object.style.position = 'relative';
				object.style.height = image.height+'px';
				object.style.width = image.width+'px';
				canvas.left = 0; canvas.top = 0;
				canvas.style.position = 'absolute';
				canvas.style.left = 0 + 'px';
				canvas.style.top = 0 + 'px';
				image.left = 0; image.top = 0;
				image.style.position = 'absolute';
				image.style.height = image.height+'px';
				image.style.width = image.width+'px';
				image.style.left = 0 + 'px';
				image.style.top = 0 + 'px';
				image.style.opacity = 0;
				object.insertBefore(canvas,image);
			}else {
				object.replaceChild(canvas,image);
			}
			context.clearRect(0,0,canvas.width,canvas.height);
			globalCompositeOperation = "source-in";
			roundedCorners(context,canvas.width,canvas.height,iradius,tl,tr,bl,br);
			context.clip();
			context.fillStyle = 'rgba(0,0,0,0)';
			context.fillRect(0,0,canvas.width,canvas.height);
			context.drawImage(image,0,0,canvas.width,canvas.height);
			if(iborder>0) {
				roundedCorners(context,canvas.width,canvas.height,iradius,tl,tr,bl,br);
				context.strokeStyle = '#'+color;
				context.lineWidth = iborder;
				context.stroke();
			}
			canvas.style.visibility = 'visible';
		}
	}
}
/*
	Lightbox JS: Fullsize Image Overlays
	by Lokesh Dhakar - http://www.huddletogether.com

	For more information on this script, visit:
	http://huddletogether.com/projects/lightbox/

	Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/
	(basically, do anything you want, just leave my name and link)

	Table of Contents
	-----------------
	Configuration

	Functions
	- getPageScroll()
	- getPageSize()
	- pause()
	- getKey()
	- listenKey()
	- showLightbox()
	- hideLightbox()
	- initLightbox()
	- addLoadEvent()

	Function Calls
	- addLoadEvent(initLightbox)

*/

/*

//
// Configuration
//

// If you would like to use a custom loading image or close button reference them in the next two lines.
var loadingImage = '/images/log/icon_image_loading.gif';
var closeButton = '/images/log/btn_close.gif';
var showOriginButton = '/images/log/btn_image_show_origin.gif';
var showMemoButton = '/images/log/btn_image_show_memo.gif';
//var showPrevButton = '/images/log/btn_image_prev.gif';
//var showNextButton = '/images/log/btn_image_next.gif';


//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.org
//
function getPageScroll(){

	var yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}

	arrayPageScroll = new Array('',yScroll)
	return arrayPageScroll;
}



//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
function getPageSize(){

	var xScroll, yScroll;

	if (window.innerHeight && window.scrollMaxY) {
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}

	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}

	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else {
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}


	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
	return arrayPageSize;
}


//
// pause(numberMillis)
// Pauses code execution for specified time. Uses busy code, not good.
// Code from http://www.faqts.com/knowledge_base/view.phtml/aid/1602
//
function pause(numberMillis) {
	var now = new Date();
	var exitTime = now.getTime() + numberMillis;
	while (true) {
		now = new Date();
		if (now.getTime() > exitTime)
			return;
	}
}

//
// getKey(key)
// Gets keycode. If 'x' is pressed then it hides the lightbox.
//

function getKey(e){
	if (e == null) { // ie
		keycode = event.keyCode;
	} else { // mozilla
		keycode = e.which;
	}
	key = String.fromCharCode(keycode).toLowerCase();

	if(key == 'x'){ hideLightbox(); }
}


//
// listenKey()
//
function listenKey () {	document.onkeypress = getKey; }


//
// showLightbox()
// Preloads images. Pleaces new image in lightbox then centers and displays.
//
function showLightbox(objLink)
{
	// prep objects
	var objOverlay = document.getElementById('overlay');
	var objLightbox = document.getElementById('lightbox');
	var objCaption = document.getElementById('lightboxCaption');
	var objImage = document.getElementById('lightboxImage');
	var objImageBox = document.getElementById('lightImageBox');
	var objLoadingImage = document.getElementById('loadingImage');
	var objLightboxDetails = document.getElementById('lightboxDetails');
	var objShowOriginButton = document.getElementById('showOriginButton');
	var objShowMemoButton = document.getElementById('showMemoButton');
	var objShowPrevBtn = document.getElementById('linkPrev');
	var objShowNextBtn = document.getElementById('linkNext');
	var objLightLinkbox = document.getElementById('lightLinkbox');

	var item_id = Ext.get(objLink).parent("div.item", true).id;
	var title = logCtrl.items.get(item_id).data.text_memo;
	if(title) title = title.replace(/<br>|<br\/>/, "");

	objImage.style.display = 'none';

	var plus = 0;
	var widthChanged = false;

	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();
	var prevImage, nextImage;

	// center loadingImage if it exists
	if (objLoadingImage) {
		objLoadingImage.style.top = (arrayPageScroll[1] + ((arrayPageSize[3] - 35 - objLoadingImage.height) / 2) + 'px');
		objLoadingImage.style.left = (((arrayPageSize[0] - 20 - objLoadingImage.width) / 2) + 'px');
		objLoadingImage.style.display = 'block';
	}

	// set height of Overlay to take up whole page and show
	objOverlay.style.height = (arrayPageSize[1] + 'px');
	objOverlay.style.display = 'block';

	//objImage.src = "";
	objShowOriginButton.onclick = function(){window.open(objLink.href, "showOrigin"); return false;}

	// preload image
	imgPreload = new Image();

	imgPreload.onload=function(){
		var defaultHeight = imgPreload.height;
		objImage.src = objLink.href;

		// IE7에서 버그 해결;
		if(Ext.isIE7){
			objImage.style.display = "block";
		}
		else{
			objImage.onload = function(){
				this.style.display = 'block';
			}
		}

		if(imgPreload.width >= 653){
			objImage.style.width = 653+"px";
			imgPreload.width = 653;
			widthChanged = true;
		}
		else
			objImage.style.width = "auto";

		if(imgPreload.height >= 435){
			if(!widthChanged)
				plus = imgPreload.height / 3.4;

			imgPreload.height = 435 + plus;
			//objImage.style.height = 435+"px";
			//alert(Ext.get(objImage).getWidth());
			//imgPreload.width = Ext.get(objImage).getWidth();
		}

		// center lightbox and make sure that the top and left values are not negative
		// and the image placed outside the viewport
		var lightboxTop = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - imgPreload.height) / 2);
		var lightboxLeft = ((arrayPageSize[0] - 20 - imgPreload.width) / 2);

		objLightbox.style.top = (lightboxTop < 0) ? "0px" : lightboxTop + "px";
		objLightbox.style.left = (lightboxLeft < 0) ? "0px" : lightboxLeft + "px";

		objLightboxDetails.style.width = imgPreload.width -30 + 'px';

		// 링크 박스 크기 지정

		objLightLinkbox.style.width = (imgPreload.width+88)+"px";
		objLightLinkbox.style.height = widthChanged?(imgPreload.height-28)+"px":(defaultHeight)+"px";

		objImageBox.style.width = (imgPreload.width)+"px";
		objImageBox.style.height = widthChanged?(imgPreload.height-28)+"px":(defaultHeight)+"px";

		if(title){
		//if(objLink.getAttribute('title')){
			objCaption.style.display = 'block';
			//objCaption.style.width = imgPreload.width + 'px';
			//objCaption.innerHTML = objLink.getAttribute('title');

			// 추후 수정
			//if(Ext.util.TextMetrics.createInstance(objCaption).getWidth(title) > imgPreload.width -30){
				// 길이를 어떻게 잘라야 할까.
			}	//
			objCaption.innerHTML = title;


		} else {
			objCaption.style.display = 'none';
		}

		// A small pause between the image loading and displaying is required with IE,
		// this prevents the previous image displaying for a short burst causing flicker.
		if (navigator.appVersion.indexOf("MSIE")!=-1){
			pause(250);
		}

		if (objLoadingImage) {	objLoadingImage.style.display = 'none'; }

		// Hide select boxes as they will 'peek' through the image in IE
		selects = document.getElementsByTagName("select");
        for (i = 0; i != selects.length; i++) {
                selects[i].style.visibility = "hidden";
        }


		objLightbox.style.display = 'block';

		// After image is loaded, update the overlay height as the new image might have
		// increased the overall page height.
		arrayPageSize = getPageSize();
		objOverlay.style.height = (arrayPageSize[1] + 'px');

		// Check for 'x' keypress
		//listenKey();

		// Navi set
		var index = parseInt(objLink.id.replace("image_", ""));

		if(index != 0){
			prevImage = window.imageArr.get("image_"+(index-1));
			objShowPrevBtn.onclick = (function(){showLightbox(prevImage); return false;});
			objShowPrevBtn.style.display = "block";
		}
		else
			objShowPrevBtn.style.display = "none";

		if(index != window.imageArr.length - 1){
			nextImage = window.imageArr.get("image_"+(index+1));
			objShowNextBtn.onclick = (function(){showLightbox(nextImage); return false;});
			objShowNextBtn.style.display = "block";
		}
		else
			objShowNextBtn.style.display = "none";


		return false;
	}

	imgPreload.src = objLink.href;

}





//
// hideLightbox()
//
function hideLightbox()
{
	// get objects
	objOverlay = document.getElementById('overlay');
	objLightbox = document.getElementById('lightbox');

	// hide lightbox and overlay
	objOverlay.style.display = 'none';
	objLightbox.style.display = 'none';

	// make select boxes visible
	selects = document.getElementsByTagName("select");
    for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "visible";
	}

	// disable keypress listener
	document.onkeypress = '';
}




//
// initLightbox()
// Function runs on window load, going through link tags looking for rel="lightbox".
// These links receive onclick events that enable the lightbox display for their targets.
// The function also inserts html markup at the top of the page which will be used as a
// container for the overlay pattern and the inline image.
//
function initLightbox()
{
	if(!window.imageArr)
		window.imageArr = new Ext.util.MixedCollection(false, function(el){return el.id});

	if (!document.getElementsByTagName){ return; }
	var anchors = document.getElementsByTagName("a");
	var index = window.imageArr.length;
	// loop through all anchor tags
	for (var i=0; i<anchors.length; i++)
	{
		var anchor = anchors[i];

		if (anchor.getAttribute("href") && (anchor.getAttribute("rel") == "lightbox"))
		{
			if(anchor.onclick)
			{ // 이미 추가 한게 있으면 continue
				continue;
			}
			anchor.setAttribute("id", "image_"+index++);
			window.imageArr.add(anchor);
			anchor.onclick = function () {showLightbox(this); return false;}
		}
	}

	// the rest of this code inserts html at the top of the page that looks like this:
	//
	// <div id="overlay">
	//		<a href="#" onclick="hideLightbox(); return false;"><img id="loadingImage" /></a>
	//	</div>
	// <div id="lightbox">
	//		<a href="#" onclick="hideLightbox(); return false;" title="Click anywhere to close image">
	//			<img id="closeButton" />
	//			<img id="lightboxImage" />
	//		</a>
	//		<div id="lightboxDetails">
	//			<div id="lightboxCaption"></div>
	//			<div id="keyboardMsg"></div>
	//		</div>
	// </div>
	if(window.firstCheck)
		return;

	var objBody = document.getElementsByTagName("body").item(0);

	// create overlay div and hardcode some functional styles (aesthetic styles are in CSS file)
	var objOverlay = document.createElement("div");
	objOverlay.setAttribute('id','overlay');
	//objOverlay.onclick = function () {hideLightbox(); return false;}
	objOverlay.style.display = 'none';
	objOverlay.style.position = 'absolute';
	objOverlay.style.top = '0';
	objOverlay.style.left = '0';
	objOverlay.style.zIndex = '90';
 	objOverlay.style.width = '100%';
	objBody.insertBefore(objOverlay, objBody.firstChild);

	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();

	// preload and create loader image
	var imgPreloader = new Image();

	// if loader image found, create link to hide lightbox and create loadingimage
	imgPreloader.onload=function(){

		var objLoadingImageLink = document.createElement("a");
		objLoadingImageLink.setAttribute('href','#');
		//objLoadingImageLink.onclick = function () {hideLightbox(); return false;}
		objOverlay.appendChild(objLoadingImageLink);

		var objLoadingImage = document.createElement("img");
		objLoadingImage.src = loadingImage;
		objLoadingImage.setAttribute('id','loadingImage');
		objLoadingImage.style.position = 'absolute';
		objLoadingImage.style.zIndex = '150';
		objLoadingImageLink.appendChild(objLoadingImage);

		imgPreloader.onload=function(){};	//	clear onLoad, as IE will flip out w/animated gifs

		return false;
	}

	imgPreloader.src = loadingImage;

	// create lightbox div, same note about styles as above
	var objLightbox = document.createElement("div");
	objLightbox.setAttribute('id','lightbox');
	objLightbox.style.display = 'none';
	objLightbox.style.position = 'absolute';
	objLightbox.style.zIndex = '100';
	objBody.insertBefore(objLightbox, objOverlay.nextSibling);

	// create details div, a container for the caption and keyboard message
	var objLightboxDetails = document.createElement("div");
	objLightboxDetails.setAttribute('id','lightboxDetails');
	objLightbox.appendChild(objLightboxDetails);

	// create caption
	var objCaption = document.createElement("div");
	objCaption.setAttribute('id','lightboxCaption');
	objCaption.style.display = 'none';
	objLightboxDetails.appendChild(objCaption);

	// create link
	var objLink = document.createElement("p");
	objLink.setAttribute('id', 'lightImageBox');
	//objLink.setAttribute('href','#');
	//objLink.setAttribute('title','닫으려면 클릭해주세요');
	objLink.onclick = function () {return false;}
	objLightbox.appendChild(objLink);


	// create image
	var objImage = document.createElement("img");
	objImage.setAttribute('id','lightboxImage');
	objLink.appendChild(objImage);


	var objLinkbox = Ext.fly(objLightbox).insertHtml("beforeEnd", '<div id="lightLinkbox"><table cellspacing="0" cellpadding="0"><tbody><tr><td><a id="linkPrev" class="linkPrev"><span></span></a></td><td><a id="linkNext" class="linkNext"><span></span></a></td></tr></tbody></table></div>');

	if(isIE){
	var objLinkPrevButton = document.getElementById('linkPrev');
	var objLinkNextButton = document.getElementById('linkNext');

	objLinkPrevButton.onmouseover = function(){this.style.backgroundImage= "url('../images/log/btn_image_prev_over.gif')"};
	objLinkPrevButton.onmouseout = function(){this.style.backgroundImage= "url('../images/log/btn_image_prev.gif')"};

	objLinkNextButton.onmouseover = function(){this.style.backgroundImage= "url('../images/log/btn_image_next_over.gif')"};
	objLinkNextButton.onmouseout = function(){this.style.backgroundImage= "url('../images/log/btn_image_next.gif')"};
	}

	var objButtonBox = document.createElement("div");
	objButtonBox.setAttribute('id', 'lightButtonBox');
	objLightbox.appendChild(objButtonBox);

	var objShowOriginButton = document.createElement("img");
	objShowOriginButton.src = showOriginButton;
	objShowOriginButton.setAttribute('id', 'showOriginButton');
	objShowOriginButton.setAttribute('class','btn');
	objButtonBox.appendChild(objShowOriginButton);

	var objShowMemoButton = document.createElement("img");
	objShowMemoButton.src = showMemoButton;
	objShowMemoButton.setAttribute('id', 'showMemoButton');
	objShowMemoButton.setAttribute('class','btn');
	objShowMemoButton.onclick = function(){hideLightbox(); return false;}
	objButtonBox.appendChild(objShowMemoButton);


	// preload and create close button image
	var imgPreloadCloseButton = new Image();

	// if close button image found,
	imgPreloadCloseButton.onload=function(){

		var objCloseButton = document.createElement("img");
		objCloseButton.src = closeButton;
		objCloseButton.setAttribute('id','closeButton');
		objCloseButton.setAttribute('class','btn');
		objCloseButton.onclick = function () {hideLightbox(); return false;}
		objLightbox.appendChild(objCloseButton);

		return false;
	}

	imgPreloadCloseButton.src = closeButton;
	firstCheck = true;
}*/




//
// addLoadEvent()
// Adds event to window.onload without overwriting currently assigned onload functions.
// Function found at Simon Willison's weblog - http://simon.incutio.com/
//
/*function addLoadEvent(func)
{
	var oldonload = window.onload;
	if (typeof window.onload != 'function'){
    	window.onload = func;
	} else {
		window.onload = function(){
		oldonload();
		func();
		}
	}

}
*/


//addLoadEvent(initLightbox);	// run initLightbox onLoad

/*Mys.historyCtrl = {
	template : new Ext.Template('<p><a href="#" onclick="return false"><span class="bold">{userName}</span>님이 {text}</a></p>'),

	initialize : function(config){
		Ext.apply(this, config);
		if(!this.data.length)
			return;

		this.el = Ext.get('history');

		this.set();
	},

	set : function(){
		this.listEls =  this.el.select('p a', true);
		this.listEls.on("click", this.confirm, this);
	},

	confirm : function(evt, t){
		if(this.loadingFlag)
		{
			alert("지금 처리 중입니다. 잠시만 기다려 주시기 바랍니다.");
			return;
		}
		this.userName = this.data[0].name;
		var inviteId = this.data[0].target_id;
		var action = this.data[0].action;

		this.loadingFlag = true;
		if(action && action.match(/[1-2]/)){
			this.read(false);

			return;
		}
		var answer = confirm(this.userName+"님이 친구로 초대하셨습니다. 수락하시겠습니까? (거절하시려면 취소 버튼을 눌려주세요)");

		this.isAccept = answer?true:false;

		Global.modelFriend.accept(this.isAccept, inviteId, this.cbAccept, this);
	},

	cbAccept : function(data){
		if(data.response.code != 100){alert(data.response.message); return}

		this.read(true);
	},

	read : function(alertFlag){
		var historyId = this.data[0].history_id;
		Global.modelHistory.read(historyId, this.cbRead, this, alertFlag);
	},

	cbRead : function(data, alertFlag){
		this.loadingFlag = false;

		if(data.response.code != 100){alert(data.response.message); return}

		if(alertFlag){
			var ment = this.userName+"님";
			ment += this.isAccept?"과 친구가 되셨습니다.":"의 친구 신청이 거절되었습니다.";

			alert(ment);
		}
		this.removeList();

		this.insertList();
	},

	removeList : function(){
		this.data.splice(0, 1);

		this.listEls.elements[0].remove();
	},

	insertList : function(){
		if(!this.data.length){
			this.el.remove();
			return;
		}

		var text;

		if(!this.data[0].action)
		{
			text = "친구로 초대하셨습니다.";
		}
		else
		{
			switch(this.data[0].action)
			{
				case "1" :
					text = "친구를 수락하셨습니다.";
					break;

				case "2" :
					text = "친구를 거절하셨습니다.";
					break;
			}
		}

		var data = {userName : this.data[0].name, text : text};
		var html = this.template.apply(data);
		this.el.insertHtml("beforeEnd", html);

		this.set();
	}

};*/

/*Mys.guideCtrl = function() {
	this.init();
}

Mys.guideCtrl.prototype =
{
	init : function() {
		this.greetingForm = Ext.get("greetingForm");
		if(!(guideState & 1))
			Ext.get("firstGuide").on("click", function(){this.setGuide(guideState, 1);}, this);
		if(!(guideState & 2))
			Ext.get("secondGuide").on("click", function(){this.setGuide(guideState, 2);}, this);
		if(guideState != 3)
			Ext.get("miniClose").child("img").on("click", function(){this.setGuide(0,3);}, this);
	},

	setGuide : function(guideState, state) {
		if(state == 1)
			Global.modelLogItem.modifyGuide(guideState + state, this.cbGuideGreeting, this);
		else {
			this.url = null;
			if(state == 2)
				this.url = "http://" + PAGE_USER_DOMAIN + "." + DOMAIN + "/skin";
			if(state == 3) {
				if(confirm("다음부터는 가이드를 열지 않습니다."))
					Ext.get("miniGuide").remove();
				else
					return;
			}
			Global.modelLogItem.modifyGuide(guideState + state, this.cbSetGuide, this);
		}
	},

	cbGuideGreeting : function(data) {
		this.greetingForm.dom.submit();
	},

	cbSetGuide : function(data) {
		if(this.url)
			window.location = this.url;
	}
}*/
