Mys.barCtrlItem = function(id)
{
  this.el = Ext.get(id);
};
Mys.barCtrlItem.prototype =
{
  start : 0
};


Mys.barCtrl = function(config)
{
  Ext.apply(this, config);
  this.init();
};


Mys.barCtrl.prototype =
{
  BAR_GRAPH_WIDTH: 137

  ,init : function()
  {
    this.barCtrlChannelPub = new Mys.barCtrlChannelPub('pch_list');
    if(LOG_USER_ID && (LOG_USER_ID == PAGE_USER_ID))
    {
      this.barCtrlChannelSec = new Mys.barCtrlChannelSec('hch_list');
      this.barCtrlTools = new Mys.barCtrlTools('tools', this.tools_fold);
      this.barCtrlFunc = new Mys.barCtrlFunc('func', this.func_fold);
    }
    else
    {
      Ext.fly("hch_list").setStyle("display","none");
      Ext.fly("tools").setStyle("display","none");
      Ext.fly("func").setStyle("display","none");
    }
    this.barCtrlFollowList = new Mys.barCtrlFollowList('following');
    this.barCtrlFollowerList = new Mys.barCtrlFollowerList('follower');
    if(Ext.fly("recent_reply"))
      this.barCtrlReply = new Mys.barCtrlReply('recent_reply', this.replyHistoryCount);
  }

};





//채널
Mys.barCtrlChannelPub = function(id)
{
  Mys.barCtrlChannelPub.superclass.constructor.call(this, id);
  this.init();
};
Ext.extend(Mys.barCtrlChannelPub, Mys.barCtrlItem,
{
  limit : 6
  ,total : 0
  ,tpl : new Ext.Template('<div class="bl_item"><a href="{user_url}"><nobr>{name_elli}</nobr></a>{new_img}</div>')
  ,searchable : 1

  ,init : function()
	{
	  this.setListEl();
	  this.el.child(".btnPrev").on("click",this.getPrev,this);
	  this.el.child(".btnNext").on("click",this.getNext,this);
	  if(this.el.child(".btnPlus"))
  	  this.el.child(".btnPlus").on("click",function(){createCh.show(this.searchable);},this);
	  this.getList();
	}

  ,setListEl : function()
  {
	  this.listEl = this.el.child(".blist");
  }

	,getList : function()
	{
	  Global.modelGroup.getChannelListByType((LOG_USER_ID == PAGE_USER_ID) ? "" : PAGE_USER_ID , this.searchable, this.start, this.limit, this.cbGetList, this);
	}

	,cbGetList : function(data)
	{
	  var items = this.getItems(data);
	  if(!items) return;
	  this.listEl.dom.innerHTML = '';
	  var html = '';
	  for(i=0;i<items.length;i++)
	  {
	    items[i].name_elli = items[i].name.ellipsis(20, "..");
	    items[i].user_url = "http://"+items[i].mydomain+"."+DOMAIN;
	    items[i].new_img = '';
	    if(items[i].last_add_date)
	    {
	      if(!items[i].last_visit_date)
    	    items[i].new_img = '<img class="newi" src="/images/main_bar/icon_new_s.gif">'
    	  else if(Date.parseString(items[i].last_visit_date) < Date.parseString(items[i].last_add_date))
    	    items[i].new_img = '<img class="newi" src="/images/main_bar/icon_new_s.gif">'
	    }
	    html += this.tpl.apply(this.parseItem(items[i]));
	  }
    this.listEl.update(html);
    this.updateCounter(this.getTotal(data));
	}

  ,getSubstring : function(str)
  {
    var length = str.length;

    for(idx=0;idx<length-1;idx++)
    {
      if(str.getByte() <= 14)
        return str;
      else
        str = str.substring(0,str.length-1);
    }
  }

  ,getItems : function(data)
  {
    return data.response.group ? data.response.group : null;
  }

  ,getTotal : function(data)
  {
    return data.response.total ? parseInt(data.response.total,10) : 0;
  }

	,parseItem : function(item)
	{
	  return item;
	}

	,updateCounter : function(total)
	{
	  this.total = total;
    this.el.child(".cc1").update(this.start ? (this.start/this.limit +1) : 1);
    this.el.child(".cc2").update(' / '+(total ? Math.ceil(total/this.limit) : 0));
	}

  ,getNext : function()
  {
    if(this.start+this.limit > this.total) return;
    this.start += this.limit;
    this.getList();
  }

  ,getPrev : function()
  {
    if(this.start-this.limit < 0) return;
    this.start -= this.limit;
    this.getList();
  }

  ,reload: function()
  {
    this.start = 0;
    this.getList();
  }
});







//개인채널
Mys.barCtrlChannelSec = function(id)
{
  Mys.barCtrlChannelSec.superclass.constructor.call(this, id);
};
Ext.extend(Mys.barCtrlChannelSec, Mys.barCtrlChannelPub,
{
  searchable : 0
  ,tpl : new Ext.Template('<div class="bl_item pri"><a href="{user_url}"><nobr>{name_elli}</nobr></a>{new_img}</div>')
});





//최근 댓글
Mys.barCtrlReply = function(id,count)
{
  Mys.barCtrlReply.superclass.constructor.call(this, id);
  this.total = count;
};
Ext.extend(Mys.barCtrlReply, Mys.barCtrlChannelPub,
{
  tpl : new Ext.Template('<div class="bl_item rpy"><a {moveLink} onfocus="this.blur()" href="#"><nobr>{memo_en}</nobr></a></div>')

  ,init : function()
	{
	  this.setListEl();
	  this.el.child(".btnPrev").on("click",this.getPrev,this);
	  this.el.child(".btnNext").on("click",this.getNext,this);
	  if(this.el.child(".btnPlus"))
  	  this.el.child(".btnPlus").on("click",function(){createCh.show(this.searchable);},this);
	}

  ,getList : function()
  {
  	if(!Global.modelHistory) Global.modelHistory = new Mys.Model.History;

    Global.modelHistory.getReply(PAGE_USER_ID, this.start, this.limit, this.cbGetList, this);
  }

  ,cbGetList : function(data)
  {
	  if(!data.response.history) return;
	  var items = data.response.history;
	  var html = '';
	  this.el.child(".iconNew").removeClass("dnone");
	  for(i=0;i<items.length;i++)
	  {
      items[i].moveLink = " onclick='moveLink(\"" + items[i].anc_item_id + "\", \"" + items[i].target_id + "\", \"" + items[i].history_id + "\"); return false;'";
      items[i].memo_en = items[i].memo.ellipsis("20","..");
      html += this.tpl.apply(items[i]);
	  }
    this.listEl.update(html);
    this.updateCounter(data.response.total ? data.response.total : 0);
  }
});






//구독로그
Mys.barCtrlFollowList = function(id)
{
  Mys.barCtrlFollowList.superclass.constructor.call(this, id);
};
Ext.extend(Mys.barCtrlFollowList, Mys.barCtrlChannelPub,
{
  limit : 12
  ,tpl : new Ext.Template('<div class="bl_item"><div class="itemInner {newclass}"><a href="http://{mydomain}.'+DOMAIN+'"><img width=38 height=38 src="{mylogo_enc}" alt="{name}" title="{name}"></a><div class="new"></div></div></div>')

  ,setListEl : function()
  {
	  this.listEl = this.el.child(".bflist");
  }

	,getList : function()
	{
	  Global.modelFriend.getFollow(PAGE_USER_ID, this.start, this.limit, this.cbGetList, this);
	}

	,parseItem : function(item)
	{
	  if(!item.mylogo)
	    item.mylogo_enc = "/images/icon/defaultImage.gif";
	  else
      item.mylogo_enc = item.mylogo; //'http://'+DOMAIN+'/phpThumb/phpThumb.php?src='+item.mylogo.encode()+'&w=51&h=51';

/*
	  if(!item.last_visit_date || !item.last_add_date)
	    item.newclass = "new";
	  else
  	  item.newclass = Date.parseString(item.last_visit_date) < Date.parseString(item.last_add_date) ? "new" : "";
*/
	  return item;
	}

  ,getItems : function(data)
  {
    return data.response.friend ? data.response.friend : null;
  }

  ,getTotal : function(data)
  {
    return data.response.total ? parseInt(data.response.total,10) : 0;
  }
});









//내로그 구독자
Mys.barCtrlFollowerList = function(id)
{
  Mys.barCtrlFollowerList.superclass.constructor.call(this, id);
};
Ext.extend(Mys.barCtrlFollowerList, Mys.barCtrlFollowList,
{
	getList : function()
	{
	  Global.modelFriend.getFollower(PAGE_USER_ID, this.start, this.limit, this.cbGetList, this);
	}
});









//Folding Control
Mys.barCtrlFolding = function(id, isFold)
{
  Mys.barCtrlFolding.superclass.constructor.call(this, id);
  this.isFolded = parseInt(isFold, 10) ? true : false;
  this.init();
};
Ext.extend(Mys.barCtrlFolding, Mys.barCtrlItem,
{
  limit : 4
  ,GROUP_TYPE : 0
  ,total : 0
  ,isFolded : false
  ,FOLDED_HEIGHT : 30
  ,UNFOLDED_HEIGHT : 151
  ,FOLD_TYPE : 'sb_reply_fold'

  ,init : function()
  {
    if(this.el.child(".btnFold"))
      this.initFolding();
    this.listEl = this.el.child(".bilist");
  }

  ,initFolding : function()
  {
    this.btnFoldEl = this.el.child(".btnFold");
    this.btnUnfoldEl = this.el.child(".btnUnfold");
    this.btnFoldEl.on("click", this.fold, this);
    this.btnUnfoldEl.on("click", this.fold, this);
  }

  ,fold : function(e,el)
  {
    if(this.isFolded) // UNFOLDING
    {
      this.el.setHeight(this.UNFOLDED_HEIGHT, true);
      this.el.child(".bar_bg").setHeight(this.UNFOLDED_HEIGHT-2, true);
      this.el.child(".bar_content").setHeight(this.UNFOLDED_HEIGHT-2, true);

      this.btnFoldEl.setStyle("display","block");
      this.btnUnfoldEl.setStyle("display","none");
    }
    else // FOLDING
    {
      this.el.setHeight(this.FOLDED_HEIGHT-3, true);
      this.el.child(".bar_bg").setHeight(this.FOLDED_HEIGHT-3, true);
      this.el.child(".bar_content").setHeight(this.FOLDED_HEIGHT, true);

      this.btnFoldEl.setStyle("display","none");
      this.btnUnfoldEl.setStyle("display","block");
    }
    this.isFolded = !this.isFolded;
    this.saveFold();
  }


  ,saveFold : function()
  {
    if(LOG_USER_ID && (LOG_USER_ID == PAGE_USER_ID))
      Global.modelMinilog.modifyBarFold(LOG_USER_ID, this.FOLD_TYPE, (this.isFolded ? 1 : 0), function(){}, this);
  }

});








//활용도구
Mys.barCtrlTools = function(id, isFold)
{
  Mys.barCtrlTools.superclass.constructor.call(this, id, isFold);
};
Ext.extend(Mys.barCtrlTools, Mys.barCtrlFolding,
{
  FOLD_TYPE : 'sb_help_fold'

  ,init : function()
  {
    this.initFolding();
  }
});









//추천기능
Mys.barCtrlFunc = function(id, isFold)
{
  Mys.barCtrlFunc.superclass.constructor.call(this, id, isFold);
};
Ext.extend(Mys.barCtrlFunc, Mys.barCtrlFolding,
{
  FOLD_TYPE : 'sb_guide_fold'

  ,init : function()
  {
    this.initFolding();
  }
});
