
document.domain = "daum.net";

String.prototype.trim = function() {
	return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
};
/** 
 * http://www.pangdesign.com/250
 */
Date.prototype.after = function(y, M, d, h, m, s, ms) {
	y=y||0,M=M||0,d=d||0,h=h||0,m=m||0,s=s||0,ms=ms||0;

	return new Date(this.getFullYear() + y,
                  this.getMonth() + M,
                  this.getDate() + d,
                  this.getHours() + h,
                  this.getMinutes() + m,
                  this.getSeconds() + s,
                  this.getMilliseconds() + ms
                 );
};
/*
 * setDateString("20111010"); 
 **/
var getDateFromString = function(string){
	var y=M=d=h=m=s=ms=0;
	y=string.substring(0,4) || 0;
	M=string.substring(4,6) || 0;
	d=string.substring(6,8) || 0;
	h=string.substring(8,10) || 0;
	m=string.substring(10,12) || 0;
	s=string.substring(12,14) || 0;
	ms=string.substring(14,16) || 0;
	
	return new Date(parseInt(y),parseInt(M)-1,parseInt(d),parseInt(h),parseInt(m),parseInt(s),parseInt(ms));
};
/*
 * 글자수로자르기
 * */
var cutString = function(s, n, suffix){
	return s.length>n ? s.substring(0,n)+suffix : s;
};
/*
 * daum.urlParameter와 동일한 hashParameter
 * */
var hashParameter=function(){
	var r={}, t=[], i,
		a=location.hash.substr(1).split('&');
	for(i=0;i<a.length;i+=1){t=a[i].split("=");r[t[0]]=t[1];}
	return r;
}();
var changeHashParam=function(o){
	var dest='', oldHash=location.hash;
	for(var name in o){
		if(o.hasOwnProperty(name))dest += '&'+name+'='+o[name];
	}
	dest=dest.substr(1);
	if(oldHash.indexOf(dest) > -1) return;
	
	location.hash=dest;
};
/*
 * url에 타임스탬프 붙이기
 * */
var getTimestampUrl = function(url){
	var url = url;
	url += url.indexOf("?")>-1 ? '&' : '?';
	url += 'timestamp='+new Date().getTime();
	
	return url;
};
/*
 * 권한 체크
 * LeagueAuth(callback);
 * */
var LeagueAuth=function(callback){
	//{"isLeaguetoonArtist":false,"isLeaguetoonMentor":true,"isArtist":false,"isAdmin":true}
	if(!LeagueAuth.data){
		var options={
			url : '/data/leaguetoon/my_info?'+new Date().getTime(),
			onsuccess : function(d){
				var data=eval('('+d.responseText+')');
				LeagueAuth.data=data.data;
				callback(LeagueAuth.data);
			}
		};
		new daum.Ajax(options).request();
	}else{
		callback(LeagueAuth.data);
	}
	
};
LeagueAuth.data=null;
//
// 평가시간 체크
//
var LoadJudgeTime=function(callback){
	new daum.Ajax({
		url : '/data/leaguetoon/next_date'+new Date().getTime(),
		onsuccess : function(d){
			var data=eval('('+d.responseText+')');
		}
	}).request();
};
/*
 * 싱글톤 로딩바
 * LeagueLoading.show(name|option)
 * LeagueLoading.hide(name|option)
 * */
var LeagueLoading=(function(){
	var _el, _cnt=0;
	
	function init(){
		_el=daum.createElement('<div class="league_loading" style="overflow:hidden;text-indent:-9999em;display:none;position:absolute;top:10px;left:10px;z-index:9999;width:46px;height:56px;background:url(http://m1.daumcdn.net/icon/mobile/m320/tv/2010/loading.gif) no-repeat;">로딩중...</div>');
		$$(".loading_wrap")[0].appendChild(_el);

		if(daum.Browser.ie6 || daum.Browser.ie7) setPosition();
		else daum.setStyle(_el,'position:fixed');
		
	};
	function show(name){
		if(!_el) init();
		
		++_cnt;
		daum.show(_el);
	};
	function hide(name){
		if(--_cnt==0)daum.hide(_el);
	};
	function setPosition(){
		daum.addEvent(window,'scroll',function(){
			if(daum.Element.visible(_el)){
				_el.style.top = daum.Browser.getScrollOffsets().top+10+"px";
				_el.style.left = "10px";
			}
		});
	};
	
	return {show : show, hide : hide};
})();
/*
 * 점수 특정자리에서 반올림
 * http://mwultong.blogspot.com/2007/04/round-to-float-javascript.html
 * */
function roundXL(n, digits) {
	if (digits >= 0) return parseFloat(Number(n).toFixed(digits)); // 소수부 반올림
	
	digits = Math.pow(10, digits); // 정수부 반올림
	var t = Math.round(n * digits); // digits;
	return parseFloat(t.toFixed(0));
}
/*
 * 통합멀티업로도
 * new UNI_UPLOADER({btn:el,fnName:global fn,target:form});
 */
function UNI_UPLOADER(options){
	var that=this; 
	
	that.url="/common/etc/uploader.html?callback={=callback}&target={=target}&useMov=false";
	that.options={
		btn : null,
		target : null,
		fnName : ""
	};
	daum.extend(that.options,options);
	
	that.url=that.url.replace("{=callback}",that.options.fnName).replace("{=target}",that.options.target);
	console.log(that.url);
	
	daum.addEvent(that.options.btn,'click',that.open.bind(that));
};
UNI_UPLOADER.prototype={
	open : function(){
		var that=this;
		var win = window.open(that.url,'uploadTool','height=563,width=580');
		win.focus();
	}
};

/*
 * 코카업로더
 * 코카설명-http://play.daumcorp.com/pages/viewpage.action?pageId=48273107
 * 서비스팜설명-http://play.daumcorp.com/pages/viewpage.action?pageId=44650963
 * COCA_UPLOADER({field:input,wrap:id,image:url});
 */
function COCA_UPLOADER(options){
	daum.load("http://editor.daum.net/coca/swfobject.js",render);
	
	function render(){
		var _el=(navigator.appName.indexOf("Microsoft") != -1)?window["cookCoca"]:document["cookCoca"],
			_options={
			field : null,
			wrap : "coca_uploader",
			image : "http://img-section.daum-img.net/cartoon/league/btn_league2.gif",
			width : 115,
			height : 22
		};
		daum.extend(_options,options);
		window.Coca = {
			upload: function(){
				_el.browse();
			},
			activate: function(){
				_el.activate();
			},
			remove: function(key){
				return _el.remove(key);
			},
			enableCoca: function(key){
				return _el.enableCoca();
			},
			disableCoca: function(key){
				return _el.disableCoca();
			},
			on_upload_progress: function(percent, ctx){
				_options.field.value = "이미지 업로드 중..." + percent +"%";
			},
			on_upload_wating_complete: function(name, type, ctx){
				_options.field.value = "이미지를 처리중 입니다. 잠시만 기다려 주세요.";
			},
			on_upload_finish: function(ctx){
			},
			on_upload_complete: function(result, ctx){
				var imgInfo = result.split("||");
				_options.field.value = imgInfo[1].replace("/attach/","/image/");
			}
		};
		
		 var so = new SWFObject("http://editor.daum.net/coca_service/1.1.21/coca.swf", "cookCoca", _options.width, _options.height, "9.0.28", "#ffffff");
		so.addParam("quality", "high");
		so.addParam("menu", "false");
		so.addParam("swLiveConnect", "true");
		so.addParam("allowScriptAccess", "always");
		so.addParam("scale", "noscale");
		so.addParam("salign", "LT");
		
		so.addVariable("service_farm", "use");
		so.addVariable("coca_service", "CartoonNewCoca"); 
		so.addVariable("service", "cartoon"); 
		so.addVariable("coca_ctx", "cartoon"); 
		so.addVariable("sname", "cartoon");
		so.addVariable("coca_skin", _options.image);
		so.write(_options.wrap);
	};
};
/**
 * domReady - 페이지 하단에서 실행 
 **/
function domReady(){
	Click.call();

	// 왼쪽 날개배너 불러오기
	if($("leftWingBanner")){
		///xml/cartoon/home_2011_left_banner.js
		new TemplateRender({"tmpId":"leftWingBanner","rendEl":$$(".leftWingBanner")[0],"dataUrl":"/xml/cartoon/home_2011_left_banner.js"});
	};
	// src=""일 때 로딩락이 걸리는 듯한걸 해결해가 위한...임시방편
	$$("img").each(function(o){
		if(o.getAttribute("src") == "")o.removeAttribute("src");
	});
	// ct 
//	new CT("cartoon").start();
};
/**
 * ct 함수 
 * 사용법
 * new CT(serviceName).start(); // 수집 시작
 * new CT(serviceName).stop(); // 수집은 종료. 이전 데이터 볼수 있음
 **/
var CT=function(service){
	this.service=service;
	window.ct_pid=this.getPID(); // ct에서 사용하는 페이지 id

}.members({
	getPID: function(){
		var prefix=this.service;
		var path=location.pathname.toString();
		var id=path.split("/").join("_");
		var result=prefix+id;
		
		return result;
	},
	start: function(){
		daum.load("http://s1.daumcdn.net/photo-section/lib/ct.js");
	},
	stop: function(){
		window.ct_call_stop = true;
	}
});
// 뷰어 pv
var isFirstCartoonViewerCatchPv = true;
function cartoonViewerCatchPV(){
	var iframeId = "ifrCatchPv";

	Click.call();

	if(isFirstCartoonViewerCatchPv){
		document.body.appendChild(daum.createElement('<iframe width="1" height="1" src="about:blank" id="'+iframeId+'" style="position:absolute;top:-9999em;left:-9999em;"></iframe>'));
	}

	$(iframeId).src = "http://cartoon.media.daum.net/viewerhor.html?"+new Date().getTime();
	
	isFirstCartoonViewerCatchPv = false;

}

/*클릭*/
var Click={
	call : function(){
		var service = 'cartoon';
		var ref = encodeURIComponent(document.referrer);
		var loc = encodeURIComponent(document.location);
		var tit = encodeURIComponent(document.title);
		var url = 'http://media.tiara.daum.net/pv/click-tiara.php?service='+service+'&ref='+ref+'&loc='+loc+'&tit='+tit+'&'+new Date().getTime();
		daum.load(url);
	}
};

/*
* new Dropdown($$(".USER_SORT")[0], {callback:function(){alert(this.value)}});
*/
function Dropdown(el,options){
	var that = this;
	that.uid = ++Dropdown.uid;
	that.tid;
	that.element = typeof el == 'object' ? el : document.getElementById(el);
	that.options = {
		stopEvent : true,
		callback : function(){}
	};
	
	// User defined options
	if (typeof options == 'object') {
		for (i in options) {
			that.options[i] = options[i];
		}
	}
	
	that.callback = that.options.callback;
	delete that.options.callbak;
	
	daum.addEvent(that.element, 'mouseover', that.mouseoverHandler.bind(that));
	daum.addEvent(that.element, 'mouseout', that.mouseoutHandler.bind(that));
	
	that.init();
	
}
Dropdown.uid = 0;
Dropdown.prototype = {
	value : "",
	text : "",
	handleEvent: function (e) {
		var that = this;
		switch (e.type) {
			case "mouseover":
				that.mouseoverHandler(e);
				break;
			case "mouseout":
				that.mouseoutHandler(e);
				break;
			case "click":
				that.clickHandler(e);
				break;
			case "load":
				that.loadHandler(e);
				break;
		}
	},
	init : function(){
		var that = this;
		// 레이어 만들기
		that.layer = document.createElement("ul");
		that.layer.innerHTML = that.element.innerHTML;
		daum.addClassName(that.layer,"dropdown2010_layer");
		daum.hide(that.layer);
		
		$A(that.layer.getElementsByTagName("li")).each(function(o){
			daum.addEvent(o, 'click', that.clickHandler.bind(that));
		});
		daum.addEvent(that.layer, 'mouseover', that.mouseoverHandler.bind(that));
		daum.addEvent(that.layer, 'mouseout', that.mouseoutHandler.bind(that));
		
		var selectedElement = daum.getElementsByClassName(that.element, "selected")[0];
		if(selectedElement) that.select(selectedElement);
		
		daum.addEvent(window, 'load', that.loadHandler.bind(that));
	},
	makeLayer : function(){
		var that = this;
		document.body.appendChild(that.layer);
		daum.setWidth(that.layer, that.element.clientWidth);
		that.refresh();
	},
	select : function(el){
		var that = this;
		that.value = el.getAttribute("value");
		that.text = el.getElementsByTagName("a")[0].innerHTML;
		
		var newEl = document.createElement("li");
		newEl.innerHTML = el.innerHTML;
		
		that.element.insertBefore(newEl, daum.getFirstChild(that.element));
		
		that.callback();
	},
	setValue : function(value){
		var that = this;
		
		$A(that.element.getElementsByTagName("li")).each(function(el){
			if(value == el.getAttribute("value")){
				that.select(el)
			}
		});
	},
	loadHandler : function(e){
		var that = this;
		that.makeLayer();
	},
	clickHandler : function(e){
		var that = this;
		if(that.options.stopEvent){
			daum.stopEvent(e);
		}
		
		var selected = (e.target||e.srcElement).parentNode;
		
		if(selected.tagName.toLowerCase() != "li") return;
		
		that.select(selected);
		that.hideList();
		
	},
	mouseoverHandler : function(){
		var that = this;
		that.showList();
		clearTimeout(that.tid);
	},
	mouseoutHandler : function(){
		var that = this;
		that.tid = setTimeout(that.hideList.bind(that),200);
	},
	showList : function(){
		var that = this;
		that.refresh();
		daum.show(that.layer);
	},
	hideList : function(){
		var that = this;
		daum.hide(that.layer);
	},
	refresh : function(){
		var that = this;
		var pos = daum.Element.getCoords(that.element);
		var top = pos.top + that.element.offsetHeight + 1;
		var left = pos.left;
		daum.setPosition(that.layer, left, top);
	}
	
}


/**
* @constructor
* @name daum.ToonThumbList
*/
daum.ToonThumbList = function(wrap,template,data,options){
	this.wrap = wrap;
	this.tmp = template;
	this.data = data;

	this.options = {
		cntPerPage : 6,
		startPage : 1
	};
	daum.extend(this.options,options);

	this.cntTotalItem = this.data.length;
	this.lastPageNum = Math.ceil(this.cntTotalItem/this.options.cntPerPage);
	this.recentPageNum = 1;

	this.init();
}
daum.ToonThumbList.prototype = {
	/**
	   init
	 * @function
	 * @private
	 */
	init: function(){
		this.go(this.options.startPage);
	},
	go : function(n){
		if(!this.isBoundary(n)) return;

		this.displayRecentPage(n);
		this.recentPageNum = n;
	},
	displayRecentPage: function(n){
		var html = '';
		var startNum = (n-1)*this.options.cntPerPage;
		var endNum = (startNum+this.options.cntPerPage) > this.cntTotalItem ? this.cntTotalItem : (startNum+this.options.cntPerPage);
		var num = this.options.cntPerPage/2;
		for(var i = startNum; i<endNum; i++){

			if(i%num==(num-1)) this.data[i]['class'] = 'fst';

			html += this.tmp.evaluate(this.data[i]);
		}
		this.wrap.innerHTML = html;
	},
	next : function(){
		var nextNum = this.recentPageNum + 1;
		if(!this.isBoundary(nextNum)) return;

		this.go(nextNum);
	},
	prev : function(){
		var nextNum = this.recentPageNum - 1;
		if(!this.isBoundary(nextNum)) return;

		this.go(nextNum);
	},
	isBoundary : function(n){
		if(n > 0 && n <= this.lastPageNum) return true;
		return false;
	}
}
/**
* @constructor
* @name daum.JsPaging
* @class
* @param Element 페이징이 들어가게될 Element객체
* @param Object Options
* @return  JsPaging
* @version 1.0.0
* <div id="paging02"></div>
* &lt;script>new daum.ToonPaging($('paging02'),{click: customClick});&lt;/script>
*/
daum.ToonPaging = function(wrap,options){
	this.wrap = wrap;
	this.options = {
		click: null,
		cntPerPage: 0,
		cntTotalItem: 0,
		cntItemPerPage: 0,
		curPage: 1
	};
	daum.extend(this.options,options);

	this.options.cntTotalPage = Math.ceil(this.options.cntTotalItem/this.options.cntItemPerPage);

	var html='\
		<a href="#" class="type_common_btn btn_page_prev">이전페이지</a>\
		<em class="nums_wrap"></em>\
		<a href="#"  class="type_common_btn btn_page_next">다음페이지</a>';

	this.wrap.innerHTML = html;
	daum.addEvent($E(this.wrap).getElementsByClassName('btn_page_prev')[0],'click',this.clickPrev.bind(this)); //prev
	daum.addEvent($E(this.wrap).getElementsByClassName('btn_page_next')[0],'click',this.clickNext.bind(this)); //next

	this.insert();

}
daum.ToonPaging.prototype = {
	/**
	   현재페이지 표시
	 * @function
	 * @private
	 */
	showCurPage: function(pageNum){
		$E($E(this.wrap).getElementsByClassName('pageNum'+this.options.curPage)[0]).removeClassName("on");
		$E($E(this.wrap).getElementsByClassName('pageNum'+this.options.curPage)[0]).getFirstChild().href="#";
		this.options.curPage=pageNum;
		$E($E(this.wrap).getElementsByClassName('pageNum'+this.options.curPage)[0]).addClassName("on");
		$E($E(this.wrap).getElementsByClassName('pageNum'+this.options.curPage)[0]).getFirstChild().removeAttribute('href');
	},
	/**
	   페이지 이벤트 등록
	 * @function
	 * @private
	 */
	addEvent: function(){
		var o = $E(this.wrap).getElementsByClassName('nums_wrap')[0].getElementsByTagName('a');
		for(var i = 0, a; a=o[i]; i++){
			var pageNum = a.innerHTML;
			daum.addEvent(a,'click',this.click.bind(this,pageNum));
		}
	},
	/**
	   이전페이지 클릭이벤트
	 * @function
	 * @private
	 */
	clickPrev: function(event){
		var num = this.returnPageIndex();
		
		if(num<=0) return false;

		var curPage=(num-1)*this.options.cntPerPage+1;


		this.options.curPage=curPage;
		
		this.insert();

		if(this.options.click) this.options.click(curPage);
		
		daum.stopEvent(event);
	},
	/**
	   다음페이지 클릭이벤트
	 * @function
	 * @private
	 */
	clickNext: function(event){
		var num = this.returnPageIndex();
		var curPage=(num+1)*this.options.cntPerPage+1;

		if(curPage>this.options.cntTotalPage) return false;

		this.options.curPage=curPage;
		
		this.insert();

		if(this.options.click) this.options.click(curPage);
		
		daum.stopEvent(event);
	},
	/**
	   페이지 클릭이벤트
	 * @function
	 * @private
	 */
	click: function(pageNum,event){
		if(pageNum > 0 && pageNum <= this.options.cntTotalPage){
			this.showCurPage(pageNum);

			//fire custom click fn 
			if(this.options.click) this.options.click(pageNum);
		}

	},
	/**
	   현재페이지 html
	 * @function
	 * @private
	 */
	returnCurPagesHtml: function(){
		var h = '';
		var start = this.returnPageIndex()*this.options.cntPerPage+1;
		var end = ((start+this.options.cntPerPage)<this.options.cntTotalPage+1)?(start+this.options.cntPerPage):this.options.cntTotalPage+1;
		
		for(var i=start; i<end; i++){
			if(i==this.options.curPage) h+='<span class="on pageNum'+i+'"><a>'+i+'</a></span>';
			else  h+='<span class="pageNum'+i+'"><a href="#">'+i+'</a></span>';
		}

		return h;
	},
	/**
	   이전,다음버튼 딤처리
	 * @function
	 * @private
	 */
	dimPrevNext: function(){
		var num = this.returnPageIndex();
		var isFirst = num==0;
		var isLast = (num+1)*this.options.cntPerPage>=this.options.cntTotalPage;
		
		$E($E(this.wrap).getElementsByClassName('btn_page_prev')[0]).removeClassName('dim');
		$E($E(this.wrap).getElementsByClassName('btn_page_next')[0]).removeClassName('dim');
		
		if(isFirst){
			$E($E(this.wrap).getElementsByClassName('btn_page_prev')[0]).addClassName('dim');
			$E(this.wrap).getElementsByClassName('btn_page_prev')[0].removeAttribute('href');
		}
		if(isLast){
			$E($E(this.wrap).getElementsByClassName('btn_page_next')[0]).addClassName('dim');
			$E(this.wrap).getElementsByClassName('btn_page_next')[0].removeAttribute('href');
		}
	},
	/**
	   페이징 넣기
	 * @function
	 * @private
	 */
	insert: function(){
		var html = this.returnCurPagesHtml();
		this.wrap.getElementsByClassName('nums_wrap')[0].innerHTML = html;
		this.addEvent();
		this.dimPrevNext();
		if(this.wrap.getElementsByClassName('nums_wrap')[0].getElementsByTagName('span')[0])$E(this.wrap.getElementsByClassName('nums_wrap')[0].getElementsByTagName('span')[0]).addClassName('fst');
	},
	/**
	   현재페이지 인덱스 1-10 = 0, 11-20 = 1, 21-30 = 2 ...
	 * @function
	 * @private
	 */
	returnPageIndex: function(){
		return Math.floor((this.options.curPage-1)/this.options.cntPerPage);
	}
}
/**
* iframe의 height를 iframe문서내용에 맞게 동적으로 resize.
* @name daum.FrameHeight
* @static
* @class
* @version 1.0.0
*/
daum.FrameHeight = {
	/**
	 * iframe의 height를 resize.
	 * <textarea name="code" class="js:nogutter:nocontrols">
	 * //iframe안에서 호출
	 * daum.FrameHeight.resize(iframe_id); //parent에 위치한 iframe의 id를 인자로 넘김
	 * </textarea>
	 * @function
	 * @static
	 * @param String iframe의 id
	 */	
	resize : function(iframe_id){
		 
		var h = (self.innerHeight) ? document.documentElement.offsetHeight : document.body.scrollHeight;
		parent.document.getElementById(iframe_id).style.height = h+"px";
	}
};



/**
* DimmedLayer 딤드레이어.
* <textarea name="code" class="js:nogutter:nocontrols">
	var message = new daum.DimmedLayer({ layer:$('popupScoreCard'), layerStyle : { marginLeft:'-420px', marginTop:'-368px' }, scroll : false, durationTime : 0});

	message.call(
		function(){ //보여질때 실행될 콜백함수
			alert(1);
		},
		function(){ //닫힐때 실행될 콜백함수
			alert(2);
		}
	);

	this.options = {
		bg : daum.createElement('div'), //dimmed 레이어
		layer : daum.createElement('<div><a href="#" class="btn_close">닫기</a></div>'), //팝업레이어
		durationTime : .3, //에니메이션 효과 0이하일경우 작동안함
		bgStyle : {}, //bg레이어 스타일
		layerStyle : {}, //팝업레이어 스타일
		closeClassName : 'btn_close', //닫기버튼 class 네임
		scroll : true //스크롤여부 true일경우 팝업레이어가 스크롤 따라다님
	}
* </textarea>
* @constructor
* @name daum.DimmedLayer
* @class
* @param Object Options
* @return DimmedLayer
* @version 1.0.0
*/

daum.DimmedLayer = function(options){
	this.options = {
		bg : daum.createElement('div'),
		layer : daum.createElement('<div><a href="#" class="btn_close">닫기</a></div>'),
		durationTime : .3,
		bgStyle : {},
		layerStyle : {},
		closeClassName : 'btn_close',
		scroll : true
	}
	this.bgStyle = {
		position:'absolute',
		top:0,
		left:0,
		opacity:0.8,
		background:'#000',
		width:'100%',
		display:'none',
		zIndex:100000
	}
	this.layerStyle = {
		position:'absolute',
		display:'none',
		top:'50%',
		left:'50%',
		marginTop:'0',
		marginLeft:'0',
		zIndex:100001
	}
	this.callbackFunc = function(){};
	this.options = daum.extend(this.options, options || {});
	this.bgStyle = daum.extend(this.bgStyle, this.options.bgStyle);
	this.layerStyle = daum.extend(this.layerStyle, this.options.layerStyle);
	this.durationTime = this.options.durationTime > 0 ? true : false;
	this.callFunc = function(){};
	this.closeFunc = function(){};
	this.initialize();
}

daum.DimmedLayer.prototype = {
	/**
	   초기화
	 * @function
	 * @private
	 */
	initialize:function(){
		this.bg = $E(this.options.bg);
		this.layer = $E(this.options.layer);
		this.closeBtn = $E(daum.getElementsByClassName(this.layer, this.options.closeClassName)[0]);

		this.bg.setStyle(this.bgStyle);
		this.layer.setStyle(this.layerStyle);
		this.bg.setOpacity(0);
		this.layer.setOpacity(0);
		
		daum.addEvent(window, 'load', function(event){
			document.body.appendChild(this.bg);
			document.body.appendChild(this.layer);
		}.bind(this));
		daum.addEvent(this.bg, 'click', function(event){
			this.close();
			daum.stopEvent(event);
		}.bind(this));
		daum.addEvent(this.closeBtn, 'click', function(event){
			this.close();
			daum.stopEvent(event);
		}.bind(this));
	},
	/**
	   bg리사이즈
	 * @function
	 * @private
	 */
	resizeBg:function(){
		this.bg.setHeight(Math.max(
			window.document.compatMode === "CSS1Compat" && window.document.documentElement["clientWidth"] &&  window.document.documentElement["clientHeight"] ?
			window.document.documentElement["clientHeight"] :
			document.documentElement["clientHeight"],
			document.body["scrollHeight"],
			document.documentElement["scrollHeight"],
			document.body["offsetHeight"],
			document.documentElement["offsetHeight"]
		));
	},
	/**
	   스크롤 사이즈처리
	 * @function
	 * @private
	 */
	scrollBg:function(){
		var m = Math.abs(daum.Number.toInt(this.layerStyle.marginTop));
		var t1 = daum.Browser.getScrollOffsets().top + m;
		var t2 = daum.Browser.getScrollOffsets().top + Math.ceil(daum.Browser.getWindowSize().height / 2);
		var top = t1 > t2 ? t1 : t2;
		this.layer.style.top = top + 'px';
	},
	/**
	   showBg
	 * @function
	 * @private
	 */
	showBg:function(){
		this.resizeBg();
		this.scrollBg();
		this.bg.show();
		if(this.durationTime) {
			daum.Fx.animate(this.bg, "opacity:"+this.bgStyle.opacity, {duration:this.options.durationTime, callback:function(){
				this.bg.setOpacity(0.9);
			}.bind(this)});
		} else {
			this.bg.setOpacity(this.bgStyle.opacity);
		}
	},
	/**
	   hideBg
	 * @function
	 * @private
	 */
	hideBg:function(){
		if(this.durationTime){
			daum.Fx.animate(this.bg, "opacity:0", {duration:this.options.durationTime, callback:function(){
				this.bg.setOpacity(0);
				this.bg.hide();
				this.closeFunc();
			}.bind(this)});
		} else {
			this.bg.setOpacity(0);
			this.bg.hide();
			this.closeFunc();
		}
	},
	/**
	   show
	 * @function
	 * @private
	 */
	show:function(){
		this.showBg();
		this.layer.show();
		if(this.durationTime){
			daum.Fx.animate(this.layer, "opacity:1", {duration:this.options.durationTime, callback:function(){
				this.layer.setOpacity(1);
				this.callFunc();
			}.bind(this)});
		} else {
			this.layer.setOpacity(1);
			this.callFunc();
		}
	},
	/**
	   hide
	 * @function
	 * @private
	 */
	hide:function(){
		if(this.durationTime){
			daum.Fx.animate(this.layer, "opacity:0", {duration:this.options.durationTime, callback:function(){
				this.layer.setOpacity(0);
				this.layer.hide();
				this.hideBg();
			}.bind(this)});
		} else {
			this.layer.setOpacity(0);
			this.layer.hide();
			this.hideBg();
		}
	},
	/**
	   레이어호출
	 * @function
	 */
	call:function(callfunc, closefunc){
		if(typeof(callfunc) == 'function'){
			this.callFunc = callfunc;
		}
		if(typeof(closefunc) == 'function'){
			this.closeFunc = closefunc;
		}
		this.show();
		this.resizeEvent = daum.addEvent(window,'resize',this.resizeBg.bind(this));
		if(this.options.scroll) this.scrollEvent = daum.addEvent(window,'scroll',this.scrollBg.bind(this));
	},
	/**
	   레이어닫기
	 * @function
	 */
	close:function(){
		this.hide();
		daum.Event.stopObserving(this.resizeEvent);
		if(this.options.scroll) daum.Event.stopObserving(this.scrollEvent);
	}
};

/**
* @constructor
* @name daum.JsPaging
* @class
* @param Element 페이징이 들어가게될 Element객체
* @param Object Options
* @return  JsPaging
* @version 1.0.0
* <div id="paging02"></div>
* &lt;script>new daum.JsPaging($('paging02'),{click: customClick});&lt;/script>
*/
daum.ToonGallery = function(wrap,tmp,data,options){
	this.wrap = wrap;
	this.tmp = tmp;
	this.data = data;
	this.cntTotalItem = this.data.length;
	this.itemPosition={};
	this.itemSize={};
	this.classes=['hidden_prev','prev','cur','next','hidden_next'];
	this.isMoving=false;

	this.options = {
		click: null,
		index:10,
		fx: {
			duration: 0.3,
			easing: daum.Fx.transitions.easeInQuad
		},
		onStart: null,
		onEnd: null
	};
	daum.extend(this.options,options);
	
	this.init();

	//daum.addEvent(window,'load',this.loaded.bind(this));

	daum.addEvent(document,'keyup',this.keyEvent.bind(this));
}
daum.ToonGallery.prototype = {
	/**
	   init
	 * @function
	 * @private
	 */
	init: function(){
		var html='';
		var classIndex=0;
		for(var i=this.options.index-2,len=this.options.index+2,itemIndex=''; i<=len; i++){
			itemIndex = this.returnItemIndex(i);
			html += '<div class="'+this.classes[classIndex]+'">'+this.tmp.evaluate(this.returnTmpObject(itemIndex))+'</div>';
			classIndex++;
		};

		this.wrap.innerHTML = html;
		this.loaded();
	},
	/**
	   go
	 * @function
	 * @private
	 */
	go: function(no){

		this.options.index=no;
		
		this.init();
	},
	/**
	   keyEvent
	 * @function
	 * @private
	 */
	keyEvent: function(e){
		//alert(e.keyCode)
		var keyCode = e.keyCode;
		if(this.wrap.style.display == 'none') return false;

		if(keyCode==39) this.next();
		else if(keyCode==37) this.prev();
	},
	/**
	   슬라이딩완료
	 * @function
	 * @private
	 */
	completedSliding: function(){
		//alert('슬라이디완료');
		this.isMoving=false;
		if(this.options.onEnd) this.options.onEnd();
	},
	/**
	   슬라이딩시작
	 * @function
	 * @private
	 */
	startSliding: function(){
		//alert('슬라이딩 시작');
		this.isMoving=true;
		if(this.options.onStart) this.options.onStart();
	},
	/**
	   로드완료
	 * @function
	 * @private
	 */
	loaded: function(){
		this.setItemInfo();
		//this.setItemPosition();
		//this.setItemSize();
	},
	/**
	   갤러리 사진 위치/사이즈 세팅
	 * @function
	 * @private
	 */
	setItemInfo: function(){
		for(var i=0,item=''; cls=this.classes[i];i++){
			this.itemPosition[cls]=daum.Element.getCoordsTarget($E(this.wrap).getElementsByClassName(cls)[0],this.wrap);
			this.itemSize[cls]={};
			this.itemSize[cls].width=this.returnClassObject(cls).offsetWidth;
			this.itemSize[cls].height=this.returnClassObject(cls).offsetHeight;
			//this.itemSize[]
		}
	},
	/**
	   matching
	 * @function
	 * @private
	 */
	returnTmpObject: function(itemIndex){
		var o={};
		for(var item in this.data[itemIndex]){
			o[item] = this.data[itemIndex][item];
		}
		return o;
	},
	/**
	   클래스 객체 셀렉트
	 * @function
	 * @private
	 */
	returnClassObject: function(cls){
		return $E(this.wrap).getElementsByClassName(cls)[0];
	},
	/**
	   이전
	 * @function
	 * @private
	 */
	prev: function(){
		if(this.isMoving)return;
		this.startSliding();

		var hidden_prev = this.returnClassObject('hidden_prev');
		var prev = this.returnClassObject('prev');
		var cur = this.returnClassObject('cur');
		var next = this.returnClassObject('next');
		var hidden_next = this.returnClassObject('hidden_next');
		var nextSize_width = this.itemSize['next'].width;
		var nextSize_height = this.itemSize['next'].height;
		var curSize_width = this.itemSize['cur'].width;
		var curSize_height = this.itemSize['cur'].height;

		//hidden_next->hidden_prev
		$E(hidden_next).setCssText('top:'+this.itemPosition['hidden_prev'].top+'px;left:'+this.itemPosition['hidden_prev'].left+'px;');
		hidden_next.className = 'hidden_prev';
		hidden_next.innerHTML=this.tmp.evaluate(this.returnTmpObject(this.returnItemIndex(this.options.index-3)));

		//next->hidden_next
		daum.Fx.animate(next,
			'top:'+this.itemPosition['hidden_next'].top+'px;left:'+this.itemPosition['hidden_next'].left+'px;',
			{
				duration:this.options.fx.duration,
				callback:function(){next.className = 'hidden_next'},
				easing:this.options.fx.easing
			}
		);

		//cur->next
		daum.Fx.animate(cur, 
			'top:'+this.itemPosition['next'].top+'px;left:'+this.itemPosition['next'].left+'px;',
			{
				duration:this.options.fx.duration,
				callback:function(){cur.className = 'next';$E(cur).setCssText('z-index:9;');},
				easing:this.options.fx.easing
			}
		);


		//hidden_prev->prev
		daum.Fx.animate(hidden_prev, 
			'top:'+this.itemPosition['prev'].top+'px;left:'+this.itemPosition['prev'].left+'px',
			{
				duration:this.options.fx.duration,callback:function(){hidden_prev.className = 'prev'},
				easing:this.options.fx.easing
			}
		);
		
		//prev->cur
		daum.Fx.animate(prev, 
			'top:'+this.itemPosition['cur'].top+'px;left:'+this.itemPosition['cur'].left+'px;',
			{
				duration:this.options.fx.duration,
				callback:function(){prev.className = 'cur';$E(prev).setCssText('z-index:10;');this.completedSliding()}.bind(this),
				easing:this.options.fx.easing
			}
		);
		

		this.options.index = this.returnItemIndex(this.options.index-1);
	},
	/**
	   다음
	 * @function
	 * @private
	 */
	next: function(){
		if(this.isMoving)return;
		this.startSliding();

		var hidden_prev = this.returnClassObject('hidden_prev');
		var prev = this.returnClassObject('prev');
		var cur = this.returnClassObject('cur');
		var next = this.returnClassObject('next');
		var hidden_next = this.returnClassObject('hidden_next');

		var nextSize_width = this.itemSize['prev'].width;
		var nextSize_height = this.itemSize['prev'].height;
		var curSize_width = this.itemSize['cur'].width;
		var curSize_height = this.itemSize['cur'].height;


		//hidden_prev -> hidden_next
		$E(hidden_prev).setCssText('top:'+this.itemPosition['hidden_next'].top+'px;left:'+this.itemPosition['hidden_next'].left+'px;');
		hidden_prev.className = 'hidden_next';
		hidden_prev.innerHTML=this.tmp.evaluate(this.returnTmpObject(this.returnItemIndex(this.options.index+3)));

		//prev -> hidden_prev
		daum.Fx.animate(prev, 
			'top:'+this.itemPosition['hidden_prev'].top+'px;left:'+this.itemPosition['hidden_prev'].left+'px;',
			{
				duration:this.options.fx.duration,
				callback:function(){prev.className = 'hidden_prev'},
				easing:this.options.fx.easing
			}
		);
		//cur -> prev
		daum.Fx.animate(cur, 
			'top:'+this.itemPosition['prev'].top+'px;left:'+this.itemPosition['prev'].left+'px;',
			{
				duration:this.options.fx.duration,
				callback:function(){$E(cur).setCssText('z-index:9;');cur.className = 'prev'},
				easing:this.options.fx.easing
			}
		);

		//hidden_next -> next
		daum.Fx.animate(hidden_next, 
			'top:'+this.itemPosition['next'].top+'px;left:'+this.itemPosition['next'].left+'px',
			{
				duration:this.options.fx.duration,
				callback:function(){hidden_next.className = 'next';},
				easing:this.options.fx.easing
			}
		);
		

		//next -> cur
		daum.Fx.animate(next, 
			'top:'+this.itemPosition['cur'].top+'px;left:'+this.itemPosition['cur'].left+'px;background-color:#fff;padding:5px;',
			{
				duration:this.options.fx.duration,
				callback:function(){$E(next).setCssText('z-index:10;');next.className = 'cur';this.completedSliding()}.bind(this),
				easing:this.options.fx.easing
			}
		);
		
		
		
		this.options.index = this.returnItemIndex(this.options.index+1);
	},
	/**
	   유효한 Item 번호 index를 벗어나면 앞으로, 뒤로 돌림
	 * @function
	 * @private
	 */
	returnItemIndex: function(index){
		if(index<0) index = this.cntTotalItem+index;
		if(index>=this.cntTotalItem) index = index-this.cntTotalItem;

		return index;
	}
}



/******************
	this.drag=new daum.Drag(knob, {
		container:area,
		move_mode:this.mode,
		onDrag:function(){self.slide()},
		onStop:function(){self.change()}
	});
***********************/
daum.Drag=function(drag, options){
	var el=$(drag);
	el.options={
		handle:'',
		container:'',
		move_mode:'',	//1:horizontal 2,vertical
		limit_top:-1,
		limit_bottom:-1,
		limit_left:-1,
		limit_right:-1,
		onStart:null,
		onStop:null,
		onDrag:null
	}
	daum.extend(el,el.options);
	daum.extend(el,options);

	el.isdrag=true;
	el.width=0;el.height=0;
	el.area_width=0;el.area_height=0;
	
	daum.Drag.setXY(el);
	
	if(el.handle)
	{
		el.handle=$(el.handle);
		el.isdrag=false;
		el.handle.isdrag=true;
		el.handle.target=el;
	}
	if(el.container)
	{
		$(el.container).style.position="relative";
		el.width=parseInt(daum.Element.getStyle(el,"width")) || el.offsetWidth;
		el.height=parseInt(daum.Element.getStyle(el,"height")) || el.offsetHeight;
		el.area_width=parseInt(daum.Element.getStyle($(el.container),"width")) || $(el.container).offsetWidth;
		el.area_height=parseInt(daum.Element.getStyle($(el.container),"height")) || $(el.container).offsetHeight;	
	}
	this.obj=el;

	daum.Event.addEvent(document.body, "mousedown", daum.Drag.start );
	daum.Event.addEvent(document.body, "mousemove", daum.Drag.move );
	daum.Event.addEvent(document.body, "mouseup", daum.Drag.end );
	document.body.ondragstart=new Function ("return false");
	document.body.onselectstart=new Function ("return false");
};
daum.Drag.setXY=function(el){
	var pos=JesUtil.getPosition(el);
	el.x=parseInt(daum.Element.getStyle(el,"left"));
	el.y=parseInt(daum.Element.getStyle(el,"top"));
	if(isNaN(el.x)) el.x=pos.x;
	if(isNaN(el.y)) el.y=pos.y;
};
daum.Drag.start=function(event){
/** 2011.09.14-크롬에서 tvpot버튼이 안먹는 관계로 일단 주석
	try{
		event.preventDefault();
		event.stopPropagation();

	}catch(e){};
**/
	var e=event || window.event; var el=e.target || e.srcElement;
		

	if(el.sliderKnob) el=$(el.sliderKnob);//jes.Slider
	if(!el.isdrag) return;
	if(el.target) el=el.target;
	
	_uiDrag.obj=el;
	daum.Drag.setXY(el);

	_uiDrag.gx = e.clientX;
	_uiDrag.gy = e.clientY;

	if(el.onStart) el.onStart.call(el);
	if(el.onStop) _uiDrag.onStop=el.onStop;
	if(el.onDrag) _uiDrag.onDrag=el.onDrag;
};
daum.Drag.move=function(event){
	
	var drag=_uiDrag.obj;
	if(!drag) return;

	var e=event || window.event; var el=e.target || e.srcElement;
	var top =drag.y + e.clientY - _uiDrag.gy;
	var left=drag.x + e.clientX - _uiDrag.gx;

	if(drag.area_width && drag.area_height)
	{
		if(top<=0) top=0;
		else if(top >= drag.area_height-drag.height) top=drag.area_height-drag.height; 
		if(left<=0) left=0;
		else if(left >= drag.area_width-drag.width) left=drag.area_width-drag.width; 
	}
	if(drag.limit_top>-1 && top<drag.limit_top) top=drag.limit_top;
	if(drag.limit_bottom>-1 && top>drag.limit_bottom) top=drag.limit_bottom;
	if(drag.limit_left>-1 && left<drag.limit_left) left=drag.limit_left;
	if(drag.limit_right>-1 && left>drag.limit_right) left=drag.limit_right;
	
	if(!drag.move_mode || drag.move_mode==2) drag.style.top = top+"px";
	if(!drag.move_mode || drag.move_mode==1) drag.style.left = left+"px";	

	if(_uiDrag.onDrag) _uiDrag.onDrag.call(drag);
};
daum.Drag.end=function(event){
	if(_uiDrag.onStop) _uiDrag.onStop.call(_uiDrag.obj);
	_uiDrag.obj=null;	
	_uiDrag.onStop=null;
	_uiDrag.onDrag=null;
};
var _uiDrag={};

/******************
var slider = new daum.ToonSlide("area1","knob1" ,{ 
	move_value:10, //스크롤휠 돌렸을경우 움직임
	onSlide:function(){ $("debug").innerHTML="onSlide "+this.value;  } ,
	onChange:function(){ $("debug").innerHTML="onChange "+this.value;  } 
});
***********************/
daum.ToonSlide=function(area,knob,options) {
	this.options={
		onSlide:null,
		onChange:null,
		max_value:100,
		move_value:5,
		value:0,
		wheel_area:'',
		mode:1,
		step: 1 // 슬라이더가 한번에 움직이는 간격
	}
	//Object.extend(this.options, options);
	daum.extend(this.options,options);

	this.value=this.options.value;
	this.max_value=this.options.max_value;

	this.area=$(area);
	this.knob=$(knob);
	this.area.width=parseInt(daum.Element.getStyle(this.area,"width"));
	this.area.height=parseInt(daum.Element.getStyle(this.area,"height"));
	this.knob.width=parseInt(daum.Element.getStyle(this.knob,"width"));
	this.knob.height=parseInt(daum.Element.getStyle(this.knob,"height"));

	this.track_length = (this.options.mode==1) ? this.area.width-this.knob.width:this.area.height-this.knob.height;

	var self=this;
	this.drag=new daum.Drag(knob, {
		container:area,
		move_mode:this.mode,
		onDrag:function(){self.slide()},
		onStop:function(){self.change()}
	});
	
	this.area.sliderKnob=knob;
	daum.Event.addEvent(this.area, "mousedown", function(event){ self.moveKnobClientXY.call(self,event) });
	daum.Event.addEvent(this.area, 'mousewheel',function(event){ self.wheelScroll.call(self,event) });
	if(this.options.wheel_area)	daum.Event.addEvent($(this.options.wheel_area), 'mousewheel',function(event){ self.wheelScroll.call(self,event) });

	if(this.value>0)
	{
		if(this.options.mode==1) this.knob.style.left=this.val2pos()+"px";
		else this.knob.style.top=this.val2pos()+"px";
	}
};



daum.ToonSlide.prototype={
	pos2val:function() {
		var val=Math.floor( parseInt(this.getKnobPos()) * this.max_value / this.track_length);
		if(val<0) val=0;
		else if(val>this.max_value) val=this.max_value;
		this.value=val;
		return val;
	},
	val2pos:function(value) {
		if(value!=0 && !value) value=this.value;
		var pos=Math.floor( value * this.track_length / this.max_value);
		return pos;
	},
	getKnobPos:function(){
		return (this.options.mode==1) ? this.knob.style.left:this.knob.style.top;
	},
	setKnobPos:function(pos){
		if(this.options.mode==1) this.knob.style.left=pos+'px';
		else this.knob.style.top=pos+'px';
	},
	moveKnobClientXY:function(event){
		var e=event || window.event; var el=e.target || e.srcElement;
		var pos=0;
		var scroll = JesUtil.getScroll();

		if(this.options.mode==1) 
		{
			pos=e.clientX-JesUtil.getPosition(this.area).x+scroll.left-(this.knob.width/2);
			if(pos<0) pos=0;
			else if(pos>this.area.width-this.knob.width) pos=this.area.width-this.knob.width;
			this.setKnobPos(pos);
		}
		else
		{
			pos=e.clientY-JesUtil.getPosition(this.area).y+scroll.top-(this.knob.height/2);
			if(pos<0) pos=0;
			else if(pos>this.area.height-this.knob.height) pos=this.area.height-this.knob.height;
			this.setKnobPos(pos);
		}
		this.change();
	},
	moveKnob:function(type,event){
		if(type=='up' && this.value<this.max_value)//value up
		{
			this.value+=this.options.move_value;
			if(this.value>this.max_value) this.value=this.max_value; 
			this.setKnobPos(this.val2pos());
			this.change();
			if(event)daum.stopEvent(event);
		}
		else if(type=='down' && this.value>0) //value down
		{
			this.value-=this.options.move_value;
			if(this.value<0) this.value=0; 
			this.setKnobPos(this.val2pos());
			this.change();
			if(event)daum.stopEvent(event);
		}	
	},
	wheelScroll:function(event){
		var delta=JesUtil.getEventWheel(event);
		var type = (delta<0)? 'up':'down';
		this.moveKnob(type,event);
	},
	down:function(el){
		var self=this;
		self.moveKnob('down');
		daum.ToonSlide.s_interval=setInterval( function(){self.moveKnob('down')}, 100);
		if(!el.isMouseup)
		{
			daum.Event.addEvent(el, "mouseup",  function(){clearInterval(daum.ToonSlide.s_interval)});
			daum.Event.addEvent(el, "mouseout", function(){clearInterval(daum.ToonSlide.s_interval)});
			el.isMouseup=true;
		}
	},
	up:function(el){
		var self=this;
		self.moveKnob('up');
		daum.ToonSlide.s_interval=setInterval( function(){self.moveKnob('up')}, 100);
		if(!el.isMouseup)
		{
			daum.Event.addEvent(el, "mouseup",  function(){clearInterval(daum.ToonSlide.s_interval)});
			daum.Event.addEvent(el, "mouseout", function(){clearInterval(daum.ToonSlide.s_interval)});
			el.isMouseup=true;
		}
	},
	slide:function(){
		this.pos2val();
		if(this.options.onSlide) this.options.onSlide.call(this);
	},
	change:function(){
		this.step();
		if(this.options.onChange) this.options.onChange.call(this);
	},
	step:function(){
		this.value = Math.round(this.pos2val()/this.options.step) * this.options.step;
		this.setKnobPos(this.val2pos());
	},
	go:function(value){
		this.setKnobPos(this.val2pos(value));
		this.change();
	}
};
var JesUtil = {}
JesUtil.getScroll=function () {
	if(document.all && typeof document.body.scrollTop != "undefined")
	{
		var cont=document.compatMode!="CSS1Compat"?document.body:document.documentElement;
		return {left:cont.scrollLeft, top:cont.scrollTop, width:cont.clientWidth, height:cont.clientHeight}
	}
	else 
		return {left:window.pageXOffset, top:window.pageYOffset, width:window.innerWidth, height:window.innerHeight}
};
JesUtil.getEventWheel=function(e){
	var delta=0;
	if(e.wheelDelta) delta=e.wheelDelta/120;
	else if(e.detail) delta=-e.detail/3;
	return delta;
};
JesUtil.getPosition=function(el){
	var left=0,top=0;
	while(el)
	{
		left+=el.offsetLeft || 0;
		top+=el.offsetTop || 0;
		el=el.offsetParent;
	}
	return {'x': left, 'y': top};
};

/*
 * json 데이터를 로드하고
 * 템플릿을 가져와서
 * innerHTML해주는 함수
 * var t1=new TemplateRender({
 * 		tmpId:el1,
 * 		rendEl:el2,
 * 		dataUrl : '',
 * 		callback:function(){}
 * });
 * t1.reload(dataUrl,addData|option);//동일한 템플릿에 데이터 새로 로딩
 * t1.data 를 다른곳에 이용할 수도 있음
 * */
function TemplateRender(options){
	var that=this;
	that.options={
		tmpId : '',
		rendEl : '',
		dataUrl : '',
		callback:function(){},
		callbackFail:function(){},
		addData : {}
	};
	daum.extend(that.options, options);
	that.callback=that.options.callback;
	that.callbackFail=that.options.callbackFail;
	delete that.options.callback;
	delete that.options.callbackFail;
	
	
	that.template=TrimPath.parseDOMTemplate(that.options.tmpId);
	
	that.load();
};
TemplateRender.prototype={
	data : '',//데이터 저장소, 다른곳에서 이용할 수 있도록...
	reload : function(dataUrl,addData){
		var that=this;
		
		that.options.dataUrl = dataUrl;
		if(addData){
			that.options.addData=addData;
		};
		that.load();
	},
	load : function(){
		var that=this;
		
		LeagueLoading.show(that.options.tmpId);
		
		
		that.aid = new daum.Ajax({
			url : getTimestampUrl(that.options.dataUrl),
			onsuccess : that.successHandler.bind(that),
			onfailure : that.failureHandler.bind(that),
			method : 'post',
			timeout : 1000*9999
		});
		that.aid.request();
	},
	successHandler : function(d){
		var that=this;
		
		that.data=eval('('+d.responseText+')');
		that.data = typeof(that.data)=='object'&&(that.data instanceof Array) ? {"data":that.data} : that.data;// 데이터가 배열로 넘어올때
		that.data = that.data.item ? {"data":[that.data.item]} : that.data; // 데이터에 data가 없을 때-만화쟁이 지원 상단
		daum.extend(that.data, that.options.addData);
		
		that.render();
		LeagueLoading.hide(that.options.tmpId);
	},
	failureHandler : function(e){
		var that=this;
		LeagueLoading.hide(that.options.tmpId);
	},
	render : function(){
		var that=this;

		that.options.rendEl.innerHTML=that.template.process(that.data);
		that.callback();
	},
	abort : function(){
		var that = this;
		that.aid.request({link:'cancel'});
	}
};
/**
* Tab 메뉴 생성.
* <textarea name="code" class="js:nogutter:nocontrols">
	<div id="tab">
		<a id="t1" href="">종합</a>
		<!-- 탭 활성화 class=on 으로 해주세요!! -->
		<a id="t2" class="on" href="">스포츠</a>
		<a id="t3" href="">연예</a>
	</div>
	var tab = new daum.Tab( $$('#tab a') , { onChange:change } );
	
	//기본옵션
	this.options ={
		eventType : 'mouseover',	//탭 이벤트가 발생되어야할 이벤트
		onChange : function(){}		//탭 변경될때 콜백함수
	};
*
* </textarea>
* @constructor
* @name daum.Tab
* @class
* @param Array 탭을 만들 Element Array
* @param Object 옵션
* @return Tab
* @version 1.0.0
*/
daum.Tab = function(target , options){

	/**
	 * 현재 선택된 탭index
	 * @name daum.Tab.selectIndex
	 * @field
	 * @type Number
	 */	

	this.selectIndex = -1;
	this.postSelectIndex = -1;

	if(target.length==0) return;
	this.target = target;
		
	this.options ={
		eventType : 'mouseover',	//탭 이벤트가 발생되어야할 이벤트
		onChange : function(){}		//탭 변경될때 콜백함수
	};
	
	daum.extend(this.options, options);

	for(var i=0; i<target.length; i++)
	{
		if(daum.hasClassName(target[i], 'on')) this.selectIndex=i;
		target[i].setAttribute('tab_index',i);
		//탭 이벤트발생
		daum.addEvent(target[i], this.options.eventType, this.select.bind(this) );
	}

};
daum.Tab.prototype={
	/**
	   탭선택하기
	 * @function
	 * @param Number 선택될 탭index
	 */	
	select : function(index){
		var el = (index.type) ? daum.getElement(index):this.target[index];
		if(el == this.target[this.selectIndex]) return;

		if(this.selectIndex > -1) daum.removeClassName(this.target[this.selectIndex], 'on');

		this.postSelectIndex = this.selectIndex;
		this.selectIndex = el.getAttribute('tab_index');

		daum.addClassName(this.target[this.selectIndex], 'on');
		this.options.onChange.call(this);
	}
};
/**
* 이전다음 메뉴 생성.
* <textarea name="code" class="js:nogutter:nocontrols">
	<div id="tab">
		<a id="t1" href="" class="prev">이전</a>
		<a id="t2" href="" class="next">다음</a>
	</div>
	<ul>
		<li class="list"></li>
	</ul>
	var t = new daum.PrevNext( $$('.prev')[0],$$('.next')[0] , { listCnt:10, onChange:change } );
	
	//기본옵션
	this.options ={
		eventType : 'click',	//탭 이벤트가 발생되어야할 이벤트
		onChange : function(){}		//탭 변경될때 콜백함수
	};
*
* </textarea>
* @constructor
* @name daum.Tab
* @class
* @param Array 탭을 만들 Element Array
* @param Object 옵션
* @return Tab
* @version 1.0.0
*/
daum.PrevNext = function(prev,next,sub, options){

	/**
	 * 현재 선택된 탭index
	 * @name daum.Tab.selectIndex
	 * @field
	 * @type Number
	 */	
		
	this.options ={
		isRandom : true,
		listCnt : 10,			//한번에 보여줄 갯수
		eventType : 'click',	//탭 이벤트가 발생되어야할 이벤트
		onChange : function(){}	//탭 변경될때 콜백함수
	};
	daum.extend(this.options, options);

	this.sub = sub;
	this.itemTotalCnt = sub.length;
	this.lastIndex = Math.ceil(sub.length/this.options.listCnt)-1;
	this.selectIndex = this.options.isRandom ? daum.random(0,this.lastIndex-1) : 0;
	

	var initStart = this.getStartIndex(this.selectIndex);
	var initEnd = this.getEndIndex(this.selectIndex);
	sub.each(function(o,i){
		if(i>=initStart && i<initEnd){
			daum.show(o);
		}else{
			daum.hide(o);
		}
	}.bind(this));


	if(this.options.listCnt == this.itemTotalCnt){
		daum.hide(prev);
		daum.hide(next);
	}else{
		daum.addEvent(prev, this.options.eventType, this.select.bind(this,'prev') );
		daum.addEvent(next, this.options.eventType, this.select.bind(this,'next') );
	}

};
daum.PrevNext.prototype={
	/**
	   탭선택하기
	 * @function
	 * @param Number 선택될 탭index
	 */	
	select : function(dir){

		var index = this.selectIndex;
		if(dir=='prev') index--;
		else index++;

		if(index<0) index = this.lastIndex;
		else if(index>this.lastIndex) index = 0;


		var start = this.getStartIndex(index);
		var end = this.getEndIndex(index);

		this.sub.each(function(o,i){
			if(i>=start && i<end){
				daum.show(o);
				//daum.setOpacity(o,0.5);
				//daum.Fx.animate(o,{opacity:1});
			}else{
				daum.hide(o);
			}
		});

		this.selectIndex = index;

		this.options.onChange.call(this);

	},
	getStartIndex : function(index){
		var r = this.options.listCnt*index;

		return r;
	},
	getEndIndex : function(index){
		var r = this.options.listCnt*(index+1);

		r = r>this.itemTotalCnt?this.itemTotalCnt:r;

		return r;
	}
};
daum.PrevNextWithNum = function(prev,next,sub,page,total, options){
	this.options ={
		isRandom : true,
		listCnt : 10,			//한번에 보여줄 갯수
		eventType : 'click',	//탭 이벤트가 발생되어야할 이벤트
		onChange : function(){}	//탭 변경될때 콜백함수
	};
	daum.extend(this.options, options);

	this.page = page;
	this.sub = sub;
	this.itemTotalCnt = sub.length;
	this.lastIndex = Math.ceil(sub.length/this.options.listCnt)-1;
	this.selectIndex = this.options.isRandom ? daum.random(0,this.lastIndex-1) : 0;

	var initStart = this.getStartIndex(this.selectIndex);
	var initEnd = this.getEndIndex(this.selectIndex);
	sub.each(function(o,i){
		if(i>=initStart && i<initEnd){
			daum.show(o);
		}else{
			daum.hide(o);
		}
	}.bind(this));

	total.innerHTML = this.lastIndex+1;
	page.innerHTML = 1;

	if(this.options.listCnt == this.itemTotalCnt){
		daum.hide(prev);
		daum.hide(next);
	}else{
		daum.addEvent(prev, this.options.eventType, this.select.bind(this,'prev') );
		daum.addEvent(next, this.options.eventType, this.select.bind(this,'next') );
	}

};
daum.PrevNextWithNum.prototype={
	/**
	   탭선택하기
	 * @function
	 * @param Number 선택될 탭index
	 */	
	select : function(dir){

		var index = this.selectIndex;
		if(dir=='prev') index--;
		else index++;

		if(index<0) index = this.lastIndex;
		else if(index>this.lastIndex) index = 0;


		var start = this.getStartIndex(index);
		var end = this.getEndIndex(index);

		this.sub.each(function(o,i){
			if(i>=start && i<end){
				daum.show(o);
				//daum.setOpacity(o,0.5);
				//daum.Fx.animate(o,{opacity:1});
			}else{
				daum.hide(o);
			}
		});

		this.selectIndex = index;
		this.page.innerHTML = index+1;

		this.options.onChange.call(this);

	},
	getStartIndex : function(index){
		var r = this.options.listCnt*index;

		return r;
	},
	getEndIndex : function(index){
		var r = this.options.listCnt*(index+1);

		r = r>this.itemTotalCnt?this.itemTotalCnt:r;

		return r;
	}
};

// GNB 검색창
function setServiceSearchOption(){
	var els = {
		"daumSearchOption":"daumSearchOption", // 옵션선택버튼 id 
		"daumSearchOptionLayer":"daumSearchOptionLayer", // 옵션레이어 id
		"daumSearchOptionSelect":"daumSearchOptionSelect", // 옵션selectbox id
		"queryText":"q" // 검색어 입력 텍스트박스 id
	},
	bt = daum.$E(els.daumSearchOption), options = [], layer, glue='#+++';
	if(!bt){return;}
	$$('#'+els.daumSearchOptionSelect+' > option').each(function(option){
		if(option.selected){bt.innerHTML = option.innerText || option.text;}
		options.push('<a href="'+glue+option.value+'" onclick="return false;">'+option.text+'</a>');
	});
	layer = daum.createElement('<p id="'+els.daumSearchOptionLayer+'">'+options.join('')+'</p>');
	bt.getParent().insertBefore(layer, bt);
	daum.addEvent(bt,'click',toggleLayer);
	daum.addEvent(document, 'click', setOption);
	layer = bt = options = null;
	function toggleLayer(e){
		var ev = e || window.event;
		if(ev.stopPropagation){ev.stopPropagation();}
		else {ev.returnValue = false; ev.cancelBubble = true;}
		daum.Element.toggle(els.daumSearchOptionLayer);
	}
	function setOption(e){
		var ev = e || window.event, target = ev.target || ev.srcElement, key;
		closeLayer();
		if(!!target.href && target.href.indexOf(glue)!= -1 ){
			key = target.href.substr(target.href.indexOf(glue)+glue.length);
			daum.$(els.daumSearchOptionSelect).value = key;
			daum.$(els.daumSearchOption).innerHTML = (target.innerText || target.text).escapeHTML(); /*<- daum.$(els.daumSearchOption).innerHTML = target.innerText || target.text; (이전 코드 방식으로 하면 HTML entity가 인코딩??됩니다.) */
			daum.$(els.queryText).focus();
		}
	}
	function closeLayer(){
		var layer = daum.$E(els.daumSearchOptionLayer);
		if(layer.visible()){layer.hide();}
	}
}

function goCartoonSearch() {
	var dir = $('daumSearchOptionSelect').value;
	var q = encodeURIComponent($('q').value);
	
	if(q == ''){
		alert('검색어를 입력해 주세요.');
		return false;
	}
	
	location.href = 'http://cartoon.media.daum.net/search/'+dir+'/'+q;
	
	return false;
}
function goTotalSearch() {
	var q = encodeURIComponent($('q').value);
	
	if(q == ''){
		alert('검색어를 입력해 주세요.');
		return false;
	}
	
	window.open("http://search.daum.net/search?nil_profile=search&nil_src=cartoon&q="+q);
}


/*
	숫자 세자리마다 콤마찍기
*/
function addCommas(n) {
	var reg = /(^[+-]?\d+)(\d{3})/;   // 정규식
	n += '';                          // 숫자를 문자열로 변환

	while (reg.test(n))
		n = n.replace(reg, '$1,$2');

	return n;
}
/*
	유틸
*/
daum.Util = (function(){
	var Util = {};

	// 폼필드에 배경이미지 (포커스 인/아웃)
	// new daum.Util.focusBG("comment","url(http://i1.daumcdn.net/img-section/cartoon/webzine/bg_textarea_text.gif) no-repeat 14px 16px");
	Util.focusBG = function(el, css){
		this.el = document.getElementById(el)
		if(css){
			this.el.style.background = css;
		}
		this.bg = this.el.style.backgroundImage;

		var self = this;
		this.el.onfocus = function(){
			self.el.style.backgroundImage = "";
		}
		this.el.onblur = function(){
			var val = self.el.value.replace(/^\s+|\s+$/g,"");
			if(eval(val.length) == 0){
				self.el.style.backgroundImage = self.bg;
			}
		}
	}
	// 폼필드에 글자수 제한
	// onkeyup="daum.Rhea.updateChar('300','comment')"
	Util.updateChar = function(max, field, txt){
		var _strCount = 0;
		var _tempStr, _tempStr2;
		for(i = 0;i < $(field).value.length;i++)
		{
			_tempStr = $(field).value.charAt(i);
			if(escape(_tempStr).length > 4) _strCount += 2;
				else _strCount += 1 ;
		}
		if (_strCount > max){
			alert(max + "bytes이하로 입력해주시기 바랍니다.");
			_strCount = 0;
			_tempStr2 = "";
			for(i = 0; i < $(field).value.length; i++)
			{
				_tempStr = $(field).value.charAt(i);
				if(escape(_tempStr).length > 4) _strCount += 2;
				else _strCount += 1 ;
				if (_strCount > max)
				{
					if(escape(_tempStr).length > 4) _strCount -= 2;
					else _strCount -= 1 ;
					break;
				}
				else _tempStr2 += _tempStr;
			}
			$(field).value = _tempStr2;
		}
		if($(txt)){
			$(txt).innerHTML = _strCount;
		}
	}
	// 숫자 세자리마다 콤마찍기
	Util.addCommas=function(n) {
		var reg = /(^[+-]?\d+)(\d{3})/;   // 정규식
		n += '';                          // 숫자를 문자열로 변환

		while (reg.test(n))
			n = n.replace(reg, '$1,$2');

		return n;
	}
	/**
	 * iframe의 height를 resize.
	 * <textarea name="code" class="js:nogutter:nocontrols">
	 * //iframe안에서 호출
	 * daum.FrameHeight.resize(iframe_id); //parent에 위치한 iframe의 id를 인자로 넘김
	 * </textarea>
	 * @function
	 * @static
	 * @param String iframe의 id
	 */	
	Util.resize = function(iframe_id){
		var h = (self.innerHeight) ? document.documentElement.offsetHeight : document.body.scrollHeight;
		parent.document.getElementById(iframe_id).style.height = h+"px";
	}
	// 플래시 오브젝트에 접근
	Util.thisMovie = function(movieName) {
		return document[movieName] || window[movieName];
	 }
	// 플래시 embed
	Util.embedSWF = function(f,w,h,options){
		var param={	id:"JESswf_"+(new Date()).getTime(), quality:'high',bgcolor:'#ffffff',allowScriptAccess:'always'}
		daum.extend(param, options);

		var id='id="'+param.id+'"';
		var name = 'name="'+param.id+'"';
		var p='',e='';	

		for(i in param) 
		{
			if(i=='id')continue;
			p+='<param name="'+i+'" value="'+param[i]+'">\n';
			e+=i+'="'+param[i]+'" ';
		}

		var s='<object '+id+' width="'+w+'" height="'+h+'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0">';
		s+='<param name="movie" value="'+f+'">'+ p;	
		s+='<embed '+id+' '+name+' src="'+f+'" width="'+w+'" height="'+h+'" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" '+e+'/>';
		s+='</object>';

		return s;
	};

	Util.getLogin = function(returnUrl){
		//if(confirm('로그인이 필요합니다. 로그인 페이지로 이동하시겠습니까?')){
			return "http://login.daum.net/accounts/loginform.do?daumauth=1&url="+encodeURIComponent(returnUrl);
		//}
	}

	Util.goLogin = function(){
		location.href=Util.getLogin(location.href);
	};
	Util.goPopLogin = function(){
		location.href=Util.getPopupLogin(location.href);
	};

	Util.getAdultLogin = function(returnUrl){
		//if(confirm('로그인이 필요합니다. 로그인 페이지로 이동하시겠습니까?')){
			return "http://login.daum.net/accounts/loginform.do?daumauth=1&service=adult_service&url="+encodeURIComponent(returnUrl);
		//}
	}
	Util.getPopupLogin = function(returnUrl){
		//if(confirm('로그인이 필요합니다. 로그인 페이지로 이동하시겠습니까?')){
			return "http://login.daum.net/accounts/loginform.do?daumauth=1&popup=1&url="+encodeURIComponent(returnUrl);
		//}
	}



	/*
	 * 팝업 자동 리사이징
	 *  - 윈도 환경에 따라 사이즈가 다를 수 있습니다.
	 *  - 팝업페이지의 스크립트 최하단에서 실행하십시오.
	 *
	 * (ex.) window.onload = function(){popupAutoResize();}
	*/
	Util.popupAutoResize = function() {

		var h = Math.max(document.documentElement.offsetHeight , document.body.scrollHeight);
		var h_v = (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight);
		h = h - h_v;
		

		window.resizeBy(0, h);
	}



	return Util;
})();
var Cartoon = {};
Cartoon.Util = (function(){
	var Util = {};
	
	Util.chkLogin = function(callback){
		var options = {  
			url: '/is_login?' + (new Date()).getTime(), // 호출할 url  
			method: "get",  
			onsuccess: function(r){

				var result = eval('(' + r.responseText + ')');
				callback(result.isLogin);

			}
		}
		new daum.Ajax(options).request();
	}

	Util.cabinetParam = '';
	Util.cabinet = function(id){
		Util.cabinetParam = id;
		var win = window.open('/common/pop_zzim','zzimPopup','width=400,height=250');
		win.focus();
	}

	Util.goAdult = function(retUrl){
		location.href = '/adult_warning?url='+retUrl;
	}
	Util.goAdultWarning = function(retUrl){
		location.href = '/adult_warning?url='+retUrl;
	}



	Util.embedSWF=function(f,w,h,options){
		var param={	id:"JESswf_"+(new Date()).getTime(), quality:'high',bgcolor:'#ffffff',allowScriptAccess:'always'}
		daum.extend(param, options);

		var id='id="'+param.id+'"';
		var name = 'name="'+param.id+'"';
		var p='',e='';	

		for(i in param) 
		{
			if(i=='id')continue;
			p+='<param name="'+i+'" value="'+param[i]+'">\n';
			e+=i+'="'+param[i]+'" ';
		}

		var s='<object '+id+' width="'+w+'" height="'+h+'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0">';
		s+='<param name="movie" value="'+f+'">'+ p;	
		s+='<embed '+name+' src="'+f+'" width="'+w+'" height="'+h+'" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" '+e+'/>';
		s+='</object>';
		document.write(s);
		return s;
	};

	return Util;
	
})();

Cartoon.tab = function(tab,sub, cnt){
	if(!cnt) cnt = 2;
	else cnt = cnt-1;

	var t = new daum.Tab( tab , { onChange:change } );
	t.select(daum.random(0,cnt));

	function change(event){
		var i = this.selectIndex;
		sub.each(function(el,i){
			daum.hide(el);
			daum.removeClassName(tab[i].parentNode, 'on');
		}); //전부 숨기고
		daum.show(sub[i]);
		//daum.setOpacity(sub[i],0.5);
		//daum.Fx.animate(sub[i], {opacity:1});
		daum.addClassName(tab[i].parentNode, 'on');
	}
}
// 이미지 크게보기
Cartoon.bigView = function(src){
	var dim = null;

	document.write('<div id="dimmed2" style="width:580px;display:none;">\
		<p id="dimmedtext2" class="close_btn" title="크게보기 이미지 닫기" style="cursor:pointer;"></p>\
		</div>');
	dim = new daum.DimmedLayer({ layer:$('dimmed2'), layerStyle : { marginLeft:'-290px', marginTop:'-300px' }, scroll : false, durationTime : 0, closeClassName : 'close_btn'}); //에니메이션 효과 있음

	daum.addEvent($$('.wrap_large_img')[0],'click',function(){show(src)});


	function show(src){
		dim.call(function(){
			$('dimmedtext2').innerHTML = '<img src="'+src+'" />';
		});
	}

};
// 만화뷰어 썸네일 네비
Cartoon.thumbNavi = function (ids,id){
	var layer = $$('.toon_navi')[0];
	var toggle = $$('.toon_navi .toggle')[0];
	var prev = $$('.toon_navi .prev')[0];
	var next = $$('.toon_navi .next')[0];
	var pan = $$('.toon_navi ul')[0];
	var list = $$('.toon_navi li');
	var status = -1;
	var pos = [];
	var selectIndex = 0;
	var cntPerPage = 7;
	var recentId = id;



	daum.addEvent(toggle,'click',fnToggle);
	daum.addEvent(prev,'click',fnPrev);
	daum.addEvent(next,'click',fnNext);

	var j = 0;
	list.each(function(o,i){
		daum.addEvent(o,'mouseover',function(){daum.addClassName(o,'over');});
		daum.addEvent(o,'mouseout',function(){daum.removeClassName(o,'over');});
		daum.addEvent(o,'click',load.bind(this,ids[i]));
		
		if(i%7==0){
			pos.push((j++*115*cntPerPage)+'px');
		}
	});
	ids.each(function(o,i){
		if(ids[i] == recentId) selectIndex = Math.floor(i/cntPerPage);
		daum.addClassName($('thumb'+id),'on');
	});


	hide();

	move(selectIndex);

	function load(id){
		daum.Util.thisMovie('viewerFla').load(id);

		daum.removeClassName($('thumb'+recentId),'on');
		daum.addClassName($('thumb'+id),'on');
		recentId = id;
	}

	function hide(){
		//daum.Fx.animate(layer,'bottom:-119px');
		daum.setCssText(layer,'bottom:-119px');
		daum.setCssText(toggle, 'top:-29px;height:29px;background-position:0 -27px');
		status = 0;
	}
	function close(){
		daum.Fx.animate(layer,'bottom:-119px');
		daum.setCssText(toggle, 'top:-29px;height:29px;background-position:0 -27px');
		status = 0;
	}
	function open(){
		daum.Fx.animate(layer,'bottom:0px');
		daum.setCssText(toggle, 'top:-27px;height:27px;background-position:0 0');
		status = 1;
	}
	function fnToggle(){
		(status==0) ? open() : close();
	}
	function fnPrev(){
		if(selectIndex == 0) selectIndex = pos.length-1;
		else selectIndex--;
		move(selectIndex)
	}
	function fnNext(){
		if(selectIndex == pos.length-1) selectIndex = 0;
		else selectIndex++;
		move(selectIndex)
	}
	function move(no){
		daum.Fx.animate(pan,'left:-'+pos[no]);
	}
}
// 찜하기 팝업
Cartoon.Cabinet = (function(){
	var Cabinet = {};

	Cabinet.init = function(){
		if(!opener || !opener.Cartoon.Util.cabinetParam){
			alert('잘못된 접근입니다.');
			self.close();
		}
		var options = {  
			url: "/cabinet", // 호출할 url  
			method: "POST", // method: get or post  
			async: true, // asynchronous  
			timeout: 5000,  
			paramString: opener.Cartoon.Util.cabinetParam, //  파라미터는 opener에 자바스크립트로 박혀있음.(최소한의 어뷰징 막기)
			encoding: "utf-8",  
			onsuccess: function(r){
				var r = eval('(' + r.responseText + ')');
				var status = r.status;
				if(status == 100){ // 로그인 필요
					location.href = daum.Util.getPopupLogin(location.href);
					return;
				}else if(r.status==200){ // 추가완료
					$E($$('.txt_zzim1')[0]).show();
				}else if(r.status==300){ // 중복
					$E($$('.txt_zzim2')[0]).show();
				}

				$E($$('.loading')[0]).hide();
				$E($$('.wrap_btn')[0]).show();


			}, // 성공일때 실행될 함수  
			onfailure: function(){alert('에러가 발생했습니다. 새로고침 후 재확인 부탁드립니다.');self.close();}, // 실패일때 실행될 함수  
			onloading: function(){}, // 로딩중일때 실행될 함수  
			ontimeout: function(){}
		}
		new daum.Ajax(options).request();
	}
	
	Cabinet.confirm = function(){
		var url = '/my/cabinet/';
		if(opener.location.href.indexOf('/brand/')>-1) url = '/my/cabinet/brand';
		else if(opener.location.href.indexOf('/genre/')>-1) url = '/my/cabinet/genre';
		else if(opener.location.href.indexOf('/league/')>-1) url = '/my/cabinet/leaguetoon';
		
		if(opener) opener.location.href=url;
		else window.open(url,'','');
		
		self.close();
	}
	return Cabinet;
})();

/******************************************
	탑
******************************************/
/*
 
function SlidingVisual(options){
	this.options={
		wrap:$$(".wrap_event")[0],
		els:$$(".wrap_event li"),
		big:620,
		small:119,
		defaultIndex:0
	};
	daum.extend(this.options,options);
	
	this.init();
};
SlidingVisual.prototype={
	activeIndex:null,
	init:function(){
		var that=this;
		var opt=this.options;
		
		opt.els.each(function(o,i){
			daum.addEvent(o,'mouseover',that.active.bind(that,i));
		});
		that.active(opt.defaultIndex);
	},
	active:function(i){
		var that=this;
		var opt=this.options;
		
		if(this.activeIndex==i) return;

		if(this.activeIndex!=null){ // 닫기
			daum.Fx.animate(opt.els[this.activeIndex],"width:"+opt.small+"px",{duration:0.7});
			//daum.setStyle(opt.els[this.activeIndex],"width:"+opt.small+"px");
			daum.Fx.animate(opt.els[this.activeIndex].getElementsByTagName("a")[0],"left:0px",{duration:0.7});
			//daum.setStyle(opt.els[this.activeIndex].getElementsByTagName("a")[0],"left:0px");
		}
		// 열기
		daum.Fx.animate(opt.els[i],"width:"+opt.big+"px",{duration:0.7});
		//daum.setStyle(opt.els[i],"width:"+opt.big+"px");
		daum.Fx.animate(opt.els[i].getElementsByTagName("a")[0],"left:-"+opt.small+"px",{duration:0.7});
		//daum.setStyle(opt.els[i].getElementsByTagName("a")[0],"left:-"+opt.small+"px");
		this.activeIndex=i;
		
	}
};
 */
/**
 * http://www.evanbyrne.com/article/class.js
 */
function $Class()
{	
	var args = $A(arguments);
	var obj = args.shift();
	var c = $ClassFn; //$ClassFn velocity 오류수정
	for(var key in c)
	{
		this[key] = c[key];
	}	
	for(key in obj)
	{
		this[key] = obj[key];
	}
	
	if(typeof(this.construct) == "function")
	{
		this.construct.apply(this,args);
	}
}
$ClassFn = {
	merge:function(obj){
	
		for(var key in obj)
		{
			this[key] = obj[key];
		}	
	}
};
function $Extend(obj1,obj2){
	
	var o = obj2;
	
	for(var key in obj1)
	{
		o[key] = obj1[key];
	}
	
	return o;

}	

/*
 * object를 파라미터형식의 string으로
 */
function object2Param(obj)
{
	var arr = [];		
	for(var i in obj)
	{
		arr.push( i +'='+ obj[i] );
	}
	return (arr.length>0) ? arr.join("&") : '';	
}
/*
 * string 에  a 링크 걸어주기
 */
function autolink(str)
{
	return str.replace(new RegExp("(http)://([-/.a-zA-Z0-9_~#%$?&=:200-377()]+)","gi"),"<a href='$1://$2' target='_blank'>$1://$2</a>")

}
/*
 * 트위터형태 시간뿌리기
 */
function getTwitterTime(timestamp)
{
	var t = timestamp,
	now = new Date(),
	sec = Math.floor((now.getTime() - t) / 1000),
	time = '';	
	
	var min = Math.floor( sec / 60 ) ;	
	if(min < 1) return sec+"초 전";
	else if(min < 60) return min+"분 전"; 

	var hour = Math.floor( sec / 60 / 60 );
	if(hour < 24) return hour+"시간 전";

	var day = Math.floor( sec / 60 / 60 / 24 );	
	if(day < 30) return day+"일 전";
	else  
	{
		//TODO 
		var d = new Date();
		d.setTime(timestamp);		
		return d.getFullYear()+"-"+ daum.Number.fillZero((d.getMonth()+1),2) +"-"+ daum.Number.fillZero(d.getDate(),2); 
	}
}

/*
 * var debug = new $Class($debug, ["RealtimeSearch"]);
 * debug.log(str);
 */
var $debug = {
	
	prefix : 'DEBUG',
	
	construct  : function(prefix){		
		if(prefix) this.prefix = "["+prefix+"]";				
	},
	log : function(){
		
		var argv = [this.prefix].concat(daum.$A(arguments));
		if(!!console && !!console.log)
		{
		    if(typeof(console.log) == "function")
		    {
		        console.log.apply(console, argv);
		    }
		    else	//IE8
		    {	            
		        console.log(argv.join(", "));
		    }
		}
	}
};


/*
 * 실시간 검색
 */

var RealtimeSearch = {
	
	IS_DEBUG : false,
	
	JSON_URL : '/timeline',		//실시간검색 API URL 
	//JSON_URL : '/js/relatime.js',
		
	UPDATE_CALL_TIME : 5000,	//최신글 업데이트 time
	UPDATE_INST_TIME : 1500,	//최신글을 넣어주는 주기	
	MAX_ITEM_LENGTH : 10,		//이 갯수보다 item length 가 크면 call하지 않음	
	LASTEST_NUM : 5,			//최신글을 한번에 가져올 갯수
	PAGE_NUM : 10,				//페이지 단위가져올 갯수	

	
	page : 1,				//현재 페이지
	updateCount : 0,	
	latestIndexTime : '', 	//최신글을 가져오기위해서 callLatest()에서 param.begindate 에 넣어줘야 
	totalCount : '',
	status : 'stop',		//현재 자동업데이트 중인지  play|stop	
	callTimeId : 0,			//interval id
	items : [],				//statck	
	insertTimeId :	0,		//interval id
	firstPageWrap : '',		//insert가 되어야할
	
	
	enddate : '',
	
	//생성자에서 options로 받는
	loadOnBottom : false,
	moreBtn : '',
	wrap : '',
	query : '',
	changeStatus : '',	
	isAdmin : '',
	artistsMap : '',
	
	//api에 던져주는 param
	param:{	
		qor : "",
		begindate : "",
		enddate : "",
		p : 1,					//page	
		callcnt : -1,	
		n : 10,					//한번에 가져올
		source_id : "microblog",
		req : "all",
		highlight : "no",
		output: "json"	
	},
	
	
	construct  : function(options){		
	
		daum.extend(this, options);
		
		this.$debug = new $Class($debug, ["RS"]);
		
		if(this.moreBtn) daum.addEvent(this.moreBtn, 'click', this.callPage.bind(this) );
		if(this.loadOnBottom) this.sid=daum.addEvent(this.wrap,'scroll',this.chkScrollBottom.bind(this));
		
		this.template = $('RealtimeSearchTpl').innerHTML.split('<!--division-->');
		this.template.each(function(tpl,i){ this.template[i] = tpl.trim();}.bind(this));
		
		
	},
	//맨아래 탐지
	chkScrollBottom : function(){
		var b=this.wrap;
		var e=b.scrollTop;
		var d=b.scrollHeight;
		var a=b.clientHeight;
		if(d-e===a){
			this.callPage();
		};
	},
	//자동 업데이트 시작
	play : function(){
		
		if(this.status=='play') return;
		
		//자동으로 가져오기 시작 
		this.callTimeId = setInterval( this.callLatest.bind(this) , this.UPDATE_CALL_TIME );		
		
		//자동 넣어주기 시작
		this.insertTimeId = setInterval( this.insertAuto.bind(this) , this.UPDATE_INST_TIME );
		
		this.status = 'play';
		if (typeof this.changeStatus == 'function') this.changeStatus();
	},
	//자동 업데이트 중지
	stop : function(){
		if(this.status=='stop') return;
		
		clearInterval(this.callTimeId);
		clearInterval(this.insertTimeId);	
		
		this.status = 'stop';
		if (typeof this.changeStatus == 'function') this.changeStatus();
	},
	debug : function(){
		if(this.IS_DEBUG) this.$debug.log( arguments );
	},

	getTwitterTime : function(timestamp){
		return getTwitterTime(timestamp);
	},
	updateItemTime : function(){

		//var els = daum.getElementsByClassName(this.warp, 'rs-time');
		var els = $$('.rs-time');
		
		els.each(function(el,i){			
			var ts = el.getAttribute('timestamp');
			el.innerHTML = this.getTwitterTime(ts);			
		});		
	},
	getItemString : function(item){
		if(!this.isAdmin)
		{
			item.channel_id='';
		}
		
		return {					
			permLink : item.doc_url,
			time : this.getTwitterTime(item.pub_time),
			fullTime : item.pub_date,
			nickLink : item.display_url,
			nickImg : item.image_url,
			nick : this.artistsMap[item.display_name] +'('+item.display_name+')',
			desc : item.description2.replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&quot;/g,'"'),
			socialEng : (item.source_id=='twitter')?'twiter':'yozm'	,
			socialKor : (item.source_id=='twitter')?'트위터':'요즘',
			timeClass : "rs-time",
			channelId : item.channel_id,
			timestamp : item.pub_time					
		};
	},
	//페이지 더보기
	callPage : function(page){
		if(this.isRunning) return;
		this.isRunning=true;
		
		if(typeof page !='number') page = ++this.page;
				
		this.param.userid = this.query;
		//this.param.p = page;
		this.param.p = 1; //페이지는 항상 1로 고정 enddate로 조정 
		this.param.n = this.PAGE_NUM;
		this.param.begindate = ''; //페이지 단위로 부를때는 begindate 필요없음
		this.param.enddate = this.enddate;
		this.param.callcnt++;
		
		new daum.Ajax().request(this.JSON_URL, {
			onsuccess: this.callbackPage.bind(this),
			paramString:object2Param(this.param) 
		});
		
		if(this.moreBtn) daum.hide(this.moreBtn);
		
	},	
	callbackPage : function(res){

		if(this.moreBtn) daum.show(this.moreBtn);		
		
		var data = daum.jsonToObject(res.responseText).channel;
		var str = '';
		this.debug(data);	
				
		this.totalCount = data.totalCount;		
		
		if(this.totalCount==0)
		{
			 if(this.page==1) str = '<li style="height:20px;text-align:center">실시간검색 결과가 없습니다</li>';
		}
		else
		{						
			var item = data.item;	
			var length = item.length;
			var str='',desc='',date='';
			
			for(var i=0; i<length; i++)
			{
				str += new daum.Template(this.template[1]).evaluate(this.getItemString(item[i]));				
			}

			if(!this.latestIndexTime) this.latestIndexTime = item[0].latest_index_time; //latestIndexTime 설정
			
			this.enddate = item[item.length-1].pub_date.replace(/-| |:/g,'');
			
			
			//this.latestIndexTime = '20110125112700100475'; //테스트용
		}
		/*
		this.wrap.innerHTML+=new daum.Template(this.template[0]).evaluate({
			item:str,
			page:'page'+this.page
		});
		*/
		var els=new daum.Template(this.template[0]).toElement({
			item:str,
			page:'page'+this.page
		});
		this.wrap.appendChild(els);
		if(this.loadOnBottom) this.wrap.appendChild(this.moreBtn);
			
		//더이상 없을경우 더보기 숨기기 
		if(this.totalCount==0 || length==0)
		{
			if(this.moreBtn) daum.hide(this.moreBtn);
			if(this.loadOnBottom) daum.Event.stopObserving(this.sid);
		}
		
		if(this.page==1)
		{
			this.firstPageWrap = daum.getFirstChild(this.wrap);
		}
		this.isRunning=false;
	},	
	//최신글 업데이트
	callLatest : function(){
		
		if(this.items.length >= this.MAX_ITEM_LENGTH)
		{
			return; //maxAticleLength개보다 많을경우 skip 하기	
		} 
		
		this.param.userid = this.query;
		this.param.begindate = this.latestIndexTime;
		this.param.callcnt++;
		this.param.n = this.LASTEST_NUM; 		
		
		new daum.Ajax().request(this.JSON_URL, {
			onsuccess: this.callbackLatest.bind(this),
			paramString:object2Param(this.param) 
		});		
		
	},
	callbackLatest : function(res){
		
		var data = daum.jsonToObject(res.responseText).channel;
		this.debug(data);
		
		if(data.item.length > 0)
		{
			//this.items = this.items.concat(data.item);
			this.items = data.item.concat(this.items);
			this.latestIndexTime = data.item[0].latest_index_time;
		}
		
	},
	setPlayButton : function(el){
		daum.addEvent(el,'click', this.play.bind(this));
	},
	setStopButton : function(el){
		daum.addEvent(el,'click', this.stop.bind(this));
	},
	
	insertAuto : function(){	

		var item = this.items.pop();
		if(!item) return;		
		
		var tpl = new daum.Template( this.template[1] );
		var dom = tpl.toElement( this.getItemString(item) );
			
		daum.setOpacity(dom, 0);
		dom.style.backgroundColor='#FEEF26';
			
		this.firstPageWrap.insertBefore(dom, daum.getFirstChild(this.firstPageWrap) );		
		daum.Fx.animate(dom, {opacity:1,backgroundColor:'#fcfcfc'},{duration:1});
		
		//전체 시간들 업데이트
		this.updateItemTime();
		
	}
};


/**
 * 서비스팜 이미지URL을 썸네일URL로 변경
 * 종류 - R102x136,R114x152 
 **/
function getThumbnailUrl(originalUrl, format) {
	var originalIndexString = "uf.daum.net/image/";
	var serviceFarmIndexString = "http://i1.cartoon.daumcdn.net/svc/image/";
	var thumbnailString = "http://i1.daumcdn.net/thumb/";
	var newUrl = "";
	
	originalUrl = originalUrl.replace("/attach/", "/image/");
	
	if(originalUrl == null) {
		return originalUrl;
	} else if (originalUrl.indexOf(originalIndexString) >= 0) {
		newUrl = originalUrl.replace("/image/", "/" + format + "/");
		newUrl = newUrl.replace("/attach/", "/" + format + "/");
		return newUrl;
	} else if (originalUrl.indexOf(serviceFarmIndexString) >= 0){
		newUrl = originalUrl.replace(serviceFarmIndexString, thumbnailString + format + "/");
		return newUrl;
	} else {
		return originalUrl;
	}
}
/**
 * 만세탑 상단 비쥬얼 액션함수.
 **/
function SlidingVisual(options){
	this.options={
		wrap:$$(".wrap_event")[0],
		els:$$(".wrap_event li"),
		big:620,
		small:119,
		defaultIndex:0
	};
	daum.extend(this.options,options);
	
	this.init();
};
SlidingVisual.prototype={
	activeIndex:null,
	init:function(){
		var that=this;
		var opt=this.options;
		
		opt.els.each(function(o,i){
			daum.addEvent(o,'mouseover',that.active.bind(that,i));
			daum.addEvent(o,'click',that.active.bind(that,i));
		});
		that.setPos(opt.defaultIndex);
	},
	active:function(i,e){
		var el=daum.getElement(e);
		var posX=e.clientX-daum.getCoords(el).left;

		this.movePos(i);
		
		if(posX<119) daum.stopEvent(e); // 터치기기에 대응. 작은이미지 영역에서는 링크 클릭을 막음.
	},
	getPos:function(selectedIndex){
		var opt=this.options;
		var r=[], pos;
		
		opt.els.each(function(o,i){
			pos=i*opt.small;
			if(i>selectedIndex) pos+=opt.big-opt.small;
			r.push(pos);
		});
		return r;
	},
	movePos:function(index){
		var opt=this.options;
		var pos=this.getPos(index);

		opt.els.each(function(o,i){
			daum.Fx.animate(o,"left:"+pos[i]+"px");
			daum.Fx.animate(o.getElementsByTagName("a")[0],"left:0px",{duration:0.7});
		});
		daum.Fx.animate(opt.els[index].getElementsByTagName("a")[0],"left:-"+opt.small+"px",{duration:0.01});

		this.activeIndex=index;
	},
	setPos:function(index){
		var opt=this.options;
		var pos=this.getPos(index);

		opt.els.each(function(o,i){
			daum.setStyle(o,"left:"+pos[i]+"px");
		});
		daum.setStyle(opt.els[index].getElementsByTagName("a")[0],"left:-"+opt.small+"px");

		this.activeIndex=index;
	}
};
/**
 * 만세탑 관련함수 모음.
 * 오늘은 뭘볼까, 타임라인
 **/
var Top = (function(){
	// 오늘은 뭘볼까.
	var toonList = function(){
		var _urls={
				"webtoonCategory" : "/data/webtoon/list_by_category/",
				"webtoonGenre" : "/data/webtoon/list_by_genre/",
				"brand" : "/data/comics/list_by_genre/brand/",
				"genre" : "/data/comics/list_by_genre/genre/"
			},
			_tabName={
				"webtoonCategory" : {"1":"스토리","2":"에피소드","3":"옴니버스"},
				"webtoonGenre" : {"11":"지식", "1":"학원", "2":"드라마", "3":"스포츠", "4":"판타지", "5":"순정", "6":"코믹", "7":"무협", "12":"액션", "8":"공포", "9":"탐정", "10":"기타"},
				"comics" : {"99":"성인","11":"지식", "1":"학원", "2":"드라마", "3":"스포츠", "4":"판타지", "5":"순정", "6":"코믹", "7":"무협", "12":"액션", "8":"공포", "9":"탐정", "10":"기타"}
			},
			_toonType={"webtoon":"웹툰","webtoonGenre":"웹툰","brand":"브랜드관","genre":"장르만화"},
			_wrap= $$(".tmpListWrap")[0], _urlType,_type2,_id,_wtid,_ctid,
			_default={'webtoonType':'webtoonCategory','webtoonCategoryId':2,'webtoonGenreId':6,'brandId':5,'genreId':7};
		
		
		if(hashParameter.type){
			init(hashParameter.type,hashParameter.id);
		}else{
			new daum.Ajax({
				url : getTimestampUrl("/data/contentuser/user_type"),
				onsuccess : function(r){
					var data = eval("("+r.responseText+")");
					init(data.data.userType, data.data.genreId);
				}
			}).request();
		}
		
		function init(type,id){
			initMainTab(type);
			render(type,id);
		};
		// 웹툰/브랜드/장르탭 초기화
		function initMainTab(t){
			var type=["webtoon","brand","genre"],
				els=$$(".tab_recomm li"),
				t=(t.indexOf("webtoon")>-1) ? "webtoon" : t;
			
						
			daum.addClassName(els[type.indexOf(t)],"on");
			
			els.each(function(o,i){
				daum.addEvent(o,"click",function(){
					render(type[i]);
					els.each(function(o2,i){
						if(o==o2) daum.addClassName(o2,"on");
						else daum.removeClassName(o2, "on");
					});
					
					try{ct.call(el);}catch(e){}; // ct 
				});
			});
		};

		function render(type, id){
			if(id!=99){
				renderAction(type,id); 
				return;
			}
			
			// 성인탭이면 로그인/성인 체크
			new daum.Ajax({
				url : "/is_login",
				onsuccess : function(r){
					var r = eval('('+r.responseText+')');
					
					if(!r.isLogin){
						location.href=daum.Util.getLogin("http://cartoon.media.daum.net/#type="+type+"&id="+id); 
						return;
					}
					if(!r.isAdult){
						alert('성인만 접근 가능한 컨텐츠입니다.');
						if(document.referrer.indexOf("http://cartoon.meida.daum.net/#type")>-1) return;
						else location.href="http://cartoon.meida.daum.net/";
					}else{
						renderAction(type,id); 
					}
					
				}
			}).request();
			
		};
		function renderAction(type, id){ // webtoon, webtoonCategory, webtoonGenre, brand, genre
			_urlType=(type=="webtoon") ? _default["webtoonType"] : type; // webtoonCategory, webtoonGenre, brand, genre
			_type=(type=="brand"||type=="genre") ? "comics" : type; // webtoonCategory, webtoonGenre, comics
			_type=(_type=="webtoon") ? _default["webtoonType"] : _type; // webtoonCategory, webtoonGenre, comics
			_id = id || _default[_urlType+"Id"]; // 디폴트탭 - 웹툰은 2(에피소드), 코믹스는 1(학원)
			
			_default[_urlType+"Id"]=_id;
			if(_type.indexOf("webtoon")>-1){
				_default["webtoonType"]=_type;
			};
			
			var url=_urls[_urlType]+_id,
				addData={"tabName":_tabName[_type][_id],"toonType":_toonType[_type],"type":_urlType};
			
			if(_type=="comics"){
				if(_ctid) _ctid.reload(url,addData);
				else _ctid=new TemplateRender({"tmpId":"comicsList","rendEl":_wrap,"dataUrl":url,"addData":addData,"callback":complateHandler});
			}else{
				if(_wtid) _wtid.reload(url,addData);
				else _wtid=new TemplateRender({"tmpId":"webtoonList","rendEl":_wrap,"dataUrl":url,"addData":addData,"callback":complateHandler});
			}
			
			changeHashParam({"type" :_urlType, "id":_id});
		};
		function complateHandler(d){
			activeTab();
			addEventToTab();
		};
		function activeTab(){
			var el = daum.Element.getElementsByClassName($$(".tabClass")[0],_type+_id)[0];
			daum.addClassName(el,"on");
		};
		function addEventToTab(){
			$$(".tabClass li").each(function(o,i){
				var type, id, cl, r;
				cl=o.className.replace(/^on\s|\son/ig,""); // 앞뒤의 on class제거
				r = /([a-zA-Z]{1,})([0-9]{1,})/.exec(cl);
				
				if(r[1]=="comics") type=_urlType;
				else type=r[1];
				
				daum.addEvent(o,"click",render.bind(o,type,r[2]));
			});
		};
	};
	// 날개 웹툰리그 랭킹 12
	var league12List = function(){
		new TemplateRender({tmpId:'league12List',rendEl:$$('.league12List')[0],dataUrl:"/data/leaguetoon/list/collection?page_size=12&sort=ranking"});
	};
	// 그림작가/글작가 중복체크, 링크까지
	var getArtists = function(a){
		var name1=a[0].name, id1=a[0].id,
			name2=a[1].name, id2=a[1].id,
			r;
		
		if(name1==name2){
			r='<a href="/artist/total/'+id1+'" title="'+name1+'">'+cutString(name1,"5","..")+'</a>';
		}else{
			r='<a href="/artist/total/'+id1+'" title="'+name1+'">'+cutString(name1,"3","")+'</a>/<a href="/artist/total/'+id2+'" title="'+name2+'">'+cutString(name2,"2","")+'</a>';
		};
		return r;
	};
	// 타임라인 오늘 날짜 표시
	var renderToday = function(t){
		var h='\
			<span class="txt_num num'+t.charAt(0)+'">'+t.charAt(0)+'</span>\
			<span class="txt_num num'+t.charAt(1)+'">'+t.charAt(1)+'</span>\
			<span class="txt_num num'+t.charAt(2)+'">'+t.charAt(2)+'</span>\
			<span class="txt_num num'+t.charAt(3)+'">'+t.charAt(3)+'</span>\
			<span class="txt_num dot">.</span>\
			<span class="txt_num num'+t.charAt(4)+'">'+t.charAt(4)+'</span>\
			<span class="txt_num num'+t.charAt(5)+'">'+t.charAt(5)+'</span>\
			<span class="txt_num dot">.</span>\
			<span class="txt_num num'+t.charAt(6)+'">'+t.charAt(6)+'</span>\
			<span class="txt_num num'+t.charAt(7)+'">'+t.charAt(7)+'2</span>';
		$$(".wrap_timeline .date")[0].innerHTML=h;
	};
	// 상단 슬라이딩 비쥬
	var renderVisual = function(){
		//  /js/top_ban.js  /xml/cartoon/home_2011_top.js
		daum.Element.setPngOpacity($$(".cartoonhome_top .left")[0],"http://img-section.daum-img.net/cartoon/cartoonhome/bar_left.png");
		daum.Element.setPngOpacity($$(".cartoonhome_top .right")[0],"http://img-section.daum-img.net/cartoon/cartoonhome/bar_right.png");
		new TemplateRender({tmpId:'topVisual',rendEl:$$('.topVisual')[0],dataUrl:"/xml/cartoon/home_2011_top.js",callback:function(){
			new SlidingVisual({});
		}});
	};
	// 만세타임라
	var timeline = function(){
		// 작가 아이디 가져오기
		new daum.Ajax({
				"url":"/data/timeline/list",
				"onsuccess":function(r){
					var d = eval("("+r.responseText+")");
					var artists=[],artistsMap={};
					
					$A(d.data).each(function(o,i){
						artists.push(o.account);
						artistsMap[o.account]=o.name;
					});
					
					var rs = new $Class(RealtimeSearch,{
						loadOnBottom : true,
						artistsMap : artistsMap,
						query : encodeURIComponent(artists.join(",")), 
						wrap : $$('.realtimeWrap')[0],
						moreBtn : $$('.realtimeWrap .more_view')[0],
						
						changeStatus : function(){
							var start=$$('.wrap_timeline .start')[0],
								stop=$$('.wrap_timeline .stop')[0];
							if(this.status == 'play')
							{
								daum.show(stop);
								daum.hide(start);
							}
							else//stop
							{			
								daum.show(start);
								daum.hide(stop);
							}
						}
					});

					rs.setPlayButton( $$('.link_restart')[0] );
					rs.setStopButton( $$('.link_stop')[0] );

					rs.callPage(1);
					rs.play();
					
				}
			}).request();
	};
	
	function init(today){
		renderVisual();
		toonList();
		league12List();
		renderToday(today);
		timeline();
	};
	
	return {init : init, getArtists : getArtists};
})();

/******************************************
	날개
******************************************/
var Right = {};
Right.rookie = function(){
	new TemplateRender({tmpId:'rookieList',rendEl:$$('#mRight .rookieList')[0],dataUrl:'/xml/cartoon/leaguetoon_wing_rookie.js'});//새내
};
Right.leaguetoon = function(){
	var tab = $$('.wrap_best h4 a');
	var sub = $$('.wrap_best ol');
	//탭 생성
	Cartoon.tab(tab,sub);

	new TemplateRender({tmpId:'netiznbestList',rendEl:$$('#mRight .userList')[0],dataUrl:'/xml/cartoon/leaguetoon_wing_weekly_best_user.js',addData:{type:"userList"}});//독자 리스트
	new TemplateRender({tmpId:'netiznbestList',rendEl:$$('#mRight .recommendList')[0],dataUrl:'/xml/cartoon/leaguetoon_wing_weekly_best_recommend.js',addData:{type:"recommendList"}});//추천수 리스트
	new TemplateRender({tmpId:'netiznbestList',rendEl:$$('#mRight .upScoreList')[0],dataUrl:'/xml/cartoon/leaguetoon_wing_weekly_best_latest_up_score.js',addData:{type:"upscoreList"}});//급등지수 리스트
//	new TemplateRender({tmpId:'netiznbestList',rendEl:$$('#mRight .userList')[0],dataUrl:'/js/wing.js'});//독자 리스트
//	new TemplateRender({tmpId:'netiznbestList',rendEl:$$('#mRight .recommendList')[0],dataUrl:'/js/wing.js'});//추천수 리스트
//	new TemplateRender({tmpId:'netiznbestList',rendEl:$$('#mRight .scoreList')[0],dataUrl:'/js/wing.js'});//평점 리스트
};
Right.today = function(){
	var tab = $$('.area_today h4 a');
	var sub = $$('.area_today div.list');

	//탭 생성
	Cartoon.tab(tab,sub);

	new daum.PrevNext($$('.list_recent .prev')[0],$$('.list_recent .next')[0],$$('.list_recent li'),{listCnt:4});


	$$('.list_recent li').each(function(o,i){
		daum.addEvent(o,'mouseover',function(){daum.addClassName(daum.getFirstChild(o),'on')});
		daum.addEvent(o,'mouseout',function(){daum.removeClassName(daum.getFirstChild(o),'on')});
	});
}
Right.poptoon = function(){
	var tab = $$('.area_poptoon h4 a');
	var sub = $$('.area_poptoon ol');

	//탭 생성
	Cartoon.tab(tab,sub)
};
Right.popcont = function(){
	var tab = $$('.area_popcont h4 a');
	var sub = $$('.area_popcont .list');

	//탭 생성
	Cartoon.tab(tab,sub);
};
Right.popularToon = function(){
	var tab = $$('.area_searchresult_pop_webtoon h4');
	var sub = $$('.area_searchresult_pop_webtoon ol');
	
	//탭 생성
	Cartoon.tab(tab,sub,2);

};
Right.searchBest = function(){
	var tab = $$('.area_best h4');
	var sub = $$('.area_best ol');
	
	//탭 생성
	Cartoon.tab(tab,sub,2);
};

//마이피플 유저인지/등록했는지/등록하기
//웹툰/마이에서 사용
var MyPeople={
	isLoading: false,
	url: {
		install: "/mypeople/pop_info?type=install",
		setting: "/mypeople/pop_info?type=setting",
		already: "/mypeople/pop_info?type=already"
	},
	installUrl: {
		"pc": "http://mobile.daum.net/web/mobileApp.daum?serviceId=mypeople",
		"android": "https://market.android.com/details?id=net.daum.android.air",
		"iOS": "http://itunes.apple.com/kr/app/id373539016?mt=8"
	},
	submit: function(id){
		var win=window.open("/mypeople/pop_info?webtoon_id="+id, "mypeople", "width=503,height=293,resizable=yes");
			win.focus();
	},
	check: function(id, callback){
		var id=id||daum.urlParameter.webtoon_id;
		if(!id){
			alert('잘못된 접근입니다. 다시 시도해 주세요.');
			return false;
		};
		
		this.isLoading=true;
		new daum.Ajax({
			url: getTimestampUrl("/data/mypeople/my_people_check?webtoon_id="+id),
			onsuccess: function(d){
				var data=eval("("+d.responseText+")");
				if(data.result.status==200){
					if(callback) callback(data,id);
					else this.checkSuccess(data,id);
				}else{
					alert(data.result.message);
				};
				this.isLoading=false;
				
			}.bind(this)
		}).request();
	},
	checkSuccess: function(d,id){
		// 로그인
		if(!d.data.isLogin){
			daum.Util.goPopLogin(location.href);
			return false;
		};
		// 마이피플 설치 안내
		if(d.data.myPeopleStatus!="on"){
			location.href=this.url.install;
			return false;
		};
		// 마이피플 알림 이미 등록
		if(d.data.cabinetStatus=="on"){
			location.href=this.url.already;
			return false;
		};

		location.href=this.url.setting+"&webtoonId="+id;
	},
	set: function(id){
		new daum.Ajax({
			url: getTimestampUrl("/data/mypeople/my_people_register?on_off=on&webtoon_id="+id),
			onsuccess: function(d){
				var data=eval("("+d.responseText+")");
				if(data.result.status==200) location.href="/mypeople/pop_info?type=complete";
				else alert(data.result.message);
				
			}.bind(this)
		}).request();
	},
	install: function(){
		var url=this.installUrl.pc;
		var win;
			win=window.open(url,"install","");
			win.focus();
		self.close();
	},
	toggle: function(o,id){
		var onoff=o.className=="off" ? "on" : "off";
		this.check(id, function(d, id){
			// 로그인
			if(!d.data.isLogin){
				Util.goPopLogin(location.href);
				return false;
			};
			// 마이피플 설치 안내
			if(d.data.myPeopleStatus!="on"){
				var win=window.open(this.url.install, "mypeople", "width=503,height=310,resizable=yes");
					win.focus();
				return false;
			};

			new daum.Ajax({
				url: getTimestampUrl("/data/mypeople/my_people_register?on_off="+onoff+"&webtoon_id="+id),
				onsuccess: function(d){
					var data=eval("("+d.responseText+")");
					if(data.result.status==200){
						o.className=onoff;
					}
					else alert(data.result.message);
					
				}.bind(this)
			}).request();
		}.bind(this));
	},
	goMyPage: function(){
		var url="/my/cabinet/";
		var win;
		if(opener){
			opener.location.href=url;
			opener.focus();
		}else{
			win=window.open(url,"cartoon","");
			win.focus();
		};
		self.close();
	}
};
/******************************************
	웹툰
******************************************/
var Webtoon = {};

Webtoon.Note={
	page: 1,
	data: null,
	id: null,
	load: function(){
		this.id=$$(".note_wrap")[0].getAttribute("data-id");
		new daum.Ajax({
			url: getTimestampUrl("/data/relatedcontent/list/"+this.id),
			onfailure: function(){
				alert("에러가 발생했습니다. 새로고침 후 다시 시도해 주세요.");
			},
			onsuccess: function(d){
				var r=eval("("+d.responseText+")");
				
				if(r.result.status!=200){
					alert("에러가 발생했습니다. 새로고침 후 다시 시도해 주세요.");
					return false;
				};
				
				this.data=r.data.relatedContentList || [];
				this.data.reverse();
				this.set();
				
			}.bind(this)
		}).request();
	},
	set: function(){
		if(this.data && this.data.length>0){
			daum.hide($$(".note_wrap .no_item_wrap")[0]);
			daum.show($$(".note_wrap .item_wrap")[0]);
			this.render();
		}else{
			daum.hide($$(".note_wrap .item_wrap")[0]);
			daum.show($$(".note_wrap .no_item_wrap")[0]);
		};
		// 관리자일 경우 등록/삭제버튼
		var formEl=$$(".note_wrap form")[0];
		var delEl=$$(".note_wrap .btn_del")[0];
		if(delEl&&!daum.hasObserver(delEl, 'click')) daum.addEvent(delEl, 'click', this.remove.bind(this));
		if(formEl&&!daum.hasObserver(formEl, 'submit')) daum.addEvent(formEl, 'submit', this.submit.bind(this));

	},
	go: function(n){
		this.page=n;
		this.render();
		
		daum.Fx.scrollTo($$(".note_wrap")[0],{duration:10});
	},
	render: function(){
		var data=this.data[this.page-1];
		var url=data.url;
	
		new daum.ToonPaging($$('.note_wrap .inner_paging')[0],{curPage: this.page, click : this.go.bind(this), cntPerPage: 10, cntTotalItem : this.data.length, cntItemPerPage: 1});
		
		//daum.load(url);
//		console.log(url);
		
		$$(".note_wrap iframe")[0].src=url;
		
		
	},
	callback: function(d){
		var doc=d.BBS.DOC;
		var id=doc.ID;
		var title=doc.SUBJECT;
		var content=doc.CONTENT;
		
		$$(".note_wrap .txt_tit")[0].innerHTML=title;
		$$(".note_wrap .cont")[0].innerHTML=content;
		
		PowerEditorFn.replaceTVPot();
	},
	refresh: function(){
		this.page=1;
		this.load();
	},
	submit: function(e){
		daum.stopEvent(e);
		
		var field=$$(".note_wrap form .tf_note")[0];
		var gaiaUrl=field.value;
		if(gaiaUrl.empty()){
			alert("게시판 URL을 넣어 주세요.");
			return false;
		};
		
		var url="/data/relatedcontent/register/"+this.id;
		var param="related_service=webtoon&content_type=bbs&url="+encodeURIComponent(gaiaUrl);
		new daum.Ajax({
			method: "post",
			url: url,
			paramString: param,
			onfailure: function(){
				alert("에러가 발생했습니다. 새로고침 후 다시 시도해 주세요.");
			},
			onsuccess: function(r){
				var data=eval("("+r.responseText+")");
				
				if(data.result.status!=200){
					alert("에러가 발생했습니다. 새로고침 후 다시 시도해 주세요.");
					return false;
				};
				
				alert("등록되었습니다.");
				field.value="";
				this.refresh();
			}.bind(this)
		}).request();
	},
	remove: function(e){
		daum.stopEvent(e);
		
		if(!confirm("삭제하시겠습니까?")) return false;
		
		var url="/data/relatedcontent/remove";
		var data=this.data[this.page-1];
		var param="id="+data.id;
		
		new daum.Ajax({
			method: "post",
			url: url,
			paramString: param,
			onfailure: function(){
				alert("에러가 발생했습니다. 새로고침 후 다시 시도해 주세요.");
			},
			onsuccess: function(r){
				var data=eval("("+r.responseText+")");
				
				if(data.result.status!=200){
					alert("에러가 발생했습니다. 새로고침 후 다시 시도해 주세요.");
					return false;
				};
				
				alert("삭제되었습니다.");
				this.refresh();
			}.bind(this)
		}).request();
	}
};

// 웹툰 개별홈 찜하기
// 스크램하기
Webtoon.Scrap = (function(){
	var Scrap = {};
	var layer = '';
	var scrapLyaer = '';
	var form = '';
	var html = '';

	Scrap.init = function(){
		layer= $E($$('.layer_pum')[0]);
		scrapLyaer = $E($$('.scrap_html')[0]);
		form = $E($$('.url_target')[0]);

		insert2form();
	};
	Scrap.show = function(o){
		layer.setLeft($E(o).getCoordsTarget($$('.area_toon_info')[0]).left-200);
		layer.show();
	}
	Scrap.hide = function(){
		layer.hide();
	}
	Scrap.clipboard = function(){
		if(daum.Browser.ie){
			window.clipboardData.setData('Text',html);
			alert("html 소스가 복사되었습니다.");
		} else {
			copy();
		}

	}
	var copy = function(){
		var ua = navigator.userAgent.toLowerCase(); 
		if(ua.indexOf('mac')>0){
			alert('선택된 소스를 복사(command+c)하여 붙여넣기(command+v) 하시면 됩니다.');
		} else {
			alert('선택된 소스를 복사(ctrl+c)하여 붙여넣기(ctrl+v) 하시면 됩니다.');
		}
		form.select();
	}
	var insert2form = function(){
		html = scrapLyaer.innerHTML.replace(/\n/g, '').replace(/\r/g, '').replace(/\t/g,'');

		form.value = html;
	}

	return Scrap;
})();
// 정보더보기
Webtoon.toggleMoreInfo = function(o){
	var layer = $$('div.wrap_more')[0];
	$E(layer).toggle();
	if($E(o).hasClassName('btn_webtoon_more')){
		$E(o).removeClassName('btn_webtoon_more');
		$E(o).addClassName('btn_webtoon_fold');
	}else{
		$E(o).removeClassName('btn_webtoon_fold');
		$E(o).addClassName('btn_webtoon_more');
	}
}
// 독자평점 이미지화
Webtoon.writeImageNum = function(s){
	var s = s.toString();
	var s1 = s.charAt(0);
	var html = '';
	for(var i = 0; i<s.length; i++){
		if(s.charAt(i) == '.') html += '<span class="img_num num_dot">.</span>';
		else html += '<span class="toon_point"><span class="img_num num_'+s.charAt(i)+'">'+ss.charAt(i)+'</span>';
	}
	html += '</span><span class="hide_txt">점</span>';
	document.write(html);
}
Webtoon.setVotePoint = function(s){
	var s = Math.round(s*10)/10;
	s = s.toString();
	var html = '';
	for(var i = 0; i<s.length; i++){
		if(s.charAt(i) == '.') html += '<span class="img_num num_dot">.</span>';
		else html += '<span class="toon_point"><span class="img_num num_'+s.charAt(i)+'">'+s.charAt(i)+'</span>';
	}
	html += '</span><span class="hide_txt">점</span>';
	$('votePoint').innerHTML = html;
	$('voteGrade').style.width = (s.toInt()*10) + "%";
}
// 웹툰뷰 갤러리
Webtoon.Gallery = (function(){
	var Gallery = {};
	var obj = null;
	var wrap = null;

	Gallery.init = function(data){
		wrap = $E($$('.layer_gallery_view')[0]);
		var tmp = new daum.Template('<div class="list_item"><div class="wrap_dimmed"></div><div class="img"><img src="#{img}" alt="" /></div><a href="#{img}" class="type_common_btn btn_download">다운로드</a></div>');
		obj=new daum.ToonGallery(
			$('gallery'), 
			tmp, data, 
			{
				index:1,
				onStart:function(){console.log('커스텀 스타트')},
				onEnd:function(){console.log('커스텀 엔드')}
			}
		);

		$E($$('.gallery_prev')[0]).addEvent('click',function(e){
			Gallery.prev();
			daum.stopEvent(e);
		});
		$E($$('.gallery_next')[0]).addEvent('click',function(e){
			Gallery.next();
			daum.stopEvent(e);
		});
	}
	Gallery.prev = function(){
		obj.prev();
	}
	Gallery.next = function(){
		obj.next();
	}
	Gallery.go = function(no){
		wrap.show();
		obj.go(no);
	}
	Gallery.hide = function(no){
		if(wrap) wrap.hide();
	}



	return Gallery;

})();
// 웹툰 개별 홈 - 탭
Webtoon.activeViewTab = function(n){
	$$(".tabContentWrap").each(function(o){
		daum.hide(o);
	});
	$$(".tab_webtoon_view li").each(function(o){
		daum.removeClassName(o,"on");
	});
	
	daum.addClassName($$("."+n)[0],'on');
	daum.show($$('.'+ n + '_wrap')[0]);

	// 작품노트 init
	if(n=="note"&&!Webtoon.Note.data) Webtoon.Note.load();
};
// 웹툰 평점팝업
Webtoon.voteId = '';
Webtoon.voteServiceId = '4';//웹툰4, 리그툰6
Webtoon.voteWin = null;
Webtoon.vote = function(id,serviceId){
	Webtoon.voteId = id;
	if(serviceId) Webtoon.voteServiceId=serviceId;

	Webtoon.voteWin = window.open('about:blank','vote','width=503,height=290');
	Cartoon.Util.chkLogin(Webtoon.vote.popup);
};
Webtoon.vote.popup = function(isLogin){
	var url = '/vote/pop_vote?service_target_id='+Webtoon.voteId+'&vote_service_id='+Webtoon.voteServiceId;
	if(isLogin){ // 평점팝업
		Webtoon.voteWin.location.href = url;
		Webtoon.voteWin.focus();
	}else{ // 로그인 필요
		Webtoon.voteWin.location.href = daum.Util.getPopupLogin('http://'+location.host+url);
		Webtoon.voteWin.focus();
	}
};
//웹툰홈 배너-리그홈배너와 동일
Webtoon.Banner=(function(){
	// 배너 넣기
	function banner(){
		var _url=getTimestampUrl('/xml/cartoon/webtoon_banner.js'),
			_wrap=$$(".bnr_bar")[0];
		
		new daum.Ajax({
			url : _url,
			onsuccess : function(r){
				var d=eval('('+r.responseText+')');
				var el=d[daum.random(0,d.length-1)];
				_wrap.innerHTML='<a href="'+el.url+'"><img src="'+el.image+'" alt="'+el.alt+'" /></a>';
			}
		}).request();
	};
	
	return {init:banner};
})();
// 웹툰 평점주기-팝업에서 처리
Webtoon.doVote = function(id,serviceId,score,votedScore){
	var param = 'service_target_id='+id+'&vote_service_id='+serviceId+'&score='+score;
	var file = (votedScore && votedScore!='') ? '/vote/modify_score' : '/vote/';

	var options = {  
		url: file,  
		method: "POST", 
		paramString: param,
		onsuccess: function(r){
			var d = eval('(' + r.responseText + ')');
			var status = d.status;
			if(status == -1){ // 중복
				location.href = '/vote/pop_vote_repeat';
			}else{
				location.href = '/vote/pop_voted';
				opener.location.reload();
			}


		}, // 성공일때 실행될 함수  
		onfailure: function(){alert('에러가 발생했습니다. 새로고침 후 재확인 부탁드립니다.');}
	}
	new daum.Ajax(options).request();
}

// 웹툰 회차정보
Webtoon.series = function(data){
	data.each(function(o){
		if(!o.price || o.price==0){
			if((o.finishYn && o.finishYn == "N") || (o.payYn && o.payYn == "N")){
				o.priceClass="price_hide";
			}else{
				o.priceClass="price_free";
			}
		}else{
			o.price = getImgNum(o.price);
		}
	});
	var pageNum = 1;
	var tmp = new daum.Template('\
		<li class="#{class}">\
			<a href="#{url}"><img src="#{img}" width="152" height="90" alt="#{title}" /><span class="ln_img ln_152_90"></span></a>\
			<p><a href="#{url}" title="#{title}">#{shortTitle}</a></p>\
			<p class="date">#{date}</p>\
			<p class="price #{priceClass}">#{price}</span></p>\
		</li>');
	var list = new daum.ToonThumbList($('webtoonList'),tmp,data,{cntPerPage : 8});
	
	if(location.hash){
		pageNum = location.hash.replace('#','');
		list.go(pageNum);
	}
	var paging = new daum.ToonPaging($('webtoonList_paging'),{curPage: pageNum, click : callback, cntPerPage: 10, cntTotalItem : data.length, cntItemPerPage: 8});


	// 첫회보기 버튼 추가
	if($$(".btn_webtoon_first")[0]){
		$$(".btn_webtoon_first")[0].style.display='block';
		$$(".btn_webtoon_first")[0].onclick = function(){
			location.href=data[data.length-1].url;
		};
	};
	
	function getImgNum(n){
		var html = '';
		
		var len = n.toString().length;
		for(var i = 0; i<len; i++){
			html += '<span class="webtoon_num webtoon_num_'+n.charAt(i)+'">'+n.charAt(i)+'</span>';
		}
		html += '<span class="webtoon_num webtoon_num_won">원</span>';
		
		return html;
	}
	function callback(n){
		location.hash = n;
		list.go(n);
	}


}
// 웹툰 유료회차정보
Webtoon.priceList = function(data){
	data.each(function(o){
		o.price = getImgNum(o.price);
	});
	var tmp = new daum.Template('\
		<li class="#{class}">\
			<a href="#{url}"><img src="#{img}" width="152" height="90" alt="#{title}" /><span class="ln_img ln_152_90"></span></a>\
			<p><a href="#{url}">#{title}</a></p>\
			<p class="date">#{date}</p>\
			<p class="price">#{price}</p>\
		</li>');
	var list = new daum.ToonThumbList($('priceList'),tmp,data,{cntPerPage : 8});
	var paging = new daum.ToonPaging($('priceList_paging'),{click : callback, cntPerPage: 10, cntTotalItem : data.length, cntItemPerPage: 8});

	function getImgNum(n){
		var html = '';
		
		var len = n.toString().length;
		for(var i = 0; i<len; i++){
			html += '<span class="webtoon_num webtoon_num_'+n.charAt(i)+'">'+n.charAt(i)+'</span>';
		}
		html += '<span class="webtoon_num webtoon_num_won">원</span>';
		
		return html;
	}
	function callback(n){
		list.go(n);
	}
}
// 웹툰 관련웹툰
Webtoon.relation = function(data){
	var tmp = new daum.Template('\
		<li class="#{class}">\
			<a href="#{url}"><img src="#{img}" width="130" height="130" alt="#{title}" /><span class="ln_img ln_130_130"></span></a>\
			<p><a href="#{url}" title="#{title}">#{shortTitle}</a><span class="ico_adult_s adult_type_#{isAdult}">19세이상 관람가</span></p>\
		</li>');
	var list = new daum.ToonThumbList($('relativeList'),tmp,data,{cntPerPage : 10});
	new daum.ToonPaging($('relativeList_paging'),{click : callback, cntPerPage: 10, cntTotalItem : data.length, cntItemPerPage: 10});
	function callback(n){
		//alert(n);
		list.go(n);
	}
}
// 웹툰 갤러리
Webtoon.gallery = function(data){
	var tmp = new daum.Template('\
		<li class="#{class}">\
			<a href="#" onclick="Webtoon.Gallery.go(#{no});return false;"><img src="#{img}" width="130" height="130" alt="" /><span class="ln_img ln_130_130"></span></a>\
		</li>');
	var list = new daum.ToonThumbList($('galleryList'),tmp,data,{cntPerPage : 10});
	new daum.ToonPaging($('galleryList_paging'),{click : callback, cntPerPage: 10, cntTotalItem : data.length, cntItemPerPage: 10});
	function callback(n){
		//alert(n);
		list.go(n);
	}

}
// 슬라이더 평점주기
Webtoon.Slider = (function(){
	var Slider = {};

	Slider.init = function(){
		writeImageNum(10);

		Slider.slider = new daum.ToonSlide("area1","knob1" ,{ 
			move_value:10, //스크롤휠 돌렸을경우 움직임
			step:10, // 스크롤 간격
			value:100, // 시작 스코어
			onSlide:function(){ sliding(this.value)  } ,
			onChange:function(){ slided(this.value);  } 
		});
	}
	
	function sliding(value){
		$$('#area1 .innerWrap')[0].style.width = value + "%";
	}
	function slided(value){
		$("score").value=value/10;
		$$('#area1 .innerWrap')[0].style.width = value + "%";
		$("starRate").style.width = value + "%";
		writeImageNum(value/10);
	}
	// 독자평점 이미지화
	//<span class="num_0 f_l">0</span>
	function writeImageNum(s){
		var s = s.toString();
		var html = '';
		for(var i=0; i<s.length; i++){
			html += '<span class="num_'+s.charAt(i)+' f_l">'+s.charAt(i)+'</span>';
		}
		html += '<span class="cl_b"></span>';
		$('pointNum').innerHTML = html;
	}

	return Slider;
})();

// 웹툰 개별 홈 - 작가의 말
// http://toon.ftdev.daum.net/webtoon/view/godfather
Webtoon.Author = (function(){
	var Author = {};

	var index = 0;
	var cntPerPage = 5;
	var list = '';
	var cnt = '';
	var last = '';
	
	Author.init = function(){
		list = $$('.wrap_author_say ul>li');
		cnt = list.length;
		last = Math.ceil(cnt/cntPerPage)-1;
	}
	Author.prev = function(){
		if(index==0){
			alert('첫 페이지입니다.');
			return;
		}
		hideAll();

		index -= 1;
		showRecent();
	}
	Author.next = function(){
		if(index==last){
			alert('마지막 페이지입니다.');
			return;
		}
		hideAll();
		
		index += 1;
		showRecent();
	}
	Author.show = function(no){
		var t = $E($('authorList'+no)).getCoordsTarget($$('.wrap_author_say')[0]).top + 24;
		var layer = $E($('authorLayer'+no));
		layer.show();
		layer.style.top = t + 'px';
	}
	Author.hide = function(no){$E($('authorLayer'+no)).hide();}
	Author.del = function(id){
		var param = 'artist_comment_id='+id;
		var option = {  
			url: '/webtoon/artistcomment/remove', // 호출할 url  
			method: "POST", // method: get or post  
			async: true, // asynchronous  
			timeout: 5000,  
			paramString: param, //  파라미터로 넘겨줄 변수 ex)name=test&age=20   
			encoding: "utf-8",  
			onsuccess: function(){location.reload();}, // 성공일때 실행될 함수  
			onfailure: function(){alert('삭제 실패')}, // 실패일때 실행될 함수  
			onloading: function(){}, // 로딩중일때 실행될 함수  
			ontimeout: function(){}, // 타임아웃일때 실행될 함수  
			link: 'ignore' // instance의 request가 실행중일때 동작 정의  
		}
		new daum.Ajax(option).request();
	}
	var showRecent = function(){
		var start = index * cntPerPage;
		var end = start + cntPerPage;
		end = end > cnt ? cnt : end;
		list.each(function(o,i){
			if(i>=start && i<end) $E(o).show();
		});
	}
	var hideAll = function(){
		list.each(function(o){
			$E(o).hide();
		});
	}
	var getLastPage = function(){
	}

	return Author;
	
})();

// 만화뷰어 썸네일 네비
Webtoon.ThumbNavi = (function (){
	var ThumbNavi = {};

	var layer = null;
	var toggle = null;
	var prev = null;
	var next = null;
	var pan = null;
	var list = null;
	var recentId = null
	var status = -1;
	var pos = [];
	var selectIndex = 0;
	var cntPerPage = 7;

	ThumbNavi.init = function(ids,id){
		var ids = ids.split(',');
		layer = $$('.toon_navi')[0];
		toggle = $$('.toon_navi .toggle')[0];
		prev = $$('.toon_navi .prev')[0];
		next = $$('.toon_navi .next')[0];
		pan = $$('.toon_navi ul')[0];
		list = $$('.toon_navi li');
		recentId = id
		//버튼이벤트 추가
		daum.addEvent(toggle,'click',fnToggle);
		daum.addEvent(prev,'click',fnPrev);
		daum.addEvent(next,'click',fnNext);

		var j = 0;
		list.each(function(o,i){
			daum.addEvent(o,'mouseover',function(){daum.addClassName(o,'over');});
			daum.addEvent(o,'mouseout',function(){daum.removeClassName(o,'over');});
			daum.addEvent(o,'click',load.bind(this,ids[i]));
			
			if(i%7==0){
				var wid = (j++*115*cntPerPage)+'px';
				pos.push(wid);
			}
		});
		ids.each(function(o,i){
			if(ids[i] == recentId) selectIndex = Math.floor(i/cntPerPage);
			daum.addClassName($('thumb'+id),'on');
		});


		close();

		move(selectIndex);
	}

	ThumbNavi.active = function(id){
		daum.removeClassName($('thumb'+recentId),'on');
		daum.addClassName($('thumb'+id),'on');
		
		move(Math.floor(($('thumb'+id).getAttribute('cnt').toInt()-1)/cntPerPage));

		recentId = id;
	}

	function load(id){
		if(daum.Util.thisMovie('viewerFla')){
			daum.Util.thisMovie('viewerFla').load(id);
			ThumbNavi.active(id);
		}else{
			location.href = '/webtoon/viewer/'+id
		}
	}

	function hide(){
		//daum.Fx.animate(layer,'bottom:-119px');
		daum.setCssText(layer,'bottom:-119px');
		daum.setCssText(toggle, 'top:-29px;height:29px;background-position:0 -27px');
		status = 0;
	}
	function close(){
		daum.Fx.animate(layer,'bottom:-119px');
		daum.setCssText(toggle, 'top:-29px;height:29px;background-position:0 -27px');
		status = 0;
	}
	function open(){
		daum.Fx.animate(layer,'bottom:0px');
		daum.setCssText(toggle, 'top:-27px;height:27px;background-position:0 0');
		status = 1;
	}
	function fnToggle(){
		(status==0) ? open() : close();
	}
	function fnPrev(){
		if(selectIndex == 0) selectIndex = pos.length-1;
		else selectIndex--;
		move(selectIndex)
	}
	function fnNext(){
		if(selectIndex == pos.length-1) selectIndex = 0;
		else selectIndex++;
		move(selectIndex)
	}
	function move(no){
		daum.Fx.animate(pan,'left:-'+pos[no]);
	}


	return ThumbNavi;
})();

// 웹툰 뷰어
function viewWidth(){
	return (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth);
}
function viewHeight(){
	return (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight);
}

//웹툰 작품별 소팅
Webtoon.Title = (function(){
	var Title = {};

	var tabIndex = 0;
	var cls = {'img':'area_list_thumb_fst','txt':'fst_list'};
	var tab = null;
	var list = null;
	var type = 'img';

	Title.init = function(type){
		type = type;
		tab = $$("ol.wrap_category li");
		list = $$("div.title_list");
	}


	Title.sortList = function(n){
		$E(tab[tabIndex]).removeClassName('on');
		$E(tab[n]).addClassName('on');
		if(n){
			var i = n-1;
			list.each(function(o){
				$E(o).hide();
			});
			$E(list[i]).show();
			$E(list[i]).addClassName(cls[type]);
		}else{ //전체
			list.each(function(o,i){
				$E(o).show();
				if(i==0) $E(o).addClassName(cls[type]);
				else  $E(o).removeClassName(cls[type]);
			});
		}
		
		tabIndex = n;
	}


	return Title;
})();

//웹툰 작가별 소팅
Webtoon.authorSort = function(n){
	var firClassName = (daum.getParam('type')=='txt')?'author_txt_fst':'author_fst';
	var tab = $$("ol.wrap_category li");
	var noData = $$('.no_data')[0];
	var list=$$("div.list_author");

	daum.hide(noData);

	tab.each(function(o){
		daum.removeClassName(o,'on');
	});
	daum.addClassName(tab[n],'on');

	if(n){
		var sel = $$("div.div"+n);
		list.each(function(o){
			$E(o).hide();
		});
		sel.each(function(o,i){
			$E(o).show();
			if(i==0) $E(o).addClassName(firClassName);
			else  $E(o).removeClassName(firClassName);
		});

		if(sel.length == 0) daum.show(noData);


	}else{ //전체
		list.each(function(o,i){
			$E(o).show();
			if(i==0) $E(o).addClassName(firClassName);
			else  $E(o).removeClassName(firClassName);
		});
	}
}
// 웹툰 연도별 소팅
Webtoon.YearSort = (function(){
	var YearSort = {};



	// 만화 카운트
	function setTotalCount(){
		var cnt=0;
		$$("ul.list_year li").each(function(o){
			if(!daum.hasClassName(o,'line_dot')){
				if($E(o).visible()) cnt++;
			}
		});
		$$(".tot_count em")[0].innerHTML=cnt;
	}
	// 연도별 소팅
	YearSort.sortList = function(y){

		activeTab(y);


		removeDivision();

		var cnt=0;
		if(y){
			$$("ul.list_year li").each(function(o){
				if($E(o).hasClassName("div"+y)){
					$E(o).show();
					cnt++;

					
					if(daum.getParam('type')!='txt' && cnt != 1 && cnt%35 == 1) insertDivision(o);

				}else{
					$E(o).hide();
				}
			});
		}else{
			$$("ul.list_year li").each(function(o){

				$E(o).show();
				cnt++;


				
				if(daum.getParam('type')!='txt' && cnt != 1 && cnt%35 == 1) insertDivision(o);
			});
		}


		$$(".tot_count em")[0].innerHTML=cnt;
		
		if(daum.getParam('type')=='txt') addClassNameToTextlist();
	}
	// 탭활성화
	var activeTabIndex = 0;
	function activeTab(y){
		if(y == 0) $$('li.order_tot')[0].className = 'order_tot_on';
		else $$('li.order_'+y)[0].className = 'order_'+ y + '_on';
		

		if(activeTabIndex != 0)$$('li.order_'+activeTabIndex+'_on')[0].className = 'order_'+activeTabIndex;
		else $$('li.order_tot_on')[0].className = 'order_tot';

		activeTabIndex = y;
	}
	// 텍스트형에 클래스 넣기
	function addClassNameToTextlist(){
		var j = 0;
		$$("ul.list_year li").each(function(o,i){
			$E(o).removeClassName('fst');
			$E(o).removeClassName('fst_group');
			
			if(o.style.display == 'block'){
				if(j%4 == 0) $E(o).addClassName('fst');
				if(j%20 >= 0 && j%20 <= 3 && j > 10) $E(o).addClassName('fst_group');
				j++;
			}
		});
	}
	// 구획 li 넣기
	function insertDivision(o){
		//console.log(1);
		o.parentNode.insertBefore(daum.createElement('<li class="line_dot">&nbsp;</li>'), o);

	}
	// 구획 li 빼기
	function removeDivision(){
		$$('li.line_dot').each(function(o){
			daum.destroy(o);
			//o.parentNode.removeChild(o);
		});
	}

	YearSort.init = function(){
		addClassNameToTextlist();
		setTotalCount();
	}


	return YearSort;
})();



//유료만화
var Comics = {};
// 유료만화 평점주기
Comics.vote = function(id){
	Comics.vote.id = id;
	Comics.vote.win = window.open('about:blank','vote','width=470,height=240');
	//Webtoon.vote.win.blur();
	Cartoon.Util.chkLogin(Comics.vote.popup);
}
Comics.vote.popup = function(isLogin){
	if(isLogin){ // 평점팝업
		Comics.vote.win.location.href = '/comics/pop_vote?service_target_id='+Comics.vote.id;
		Comics.vote.win.focus();
	}else{ // 로그인 필요
		Comics.vote.win.location.href = daum.Util.getPopupLogin('http://cartoon.media.daum.net/comics/pop_vote?service_target_id='+Comics.vote.id);
		Comics.vote.win.focus();
		//Comics.vote.win.close();
		//daum.Util.goLogin(location.href);
	}
}
Comics.banner = function(){
	var gab = 70;
	var layer = $$('.event_brand .inner_wrap')[0];
	var imgs = $$('.event_brand img');
	var cnt = imgs.length;
	var selectIndex = 0;
	var isMoving = false;

	daum.addEvent($$('.event_brand .go_prev')[0],'click',prev);
	daum.addEvent($$('.event_brand .go_next')[0],'click',next);

	layer.innerHTML += layer.innerHTML;

	function prev(){
		if(isMoving) return;
		
		isMoving = true;

		if(selectIndex == 0){
			selectIndex = cnt-1;
			daum.setCssText(layer,'top:'+-(cnt*gab)+'px');
		}else{
			selectIndex -= 1;
		}
		var mov = daum.getStyle(layer,'top').replace('px','').toInt()+gab;
		daum.Fx.animate(layer,'top:'+mov+'px',{callback:function(){isMoving=false}});
	}
	function next(){
		if(isMoving) return;

		isMoving = true;

		if(selectIndex == cnt){
			selectIndex = 1;
			daum.setCssText(layer,'top:0px');
		}else{
			selectIndex += 1;
		}
		var mov = daum.getStyle(layer,'top').replace('px','').toInt()-gab;
		daum.Fx.animate(layer,'top:'+mov+'px',{easing:daum.Fx.easeOutExpo,callback:function(){isMoving=false}});
	}
}

Comics.newbook = function(){
	var tab = $$('.tab_new_cartoon li a');
	var sub = $$('.wrap_new_list');
	var rand = [4,6];
	var isFirst = true;
	

	var t = new daum.Tab( tab , { eventType:'click',onChange:change } );
	t.select(rand[daum.random(0,1)]);

	function change(event){
		var i = this.selectIndex;

		if(i==10 && isFirst){ // 성인탭이라면
			var options = {  
				url: "/is_login", // 호출할 url  
				method: "get", // method: get or post  
				async: true, // asynchronous  
				timeout: 5000,  
				paramString: '', //  파라미터로 넘겨줄 변수 ex)name=test&age=20   
				encoding: "utf-8",  
				onsuccess: function(r){
					var r = eval('('+r.responseText+')');
					
					if(!r.isLogin){
						location.href = daum.Util.getAdultLogin(location.href);
						return;
					}
					if(!r.isAdult){
						alert('성인만 접근 가능한 컨텐츠입니다.');
						this.selectIndex = this.postSelectIndex;
						return;
					}

					activeTab(i);

					isFirst = false;
				
				}.bind(this), // 성공일때 실행될 함수  
				onfailure: function(){console.log('is_login error');}, // 실패일때 실행될 함수  
				onloading: function(){}, // 로딩중일때 실행될 함수  
				ontimeout: function(){}
			}
			new daum.Ajax(options).request();
		}else{
			activeTab(i);
		}
	}

	function activeTab(i){
		sub.each(function(el,i){ 
			daum.hide(el); daum.setOpacity(el,0.5);
			daum.removeClassName(tab[i].parentNode, 'on');
		}); //전부 숨기고
		daum.show(sub[i]);
		daum.Fx.animate(sub[i], {opacity:1});
		daum.addClassName(tab[i].parentNode, 'on');
	}



}

//인기만화 탑5
Comics.best5 = function(){
	var list = $$('.best_cartoon a');
	var divs = $$('.best_cartoon_view');
	var selectIndex = 0;
	var isOver = false;

	list.each(function(o,i){
		daum.addEvent(o,'mouseover',over.bind(this,i));
		daum.addEvent(o,'mouseout',out.bind(this,i));
	});
	select(selectIndex);

	daum.Function.interval(timer.bind(this), 3000); 

	function select(no){
		if(no>4) no = 0;

		daum.removeClassName(list[selectIndex],'on');
		daum.hide(divs[selectIndex]);

		daum.addClassName(list[no],'on');
		daum.show(divs[no]);
		//daum.setOpacity(divs[no],0.5);
		//daum.Fx.animate(divs[no], {opacity:1});

		selectIndex = no;
	}
	function timer(){
		if(isOver) return;

		select(selectIndex+1);
	}
	function over(i){
		isOver = true;
		select(i);
	}
	function out(){
		isOver = false;
	}
}
// 웹툰 평점주기-팝업에서 처리
Comics.doVote = function(id,score){
	var score = score;
	var fieldIds = ['voteBadCount','voteSosoCount','voteGoodCount'];
	var param = 'service_target_id='+id+'&vote_service_id=3&score='+score;

	var options = {  
		url: "/vote/", // 호출할 url  
		method: "POST", // method: get or post  
		async: true, // asynchronous  
		timeout: 5000,  
		paramString: param, //  파라미터는 opener에 자바스크립트로 박혀있음.(최소한의 어뷰징 막기)
		encoding: "utf-8",  
		onsuccess: function(r){
			var d = eval('(' + r.responseText + ')');
			var status = d.status;
			if(status == 0){
				//location.href = '/comics/pop_voted';
				opener.$(fieldIds[score]).innerHTML = opener.$(fieldIds[score]).innerHTML.toInt() + 1;
				self.close();
			}else if(status == -1){ // 중복
				location.href = '/comics/pop_vote_repeat';
				//daum.Browser.resizePop(470,240);
			}else{
				console.log(status);
			}


		}, // 성공일때 실행될 함수  
		onfailure: function(){alert('에러가 발생했습니다. 새로고침 후 재확인 부탁드립니다.');!self.close();}, // 실패일때 실행될 함수  
		onloading: function(){}, // 로딩중일때 실행될 함수  
		ontimeout: function(){}
	}
	new daum.Ajax(options).request();
}
// 유료만화 뷰어
Comics.Viewer = (function(){
	var data={
		comicsType:'genre',
		classid:'clsid:9EE7D86E-EDF7-427C-8E97-5BCF5851DA03',
		firstPage:0,
		doublePage:true,//TRUE – 두장보기, FALSE – 한장보기
		limitPageNum:0,
		curVolumeId:null,//현재 권의 id
		totVolumeId:null,//토탈권들의 id (1|2|3...)
		defGamma:1000,//범위 100 ~ 1900.
		defLight:0,//범위 -100 ~ 100.
		defContrast:0,// 범위 -100 ~ 100
		paramVersion:1.0,
		isReverse:false
	};
	var init=function(options){
		if(!daum.Browser.ie){
			//alert('만화보기는 인터넷익스플로러에서만 가능합니다.');
			return;
		}
		
		daum.extend(data,options);

		var cabUrls={
			'32bit':'http://s1.daumcdn.net/photo-section/-cartoon10/activex/viewer/20120116/32bit/XDMToonViewer32.cab#version=1,0,1,19',
			'64bit':'http://s1.daumcdn.net/photo-section/-cartoon10/activex/viewer/20120116/64bit/XDMToonViewer64.cab#version=1,0,1,19'
		};
		var tmp = new daum.Template('\
				<OBJECT classid="#{classid}" id="Cartoon" Width="100%" Height="100%" CODEBASE="#{codebase}">\
				<param name="FirstPage" 	value="#{firstPage}">\
				<param name="DoublePage" 	value="#{doublePage}">\
				<param name="LimitPageNum"	value="#{limitPageNum}">\
				<param name="CurVolumeID" 	value="#{curVolumeId}">\
				<param name="TotVolumeID" 	value="#{totVolumeId}">\
				<param name="DefGamma" 		value="#{defGamma}">\
				<param name="DefLight" 		value="#{defLight}">\
				<param name="DefContrast" 	value="#{defContrast}">\
				<param name="ParamVersion"	value="#{paramVersion}">\
				<param name="JAPAN"			value="#{isReverse}">\
			</OBJECT>');
		
		if(navigator.platform == "Win32")
		{
			//32bit
			data.codebase=cabUrls['32bit'];
			document.write(tmp.evaluate(data));
		}
		else if(navigator.platform == "Win64")
		{
			//64bit
			data.codebase=cabUrls['64bit'];
			document.write(tmp.evaluate(data));
		}
		else
		{
			alert("platform = " + navigator.platform);
		}
		
		// 북마크 해주기
		if(daum.urlParameter.bookmark==1){
			bookmark(data.curVolumeId, data.firstPage);
		};
	};
	var contentView = function(id){
		new daum.Ajax({  
			url: "/content_view", 
			method: "GET", 
			paramString: 'content_type='+data.comicsType+'&online_comics_volume_id='+id,
			onsuccess: function(){
				//alert('view success')
			}
		}).request();
	}
	// 
	var contentUse = function(id){
		new daum.Ajax({
			url: "/content_use",  
			method: "POST",
			paramString: 'content_type=comics&related_content_id='+id,
			onsuccess: function(){
				//alert('use success')
			}
		}).request();
	}
	// 북마크
	var bookmark = function(id, pageNo){
		data.bookmarkPageNo = pageNo;
		data.bookmarkId = id;
		Cartoon.Util.chkLogin(Comics.Viewer.goBookmark);
	}
	var goBookmark = function(isLogin){
		if(isLogin){
			new daum.Ajax({  
				url: "/bookmark", 
				method: "POST", 
				paramString: 'bookmark_type='+data.comicsType+'&online_comics_volume_id='+data.bookmarkId+'&page_no='+data.bookmarkPageNo,
				onsuccess: function(){
					DebugMsgBox("북마크 완료_bookmark");
				}
			}).request();
		}else{
			var returnURL=location.href.split("?")[0]+"?bookmark=1&page_no="+data.bookmarkPageNo;
			location.href = daum.Util.getLogin(returnURL);
		}
	}
	var order = function(id){
		location.href="/comics/viewer/"+id;
		return;
		
/*
		var url = "/order/order?related_content_id="+id+"&product_type=content";
		var w = window.open(url,'order','width=611,height=560');
		w.focus();
*/
	}
	var hideInfo=function(){
		daum.hide($$(".activex_info")[0]);
	};
	
	var open=function(url){
		 if(!daum.Browser.ie){
			 alert('만화보기는 인터넷익스플로러에서만 가능합니다.');
			 return false;
		 };
		 
		try{ // 팝업이 떠 있다면, 
			ComicsViewer.focus();
			ComicsViewer.GotoVolume(url.split("/").pop());
		}catch(e){
			ComicsViewer=window.open(url,'ComicsViewerWin','height=700,width=900,resizable=yes');
			ComicsViewer.name="ComicsViewerWin";
			ComicsViewer.focus();
		}
	};

	
	return {
		init : init,
		bookmark : bookmark,
		goBookmark : goBookmark,
		order : order,
		contentView : contentView,
		contentUse : contentUse,
		hideInfo : hideInfo,
		open: open
	};

})();

//시사회
var Preview = {};
// 스크램하기
Preview.Scrap = (function(){
	var Scrap = {};
	var layer = '';
	var scrapLyaer = '';
	var form = '';
	var html = '';

	Scrap.init = function(){
		layer= $E($$('.layer_pum')[0]);
		scrapLyaer = $E($$('.scrap_html')[0]);
		form = $E($$('.url_target')[0]);

		insert2form();
	}
	Scrap.show = function(o){
		layer.show();
	}
	Scrap.hide = function(){
		layer.hide();
	}
	Scrap.clipboard = function(){
		if(daum.Browser.ie){
			window.clipboardData.setData('Text',html);
			alert("html 소스가 복사되었습니다.");
		} else {
			copy();
		}

	}
	var copy = function(){
		var ua = navigator.userAgent.toLowerCase(); 
		if(ua.indexOf('mac')>0){
			alert('선택된 소스를 복사(command+c)하여 붙여넣기(command+v) 하시면 됩니다.');
		} else {
			alert('선택된 소스를 복사(ctrl+c)하여 붙여넣기(ctrl+v) 하시면 됩니다.');
		}
		form.select();
	}
	var insert2form = function(){
		html = scrapLyaer.innerHTML.replace(/\n/g, '').replace(/\r/g, '').replace(/\t/g,'');

		form.value = html;
	}

	return Scrap;
})();

Preview.PrevNext = function(prev,next,sub, options){
	this.options ={
		isRandom : true,
		listCnt : 10,			//한번에 보여줄 갯수
		eventType : 'click',	//탭 이벤트가 발생되어야할 이벤트
		onChange : function(){}	//탭 변경될때 콜백함수
	};
	daum.extend(this.options, options);

	this.sub = sub;
	this.itemTotalCnt = sub.length;
	this.lastIndex = Math.ceil(sub.length/this.options.listCnt)-1;
	this.selectIndex = this.options.isRandom ? daum.random(0,this.lastIndex-1) : 0;
	this.frame = $$('.png_frame')[0];
	

	var initStart = this.getStartIndex(this.selectIndex);
	var initEnd = this.getEndIndex(this.selectIndex);
	sub.each(function(o,i){
		if(i>=initStart && i<initEnd){
			daum.show(o);

			this.frame.onclick = function(){
				location.href = daum.getFirstChild(o).href;
			}
		}else{
			daum.hide(o);
		}
	}.bind(this));


	if(this.options.listCnt == this.itemTotalCnt){
		daum.hide(prev);
		daum.hide(next);
	}else{
		daum.addEvent(prev, this.options.eventType, this.select.bind(this,'prev') );
		daum.addEvent(next, this.options.eventType, this.select.bind(this,'next') );
	}

};
Preview.PrevNext.prototype={
	select : function(dir){

		var index = this.selectIndex;
		if(dir=='prev') index--;
		else index++;

		if(index<0) index = this.lastIndex;
		else if(index>this.lastIndex) index = 0;


		var start = this.getStartIndex(index);
		var end = this.getEndIndex(index);

		this.sub.each(function(o,i){
			if(i>=start && i<end){
				daum.show(o);
				daum.setOpacity(o,0.5);
				daum.Fx.animate(o,{opacity:1});

				this.frame.onclick = function(){
					location.href = daum.getFirstChild(o).href;
				}
			}else{
				daum.hide(o);
			}
		}.bind(this));


		this.selectIndex = index;


		this.options.onChange.call(this);

	},
	getStartIndex : function(index){
		var r = this.options.listCnt*index;

		return r;
	},
	getEndIndex : function(index){
		var r = this.options.listCnt*(index+1);

		r = r>this.itemTotalCnt?this.itemTotalCnt:r;

		return r;
	}
};
Preview.recomment = function(){
	new Preview.PrevNext($$('.recomment_preview .prev')[0],$$('.recomment_preview .next')[0],$$('.recomment_preview li'),{listCnt:1});

}
Preview.publisher = function(){
	new daum.PrevNextWithNum($$('.area_preview_partner .next')[0],$$('.area_preview_partner .prev')[0],$$('.area_preview_partner li'),$$('.area_preview_partner .page')[0],$$('.area_preview_partner .total')[0],{listCnt:8,isRandom:false});
}

// 시사회 뷰어
Preview.Viewer = (function(){
	var Viewer = {};

	var id = 'viewerWrapper'; // 플래시 div 아이디
	var flaId = 'viewerFla'; // 플래시 아이디
	var previewId = '';

	Viewer.init = function(id){
		previewId = id;

		var html = '<div class="viewerWrapper">' + daum.Util.embedSWF('http://photo-section.daum-img.net/-cartoon10/swf/preview/GaroViewer.swf?id='+id,'100%','100%',{id:flaId,allowScriptAccess: "always", allowFullScreen: "true"}) + '</div>';

		document.write(html);
		

		daum.addEvent(window,'load',function(){window.document[flaId].focus()});
	}
	// 뷰어 닫기
	Viewer.close = function(){
		location.href = '/preview/view/'+previewId;
	}
	
	return Viewer;

})();
// 이미지 크게보기
Preview.bigView = function(src){
	var dim = null;

	document.write('<div id="dimmed2" style="width:580px;display:none;">\
		<p id="dimmedtext2" class="close_btn" title="크게보기 이미지 닫기" style="cursor:pointer;"></p>\
		</div>');
	dim = new daum.DimmedLayer({ layer:$('dimmed2'), layerStyle : { marginLeft:'-290px', marginTop:'-300px' }, scroll : false, durationTime : 0, closeClassName : 'close_btn'}); //에니메이션 효과 있음

	daum.addEvent($$('.wrap_large_img')[0],'click',function(){show(src)});


	function show(src){
		dim.call(function(){
			$('dimmedtext2').innerHTML = '<img src="'+src+'" />';
		});
	}

};
// 구매처/가격정보
Preview.Info = (function(){
	var Info = {};


	Info.init = function(isbn){
		daum.load('http://cia.daum.net/view/book/isbn/'+isbn+'.js?callback=Preview.Info.loadBook');
	}
	//daum.load('http://cia.daum.net/view/book/isbn/9788926389874.js?callback=loadBook');
	var tmp = new daum.Template('\
		<tr class="#{class}">\
			<th scope="col"><a href="#{cplink}" target="_blank"><img src="#{cpimage}" alt="#{title}" /></a></th>\
			<td class="benefit">#{benefit}</td>\
			<td><strong>#{mileage}원</strong>(#{mileageRate}%)</td>\
			<td><strong class="blue">#{listPrice}</strong>(#{disrate}%)</td>\
			<td><strong class="sale">#{salePrice}원</strong></td>\
			<td>#{info}</td>\
			<td><a href="#{link}" class="type_common_btn btn_buy" target="_blank">구매하기</a></td></tr>');
			
	Info.loadBook = function(d){
		var list = d.detail.priceList.content;
		var html = '';
		
		var size = list.length;
		
		if(size == 0){//가격정보가 없음.
			return;
		}

		daum.show($('isbnWrap'));


		$A(list).each(function(o,i){
			if(i == size-1) o['class'] = 'lst';
			if(o.deliveryCost != 0) o.info = '<strong class="icon deliver_fee">유료배송</strong>';
			else o.info = '<strong class="icon free">무료배송</strong>';
			o.listPrice = addCommas(o.listPrice);
			o.salePrice = addCommas(o.salePrice);
			o.mileage = addCommas(o.mileage);
			
			html += tmp.evaluate(o);
		});
		if($$('.happyPrice')[0])$$('.happyPrice')[0].innerHTML = addCommas(d.detail.salePrice.content[0].title);

		html = '\
			<table class="tbl_type01" summary="서점, 혜택, 적립금(적립율), 판매가(할인율), 할인판매가 구매정보 구매 링크 클릭 시 이동합니다.">\
			<caption class="hide_txt">책의 가격정보</caption>\
			<thead>\
				<tr>\
					<th scope="row" class="bookstore">서점</th>\
					<th scope="row" class="benefit">혜택</th>\
					<th scope="row" class="save">적립금(적립율)</th>\
					<th scope="row" class="price">판매가(할인율)</th>\
					<th scope="row" class="sale">할인판매가</th>\
					<th scope="row" class="purchase_info">구매정보</th>\
					<th scope="row" class="purchase">구매하기</th>\
				</tr>\
			</thead><tbody>'+html+'</tbody></table>';
		
		$('tableWrap').innerHTML = html;
	}

	return Info;
})();
// 출판사별 시사회 콤보
Preview.publisherCombo = function(){
	var toggle = function(e){
		$E($$('.publisher_list')[0]).toggle();
		daum.stopEvent(e);
	}
	var hide = function(){
		$E($$('.publisher_list')[0]).hide();
	}
	daum.Event.addEvent($$('.btn_other_pub')[0],'click',toggle);
	

	daum.Event.addEvent(document,'click',hide);
}
// 이달의 신간
Preview.YearMonth = (function(){

	var YearMonth = {};
	var s = '',y='',m='';

	YearMonth.init = function(s){
		y = s.substring(0,4);
		m = s.substring(4,6).toInt();


		$$('a.btn_year')[0].innerHTML = y+'년';
		$$('a.btn_month')[0].innerHTML = m+'월';

		daum.Event.addEvent(document,'click',hide);
	}

	YearMonth.clickNMonth = function(n){
		$$('a.btn_month')[0].innerHTML = n+'월';
		YearMonth.clickMonth();
		if(n<10) n = '0'+n;
		m = n;
	}
	YearMonth.clickNYear = function(n){
		$$('a.btn_year')[0].innerHTML = n+'년';
		YearMonth.clickYear();
		y = n;
	}
	YearMonth.send = function(){
		location.href = '/preview/new_book/'+y+m;
	}
	YearMonth.clickMonth = function(e){
		$E($$('ul.month')[0]).toggle();
		if(e)daum.stopEvent(e);
	}
	YearMonth.clickYear = function(e){
		$E($$('ul.year')[0]).toggle();
		if(e)daum.stopEvent(e);
	}

	var hide = function(){
		$E($$('ul.year')[0]).hide();
		$E($$('ul.month')[0]).hide();
	}



	return YearMonth;
})();

Preview.Newbook = (function(){
	var Newbook = {};

	//날짜 이미지화
	Newbook.writeImageNum = function(s){
		var s = s.toString();
		var html = '\
			<strong class="n'+s.charAt(0)+'">'+s.charAt(0)+'</strong>\
			<strong class="n'+s.charAt(1)+'">'+s.charAt(1)+'</strong>\
			<span class="month">월</span>\
			<strong class="n'+s.charAt(2)+'">'+s.charAt(2)+'</strong>\
			<strong class="n'+s.charAt(3)+'">'+s.charAt(3)+'</strong>\
			<span class="day">일</span>';
			
		document.write(html);
	}
	//yyMM 이미지화
	Newbook.writeYYMM = function(s){
		var s = s.toString();
		var y = s.substring(0,4);
		var m = s.substring(4,6);

		var prevMonth = getPrevMonth(y,m);
		var nextMonth = getNextMonth(y,m);
		
		var html = '\
			<strong class="n'+s.charAt(0)+'">'+s.charAt(0)+'</strong>\
			<strong class="n'+s.charAt(1)+'">'+s.charAt(1)+'</strong>\
			<strong class="n'+s.charAt(2)+'">'+s.charAt(2)+'</strong>\
			<strong class="n'+s.charAt(3)+'">'+s.charAt(3)+'</strong>\
			<span class="year">년</span>\
			<strong class="n'+s.charAt(4)+'">'+s.charAt(4)+'</strong>\
			<strong class="n'+s.charAt(5)+'">'+s.charAt(5)+'</strong>\
			<span class="month">월</span>\
			<a href="/preview/new_book/'+prevMonth+'" class="type_common_btn btn_page_prev">이전</a>\
			<a href="/preview/new_book/'+nextMonth+'" class="type_common_btn btn_page_next">다음</a>';
			 
		document.write(html);


		function getPrevMonth(y,m){
			var r = '';
			if(m=='01'){
				y = (y.toInt()-1).toString();
				m = '12';
			}else{
				m = (m.toInt()-1).toString();
			}
			if(m.length < 2){
				m = '0'+m;
			}
			r = y+m;
			
			return r;
		}
		function getNextMonth(y,m){
			var r = '';
			if(m=='12'){
				y = (y.toInt()+1).toString();
				m = '01';
			}else{
				m = (m.toInt()+1).toString();
			}

			if(m.length < 2){
				m = '0'+m;
			}
			r = y+m;
			
			return r;
		}
	}

	return Newbook;

})();
//나도만화가
var Debut = {}
Debut.update = function(){
	var tab = $$('.lnb_debut li a');
	var sub = $$('.update_wrap ul');

	//탭 생성
	Cartoon.tab(tab,sub);
}
// 마이
var My = {}
My.toggleAllIndex = "unchecked";
My.toggleAll = function(el){
	var items = document.getElementsByName('store_id');
	if(My.toggleAllIndex == "unchecked"){
		$A(items).each(function(o){
			o.checked = "checked";
		});
		My.toggleAllIndex = "checked";
		daum.removeClassName(el, "btn2010_unselect_all");
		daum.addClassName(el, "btn2010_select_all");
	}else{
		$A(items).each(function(o){
			o.checked = "";
		});
		My.toggleAllIndex = "unchecked";
		daum.removeClassName(el, "btn2010_select_all");
		daum.addClassName(el, "btn2010_unselect_all");
	}
}
My.cabinetDel = function(){
	var items = document.getElementsByName('store_id');
	var param='store_type=cabinet';
	var deleteTr = [];
	for(var i=0, item=''; item=items[i]; i++){
		if(item.checked){
			param += '&store_id='+item.value;
			deleteTr.push(item.parentNode.parentNode);
		}
	}
	
	if(deleteTr.length == 0){
		alert("삭제할 작품을 선택해 주세요.");
		return false;
	}
	
	var option = {  
		url: "/remove_my_data", // 호출할 url  
		method: "POST", 
		paramString: param, 
		onsuccess: function(){
			location.reload(true);
		}
	}
	new daum.Ajax(option).request();
}
My.bookmarkDel = function(){
	var items = document.getElementsByName('store_id');
	var param='store_type=bookmark';
	var deleteTr = [];
	for(var i=0, item=''; item=items[i]; i++){
		if(item.checked){
			param += '&store_id='+item.value;
			deleteTr.push(item.parentNode.parentNode);
		}
	}
	
	if(deleteTr.length == 0){
		alert("삭제할 작품을 선택해 주세요.");
		return false;
	}
	
	var option = {  
		url: "/remove_my_data", // 호출할 url  
		method: "POST", 
		paramString: param, 
		onsuccess: function(){
			location.reload();
		}
	}
	new daum.Ajax(option).request();
}
My.recentDel = function(){
	if(!confirm("웹툰/브랜드관/장르만화 최근감상내역이 모두 삭제됩니다.\n삭제하시겠습니까?")){
		return false;
	}
		
	var param='store_type=content_view';
	
	var option = {  
		url: "/remove_my_data", // 호출할 url  
		method: "POST", 
		paramString: param, 
		onsuccess: function(){
			location.reload();
		}
	}
	new daum.Ajax(option).request();
}
My.detailView = function(o, no){
	var tr = $('tr'+no);
	var div = $('div'+no);
	var url = o.href;

	if(o.className=="on"){
		tr.style.display = "none";
		o.className = "";
	}else{

		if(tr.getAttribute('status')==0){
			var option = {  
				url: url, // 호출할 url  
				method: "get",
				onsuccess: function(r){
					tr.setAttribute('status',1);
					tr.style.display = '';
					div.innerHTML = r.responseText;
					
				}
			}
			new daum.Ajax(option).request();
		}else{
			tr.style.display = '';
		}
		o.className = "on";
	}
}
My.detailView2 = function(o, no){
	var tr = $('tr2'+no);

	if(o.className=="on"){
		tr.style.display = "none";
		o.className = "";
	}else{
		tr.style.display = '';
		o.className = "on";
	}
};
// 주문/결제
var Order = {};
Order.daumCash = 0;//다음캐시 잔액
Order.init = function(daumCash){
	daum.Util.popupAutoResize();
	Order.daumCash = daumCash;

	// 디폴트 구매권 선택하기
	if(!daum.$F('product_id')){
		var firstItem = document.getElementsByName("product_id")[0]; 
		firstItem.checked = "checked";
		Order.priceClick(document.getElementsByName("product_id")[0]);
	}
}
Order.popup = function(o){
	var url = o.href;
	var w = window.open(url,'order','width=611,height=560');
	w.focus();
};
Order.priceClick = function(o){
	var price1 = $('price');
	var name1 = $('name');
	var price2 = $('price2');
	var name = o.getAttribute('productName');
	var price = o.getAttribute('productPrice');
	var priceInt = price.replace(',','').toInt();
	var daumCash = Order.daumCash.toInt();


	if( daumCash < priceInt ){
		$('rDaum').disabled = "disabled";
		if($('rDaum').checked) $('rPhone').checked = true;
	}else{
		$('rDaum').disabled = "";
	}
	if( priceInt < 1000 ){
		$('rCredit').disabled = "disabled";
		if($('rCredit').checked) $('rPhone').checked = true;
	}else{
		$('rCredit').disabled = "";
	}

	name1.innerHTML = name;
	price1.innerHTML = price;
	price2.innerHTML = price;
}
// 다음캐시 충전
Order.chargeCash = function(host){
	//var ret = encodeURIComponent(location.href);
	//var url = 'http://bill-sb.daum.net/Elf/cash/Credit.daum?isNoPopup=1&popURL='+ret;
	//var url = 'http://uidev.media.daum.net/gohee/test.html';
	//newWin = window.open(url,'_blank','width=570,height=564,toolbar=no,scrollbars=no,resizable=no,status=no');
	//newWin.focus();
	//location.href = url;
	var newWin = window.open('/order/cash?from=cartoon&host='+host,'_blank','width=570,height=564,toolbar=no,scrollbars=no,resizable=no,status=no');
	newWin.focus();
}
Order.confirmCash = function(from,host){
	if(from == 'cartoon'){
		var url = host+'/Elf/cash/Credit.daum?isNoPopup=1&popURL='+encodeURIComponent('http://'+location.host+location.pathname);
		location.href = url;
	}else{
		opener.location.reload();
		self.close();
	}
}

Order.submitOrder = function(f){
	if(!daum.$F('settlement_method')){
		alert("결제 방밥을 선택해 주세요.");
		return false;
	}
	if(!daum.$F('product_id')){
		alert("구매하실 이용권을 선택해 주세요.");
		return false;
	}

	return true;

	// 본창에서 결제창으로 넘어가게 변경
	/*
	if(daum.$F('settlement_method') != "daum"){
		billingWin = window.open("about:blank","billing","width=100,height=100");
		billingWin.blur();
	}else{
		$("checking_btn").style.visibility = "hidden";
		
	}		
	*/
	//$('checking_ment').innerHTML = "<strong>결제 처리중입니다.<br />잠시 기다려주세요.</strong>";
	
	
	return true;
}
// 결제완료
Order.chargeEnd = function(productName,productPrice,productMethod){
	if(!productName || !productPrice || !productMethod){
		alert('결제처리가 되지 않았습니다.\n다시 한번 결제요청해 주세요.');
		return;
	}


	if(productMethod == 'daum') productMethod = 'Daum 캐시';
	else if(productMethod == 'phone') productMethod = '핸드폰 결제';
	else productMethod = '신용카드';
	var str = '상품명 : '+productName+'\n'+'가격 : '+daum.Util.addCommas(productPrice)+'원\n결제수단 : '+productMethod+'\n\n정상적으로 처리되었습니다.';
	alert(str);

	window.close(); //결제창닫기
	if(opener) opener.window.location.reload(true);// 뷰어창새로고침

	/*

	if(top.opener){
		top.window.close();
		if(top.opener.opener){
			top.opener.window.close();
			top.opener.opener.window.location.reload(true);
		}else{
			top.opener.window.location.reload(true);
		}
	}else{
		location.href = '/';
	}
	*/
	
}
Order.billing = function(url){
	var win = window.open(url,'billing','width=622,height=623');
	win.focus();
}
// 결제 에러
Order.error = function(options){
	var code = options.code;
	var msg = options.message;

	alert('Error : ' + code + ' \nwebtoon@hanmail.net로 문의해 주세요.');


	try{
		self.close();
		opener.top.window.close();
	}catch(e){}
}
// 종합정보
var Info = {}
Info.series = function(){
	if($$('.list_series li').length > 5) new daum.PrevNext($$('.btn_prev')[0],$$('.btn_next')[0],$$('.list_series li'),{listCnt:5,isRandom:false});
}

var Kcomics = {};
Kcomics.series = function(){
	var prev = $$('.area_list_series .btn_prev')[0];
	var next = $$('.area_list_series .btn_next')[0];
	var list = $$('.list_series li');

	new daum.PrevNext(prev,next,list,{listCnt:5,isRandom:false});
}
Kcomics.info = function(isbn){
	Preview.Info.init(isbn);
}
var Search = {};
Search.count = function(type,data){
	var param = '';
	if(type=='artist') param = 'count_type=artist_info&related_id='+data;
	else if(type=='info') param = 'count_type=cartoon_info&related_id='+data;
	else if(type=='search') param = 'count_type=search_keyword&q='+data;

	var options = {  
		url: '/count', // 호출할 url  
		method: "post", // method: get or post  
		async: true, // asynchronous  
		timeout: 5000,  
		paramString: param, //  파라미터로 넘겨줄 변수 ex)name=test&age=20   
		encoding: "utf-8",  
		onsuccess: function(){}, // 성공일때 실행될 함수  
		onfailure: function(){console.log('카운터 실패');}, // 실패일때 실행될 함수  
		onloading: function(){}, // 로딩중일때 실행될 함수  
		ontimeout: function(){}
	}
	new daum.Ajax(options).request();
}
Search.totalInit = function(q){
	var webtoon = $$('.webtoon_wrap .wrap_search_result > ul');
	var leaguetoon = $$('.leaguetoon_wrap .wrap_search_result > ul');
	var comics = $$('.comics_wrap .wrap_search_result > ul');
	var preview = $$('.preview_wrap .wrap_search_result > ul');
	var kcomics = $$('.kcomics_wrap .wrap_search_result > ul');
	var webtoon2 = $$('.webtoon_wrap .wrap_another > ul');
	var leaguetoon2 = $$('.leaguetoon_wrap .wrap_another > ul');
	var comics2 = $$('.comics_wrap .wrap_another > ul');
	var preview2 = $$('.preview_wrap .wrap_another > ul');
	var kcomics2 = $$('.kcomics_wrap .wrap_another > ul');
	var webtoonT = $$('.tab_search_category a')[1];
	var leaguetoonT = $$('.tab_search_category a')[2];
	var comicsT = $$('.tab_search_category a')[3];
	var previewT = $$('.tab_search_category a')[4];
	var kcomicsT = $$('.tab_search_category a')[5];



	if(webtoon.length==0&&webtoon2.length==1){
		webtoonT.href = '/search/webtoon/'+encodeURI(q)+'?category=anotherDiscovery';
	}

	if(leaguetoon.length==0&&leaguetoon2.length==1){
		leaguetoonT.href = '/search/leaguetoon/'+encodeURI(q)+'?category=anotherDiscovery';
	}

	if(comics.length==0&&comics2.length==1){
		comicsT.href = '/search/comics/'+encodeURI(q)+'?category=anotherDiscovery';
	}

	if(preview.length==0&&preview2.length==1){
		previewT.href = '/search/preview/'+encodeURI(q)+'?category=anotherDiscovery';
	}

	if(kcomics.length==0&&kcomics2.length==1){
		kcomicsT.href = '/search/kcomics/'+encodeURI(q)+'?category=anotherDiscovery';
	}
}


Webtoon.Remote = (function(){
	var scrollGab = 100;
	var scrollTime = 500;
	var index = 1;
	var isStart = false;
	var tid = '';
	var topBtn, botBtn, autoBtn, controler, sideCon, slider, detail;
	
	var init = function()
	{
		topBtn = $$('.controler .to_top')[0];
		botBtn = $$('.controler .to_bottom')[0];
		autoBtn = $$('.controler .auto_scroll')[0];
		controler = $$('.controler')[0];
		slider = $$('.slider')[0];
		detail = $$('.detail')[0];

		daum.setCssText($$("html")[0],'overflow-y:scroll'); // 스크롤이 있다 없으면 자리를 잘못 잡음
		daum.addEvent(window, 'resize', setPos);
		daum.addEvent(topBtn,'click',toTop);
		daum.addEvent(botBtn,'click',toBottom);
		daum.addEvent(autoBtn,'click',toggleScroll);
		daum.addEvent($$('.controler .detail')[0],'click',toggleDetail);
		setPos();


		
		new daum.ToonSlide("scrollGuage","scrollKnop" ,{ 
			move_value:10, //스크롤휠 돌렸을경우 움직임
			step:10, // 스크롤 간격
			value:50, // 시작 스코어
			onSlide:function(){ 
				//console.log(this.value)
			} ,
			onChange:function(){
				scrollTime = 500 - 700*(this.value-50)/100;
			} 
		});
	}
	var toggleDetail = function(e)
	{
		if(daum.hasClassName(detail, 'detail_show'))
		{
			daum.removeClassName(detail, 'detail_show');
		}
		else
		{
			daum.addClassName(detail, 'detail_show');
		}
		daum.toggle(slider);


	}
	var setPos = function()
	{
		if(daum.Browser.ie6) return false;

		var l = Math.ceil((document.body.offsetWidth-978)/2) + 978;
		
		
		controler.style.left = l+'px';
	}

	var toTop = function()
	{
		window.scrollTo(0,0);
	}

	var toBottom = function()
	{
		window.scrollTo(0,daum.getCoords($$('.side_content')[0]).top-50);
	}

	var toggleScroll = function(e)
	{
		if(isStart){
			stop();
		}else{
			start();
		}
		daum.stopEvent(e)
	}

	var move = function()
	{
		if(!isStart) return;

		document.documentElement.scrollTop += scrollGab;
		if(!daum.Browser.op)document.body.scrollTop += scrollGab;

		setTimeout(move,scrollTime);

	}
	var start = function()
	{
		isStart = true;
		autoBtn.innerHTML = '스크롤정지';

		move();
	}
	var stop = function()
	{
		isStart = false;
		autoBtn.innerHTML = '자동스크롤';
	}
	var hide=function(){
		daum.hide(controler);
	};
	var show=function(){
		daum.show(controler);
	};
	var getIsStart=function(){
		return isStart;
	};


	return {init:init,hide:hide,show:show,isStart:getIsStart,stop:stop,start:start};
})();
//스크롤뷰어 상단/리모콘 액션
var ScrollViewerBar=(function(){
	var headbar,remocon;
	var innerbar;
	var tid=null;
	var isTempStop=true;
	var isMoving=false; // 자동스크롤 중인지
	var isBigAni=false;
	var isSmallAni=false;
	
	var toSmall=function(){
		if(isSmallAni) return;
		
//		console.log('small')
		isSmallAni=true;
		isBigAni=false;
		daum.Fx.animate(innerbar,"top:-45px;",{duration:0.2});
		Webtoon.Remote.hide();
	};
	var toBig=function(){
		if(isBigAni) return;
		
//		console.log('big')
		isBigAni=true;
		isSmallAni=false;
		daum.Fx.animate(innerbar,"top:0;",{duration:0.2});

		Webtoon.Remote.stop();
		Webtoon.Remote.show();
	};
	var checkHeadbar=function(){
		if(getShowArea() || isTempStop) toBig();
		else toSmall();
	};
	var getShowArea=function(){
		var isShowTime=true;
		var top = daum.Browser.getScrollOffsets().top;
		var middleNum = daum.getCoords($$(".side_content")[0]).top-600;
		
		if(top>10) isShowTime=false;
		if(top>middleNum) isShowTime=true;
		
		return isShowTime;
	};
	var tempShowToggle=function(e){
		var tag=daum.getElement(e).tagName;
		if(tag=="A"||tag=="INPUT"||tag=="EMBED"||tag=="OBJECT"||tag=="BUTTON") return;
		
		isTempStop=!isTempStop;
	};
	var tempHide=function(){
		isTempStop=false;
	};
	var tempShow=function(){
		isTempStop=true;
	};
	var start=function(){
		tid=setInterval(checkHeadbar,100);
	};
	var stop=function(){
		clearInterval(tid);
	};
	var init=function(){
		headbar=$$(".head_bar")[0];
		innerbar=$$(".head_bar .inner_wrap")[0];
		
		daum.addEvent(headbar,'mouseover', tempShow);
		daum.addEvent(document.body,'click', tempShowToggle,false); // 잠시 보여주시
		daum.addEvent(window, 'scroll', tempHide); // 잠시 보여준거 숨기기
		
		start();
	};
	
	return {init:init};
})();
// 스크롤 뷰어 액션집
var ScrollViewerMover=(function(){
	var keydownHandler=function(e){
		var code=e.keyCode;
		
		if((code==39||code==102)&&$$(".head_bar .next")[0].href) location.href=$$(".head_bar .next")[0].href;
		else if((code==37||code==100)&&$$(".head_bar .prev")[0].href) location.href=$$(".head_bar .prev")[0].href;
	};
	var clickHandler=function(e){
		if(isValidClick(e)){
			moveDown();
			daum.stopEvent(e);
		}
	};
	var isValidClick=function(e){
		var top=daum.Browser.getScrollOffsets().top+daum.Browser.getWindowSize().height*0.9;
		var tag=daum.getElement(e).tagName;
		if(tag=="A"||tag=="INPUT"||tag=="EMBED"||tag=="OBJECT"||tag=="BUTTON") return false;
		if(getEventPos(e).y<top) return false;
		
		return true;
		
	};
	var getEventPos=function(e){
		var posx = 0;
		var posy = 0;
		if (!e) var e = window.event;
		if (e.pageX || e.pageY) 	{
			posx = e.pageX;
			posy = e.pageY;
		}
		else if (e.clientX || e.clientY) 	{
			posx = e.clientX + document.body.scrollLeft
				+ document.documentElement.scrollLeft;
			posy = e.clientY + document.body.scrollTop
				+ document.documentElement.scrollTop;
		}
		return {x:posx,y:posy};
	};
	var moveDown=function(){
		var g=daum.Browser.getWindowSize().height*0.9;
		window.scrollBy(0,g);
	};
	var init=function(){
		daum.addEvent(document, 'keydown', keydownHandler);
		daum.addEvent($$(".img_list")[0], 'click', clickHandler, false);
	};
	
	return {init:init};
})();
/*스크롤뷰어*/
Webtoon.RheaViewer = (function(){
	var R = {};
	
	var nickname = '';
	var episodeId = '';
	var popup = null;
	var isMobile = navigator.userAgent.toLowerCase().indexOf('mobile') > -1;


	R.init = function(ids,id,nick){
		episodeId = id;
		nickname = nick;

		daum.addEvent($$('a.close')[0],'click',close);
		daum.addEvent($$('a.bookmark')[0],'click',bookmark);
		if($$('a.recommend')[0]) daum.addEvent($$('a.recommend')[0],'click',recommend); //리그툰 추천

		

		//방지
		document.body.oncontextmenu=new Function ("return false");
		document.body.ondragstart=new Function ("return false");
		document.body.onselectstart=new Function ("return false");


	
		sendContentView();


		ScrollViewerBar.init();
		ScrollViewerMover.init();

	}
	var recommend = function(e){
		if(!confirm("추천하시겠습니까?")) return false;
		
		var el = $$('a.recommend .cnt')[0],
			cnt = parseInt(el.innerHTML);
		Cartoon.Util.chkLogin(function(isLogin){
			if(isLogin){
				new daum.Ajax({
					method : 'post',
					url : '/vote',
					paramString : 'service_target_id='+episodeId+'&vote_service_id=8',
					onsuccess : function(r){
						var d = eval('(' + r.responseText + ')');
						var status = d.status;
						if(status == -1){ // 중복
							alert('이미 추천하셨습니다.');
						}else{
							alert('추천되었습니다.');
							el.innerHTML = cnt+1;
						}
					},
					onfailure : function(){
						alert('새로고침 후 다시 시도해 주세요.')
					}
				}).request();
			}else{
				if(confirm('로그인이 필요합니다. 로그인 하시겠습니까?')){
					top.location.href = daum.Util.getLogin(top.location.href);
				};
			};
		});
	};

	var sendContentView = function()
	{
		if(top.location.href.indexOf("/league/")>-1){
			var param = "content_type=leaguetoon&leaguetoon_episode_id="+episodeId;
		}else{
			var param = "content_type=webtoon&webtoon_episode_id="+episodeId;
		};
		//content view
		var option = {  
			url: "/content_view", // 호출할 url  
			method: "GET", 
			paramString: param
		}
		new daum.Ajax(option).request();
	}


	var close = function(e){
		var isHistoryBack = false;
		var referrer = document.referrer;
		if(referrer.indexOf('/webtoon/view/')>-1) isHistoryBack = true;
		else if(referrer.indexOf('/league/view/')>-1) isHistoryBack = true;
		else if(referrer.indexOf('/event')>-1) isHistoryBack = true;
		else if(referrer.indexOf('/my')>-1) isHistoryBack = true;
		
		if(isHistoryBack) location.href = referrer;
		else if(location.href.indexOf("/league/viewer/")>-1) location.href = '/league/view/'+nickname;
		else location.href = '/webtoon/view/'+nickname;

		daum.stopEvent(e)
	}
	var bookmark = function(e)
	{
		Cartoon.Util.chkLogin(goBookmark);
		daum.stopEvent(e);

	}
	// 로그인 팝업창에서 호출
	R.popBookmark = function()
	{
		Cartoon.Util.chkLogin(goBookmark);
		popup.close();

		$('SocialRheaIfr').contentWindow.location.reload();
	}
	var goBookmark = function(isLogin)
	{
		if(isLogin)
		{
			if(top.location.href.indexOf("/webtoon/viewer/")>-1){
				var param = "bookmark_type=webtoon&webtoon_episode_id="+episodeId;
			}else{
				var param = "bookmark_type=leaguetoon&leaguetoon_episode_id="+episodeId;
			};
			var option = {  
				url: "/bookmark", // 호출할 url  
				method: "POST",
				paramString: param,
				onsuccess: bookmarked
			}
			new daum.Ajax(option).request();
		}
		else
		{
			popup = window.open(daum.Util.getPopupLogin('http://cartoon.media.daum.net/webtoon/pop_bookmark.html'),'popup','width=400,height=270');
			popup.focus();

			//daum.Util.goLogin(location.href);
		}
	}
	var bookmarked = function(){
		var t = (document.documentElement.scrollTop || document.body.scrollTop) + 200;
		var l = 340;
		daum.show($$('.layer_bookmark')[0]);
		daum.setCssText($$('.layer_bookmark')[0],'left:'+l+'px;top:'+t+'px')
	}

	return R;
})();



Webtoon.RheaThumb = (function(){
	var gab = 182;
	var index = 0;
	var lastIndex = 0;
	var cntPerPage = 5;
	var forCenterNum = 2;
	var totalCount = 0;
	var moveSize = gab * cntPerPage;
	var mover = '';
	var isMoving = false;
	var maxLeft=0;
	var recentLeft=0;

	var init = function(ids, recentId){
		mover = $$('.episode_list .scroll_wrap')[0];
		daum.addEvent($$('.episode_list .prev')[0],'click',prev);
		daum.addEvent($$('.episode_list .next')[0],'click',next);

		totalCount = $$('.episode_list li').length;
		lastIndex=totalCount-1;
		maxLeft=-(lastIndex-4)*gab;

		daum.addClassName($('thumb'+recentId),'on');
		ids = ids.split(',');
		ids.each(function(o,i){
			if(ids[i] == recentId) index = i;
		});
		
		moveToIndex(index);
	}
	var prev = function(){
		if(totalCount<=cntPerPage) return;
		
		var g=0
		if(recentLeft==0) g=maxLeft;
		else if(recentLeft+moveSize>0) g=0;
		else g=recentLeft+moveSize;
		
		move(g);
	}
	var next = function(){
		if(totalCount<=cntPerPage) return;
			
		var g=0
		if(recentLeft==maxLeft) g=0;
		else if(recentLeft-moveSize<maxLeft) g=maxLeft;
		else g=recentLeft-moveSize;

		move(g);
	}
	var move = function(g){
		isMoving = true;
		
		daum.Fx.animate(mover,'left:'+g+'px');
		recentLeft=g;
		
		showImage(g);
	}
	var moveToIndex=function(i){
		var c=i-2;
		if(c<0||totalCount<=cntPerPage) c=0;
		else if(c>lastIndex-4) c=lastIndex-4;
		
		move(-c*gab);
	};
	
	// ie버그로 인해 lazy-loading
	var showImage=function(g){
		var start=(-g/gab);
		var els=$$('.episode_list .scroll_wrap img');
		var len=els.length;
		for(var i=start; i<start+cntPerPage; i++){
			if(els[i] && els[i].getAttribute("data-src")){
				els[i].src=els[i].getAttribute("data-src");
				els[i].removeAttribute("data-src");
			};
		};
	};

	return {init:init};
})();





/*
* 페이지 embed 가로뷰어
*/
Webtoon.EmbedViewerTitle = (function(){
	var Viewer = {};
	var nickname, recentId;
	
	Viewer.init = function(ids, id, nick){
		nickname = nick;
		recentId = id;
		

		daum.addEvent($$('a.close')[0],'click',close);
		daum.addEvent($$('a.bookmark')[0],'click',bookmark);

	}
	var close = function(e){
		var isHistoryBack = false;
		var referrer = document.referrer;
		if(referrer.indexOf('/webtoon/view/')>-1) isHistoryBack = true;
		else if(referrer.indexOf('/event')>-1) isHistoryBack = true;
		else if(referrer.indexOf('/my')>-1) isHistoryBack = true;
		
		alert(referrer)
		
		if(isHistoryBack) location.href = referrer;
		else location.href = '/webtoon/view/'+nickname;

		daum.stopEvent(e)
	}
	// 웹북마크
	var bookmark = function(e)
	{
		Cartoon.Util.chkLogin(goBookmark);
		
		daum.stopEvent(e);
	}
	var goBookmark = function(isLogin){
		if(isLogin){
			var option = {  
				url: "/bookmark", // 호출할 url  
				method: "POST", 
				paramString: "bookmark_type=webtoon&webtoon_episode_id="+recentId,
				onsuccess: bookmarked
			}
			new daum.Ajax(option).request();
		}else{
			popup = window.open(daum.Util.getPopupLogin('http://cartoon.media.daum.net/webtoon/pop_bookmark.html'),'popup','width=400,height=270');
			popup.focus();

			//daum.Util.goLogin(location.href);
		}
	}
	// 북마크 완료
	var bookmarked = function(){
		var t = document.documentElement.scrollTop + 200;
		var l = 340;
		daum.show($$('.layer_bookmark')[0]);
		daum.setCssText($$('.layer_bookmark')[0],'left:'+l+'px;top:'+t+'px')
	}
	
	return Viewer;
})();
Webtoon.EmbedViewer = (function(){
	var Viewer = {};

	var id = 'viewerWrapper'; // 플래시 div 아이디
	var flaId = 'viewerFla'; // 플래시 아이디
	var nickname = '';
	var bookmarkId = '';
	var pageNo = daum.urlParameter.page_no || 1; //가로만화 북마크된 페이지
	var imgCnt = daum.urlParameter.img_cnt || '';
	var popup = null;

	

	Viewer.init = function(ids, recentId, nick){
		nickname = nick;

		daum.addEvent($$('a.close')[0],'click',close);
		daum.addEvent($$('a.bookmark')[0],'click',bookmark);

		//방지
		document.body.oncontextmenu=new Function ("return false");
		document.body.ondragstart=new Function ("return false");
		document.body.onselectstart=new Function ("return false");

		var html = daum.Util.embedSWF('http://photo-section.daum-img.net/-cartoon10/swf/webtoon/GaroViewer2011.swf?v=21&episode_ids='+ids+'&recent_id='+recentId+'&img_cnt='+imgCnt+'&page_no='+pageNo,'940','700',{id:flaId,allowScriptAccess: "always", allowFullScreen: "true", wmode:'transparent'});

		document.write(html);

	}

	var close = function(e){
		var isHistoryBack = false;
		var referrer = document.referrer;
		if(referrer.indexOf('/webtoon/view/')>-1) isHistoryBack = true;
		else if(referrer.indexOf('/event')>-1) isHistoryBack = true;
		else if(referrer.indexOf('/my')>-1) isHistoryBack = true;
		
		if(isHistoryBack) location.href = referrer;
		else location.href = '/webtoon/view/'+nickname;

		daum.stopEvent(e)
	}
	// 웹북마크
	var bookmark = function(e)
	{
		daum.Util.thisMovie(flaId).webtoonBookmark();
		daum.stopEvent(e)
	}
	// 전체화면
	var fullscreen = function()
	{
		daum.Util.thisMovie(flaId).webtoonFullscreen();
	}
	// 플래시북마크
	Viewer.bookmark = function(id)
	{
		if(id) bookmarkId = id;
		Cartoon.Util.chkLogin(goBookmark);

	}
	// 팝업 북마크
	Viewer.popBookmark = function(){
		Cartoon.Util.chkLogin(goBookmark);
		popup.close();
	}
	// 플래시에서 날리는 메시지
	Viewer.msg = function(msg,code){
		if(code != "BOOKMARKED") alert(msg);
	}
	var goBookmark = function(isLogin){
		if(isLogin){
			var option = {  
				url: "/bookmark", // 호출할 url  
				method: "POST", 
				paramString: "bookmark_type=webtoon&webtoon_episode_id="+bookmarkId,
				onsuccess: bookmarked
			}
			new daum.Ajax(option).request();
		}else{
			popup = window.open(daum.Util.getPopupLogin('http://cartoon.media.daum.net/webtoon/pop_bookmark.html'),'popup','width=400,height=270');
			popup.focus();

			//daum.Util.goLogin(location.href);
		}
	}
	// 
	Viewer.contentView = function(id){
		var option = {  
			url: "/content_view", // 호출할 url  
			method: "GET",
			paramString: "content_type=webtoon&webtoon_episode_id="+id
		}
		new daum.Ajax(option).request();
	}
	// 북마크 완료
	var bookmarked = function(){
		//alert('북마크 되었습니다.');
		daum.Util.thisMovie(flaId).webtoonBookmarked();
	}

	Viewer.console = function(d){
		//alert(d);
		console.log(d);
	}

	
	return Viewer;

})();



//웹툰홈 비주얼
Webtoon.ThumbVisual = (function(){
	var Obj = {};
	var activeEl;

	Obj.init = function(){

		addThumbEvent();
		addBigEvent();
	
	}
	function addThumbEvent(){
		var els = $$('.thumb li');
		els.each(function(o,i){

			if(daum.hasClassName(o,'on')){
				activeEl = o;
			}

			daum.addEvent(o,'mouseover',function(e){
				var that = o;

				daum.addClassName(that,'on');
				replaceBigImage(that);

				if(activeEl != that){
					daum.removeClassName(activeEl,'on');
					activeEl = that;
				}
			});
		});
	}

	function replaceBigImage(el){
		var els = $A(el.getElementsByTagName('span'));
		var bigEls = $$('.big_image img');

		els.each(function(o,i){
			bigEls[i].parentNode.href = o.getAttribute('data-url');
			bigEls[i].src = o.getAttribute('data-big-off');
			bigEls[i].setAttribute('data-on', o.getAttribute('data-big-on'));
		});

	}
	
	function addBigEvent(){
		var els = $$('.big_image img');
		els.each(function(o){
			daum.addEvent(o,'mouseover',function(){
				var that = o;

				that.setAttribute('data-off',that.src);
				that.src = that.getAttribute('data-on');
			});
			daum.addEvent(o,'mouseout',function(){
				var that = o;

				that.src = that.getAttribute('data-off');
			});
		});
	}

	return Obj;

})();
//웹툰홈 연재시간표
Webtoon.Timeline = (function(){
	var Obj = {};
	var activeEl;

	Obj.init = function(){

		addTabEvent();
	
	}

	function addTabEvent(){
		var els = $$('.tab_webtoon_timeline li');

		els.each(function(o, i){
			if(daum.hasClassName(o,'on')){
				activeEl = o;
			}

			daum.addEvent(o,'click',function(e){
				daum.stopEvent(e);
				var that = o;

				daum.addClassName(that, 'on');
				replaceList(i);

				if(activeEl != that){
					daum.removeClassName(activeEl,'on');
					activeEl = that;
				}
			});
		});
	}
	function replaceList(index){
		$$('.list_img_info_h')[0].innerHTML = $('timeline_tmpl'+index).innerHTML;
	}

	return Obj;

})();

/* 
	LazyLoading
	미디어FT 장해룡
*/
var LazyImageLoader = function(element){
	var container = daum.$E(element);
	var images = daum.$$("img:not([src])", container);
	var threshold = 500;
	var loadImagesInHere = function(){
		var minY = daum.Browser.getScrollOffsets().top;
		var maxY = minY + ( window.innerHeight || 800 ) ;
		//container.style.position = "absolute";
		for(var i = 0, len = images.length; i < len; i++){
			var image = images[i];
			var y = daum.Element.getCoords(image).top;
			if(y >= minY - threshold && y <= maxY + threshold && image.src == "") {
				image.src = image.getAttribute("data-src");
				image.onload = image.onerror = (function(image){
					return function() {
						daum.Element.removeClassName(image, "loading");
					};
				})(image);
			}
		}
		images = daum.$$("img:not([src])", container);
		container.style.position = "static";
	};
	
	var windowScrollListener = function(e){
		if(images.length > 0) {
			loadImagesInHere();
		}
	};
	
	if(!daum.Browser.polaris){
		daum.addEvent(window, "scroll", windowScrollListener);
	} else {
		daum.Function.interval(windowScrollListener, 20);
	}

	loadImagesInHere();
};


// 액티브엑스 API
Cartoon.API = (function(){
	var Obj = {};
	var comicsType = '';
	
	Obj.init = function(options){
		comicsType = options.comicsType;
	}
	Obj.contentUse = function(id){
		var option = {  
				url: "/content_use",
				method: "POST",
				paramString: 'content_type=comics&related_content_id='+id,
				onsuccess: function(){alert('content_use success')}
			}
		new daum.Ajax(option).request();
	}
	Obj.contentView = function(id){
		var option = {  
				url: "/content_view",   
				method: "GET", 
				paramString: 'content_type='+comicsType+'&online_comics_volume_id='+id, 
				onsuccess: function(){alert('content_view success')}
			}
		new daum.Ajax(option).request();
	}
	Obj.click = function(){
		alert('click');
		cartoonViewerCatchPV();
	}
	
	return Obj;
})();
// 컨텐츠 본부 배너
Right.contentsBanner = function(){
	var _url=getTimestampUrl('/xml/cartoon/wing_3_banner.js'),
		_wrap=$$(".contents_banner")[0];
	
	if(!_wrap) return;
	
	new daum.Ajax({
		url : _url,
		onsuccess : function(r){
			var d=eval('('+r.responseText+')');
			var el=d[daum.random(0,d.length-1)];
			_wrap.innerHTML='<a href="'+el.url+'"><img src="'+el.image+'" alt="'+el.alt+'" /></a>';
		}
	}).request();
};
Right.Persona=(function(){
	//날개 작가이면 마이데이터 보여주기
	function renderArtistModule(artistName){
		var _artistWrap=$$('.artistPersona')[0],
			_normalWrap=$$('.normalPersona')[0],
			_artistName=$$('.artistName')[0];
		
		daum.show(_artistWrap);
		daum.hide(_normalWrap);
		_artistName.innerHTML=daum.String.cutString(artistName,12,"..") + "님 연재작품";
		
		new TemplateRender({tmpId:'artistCartoonList',rendEl:$$('.artistCartoonList')[0],dataUrl:'/data/leaguetoon/my_list',callback:addEvent});//연재작품 리스트
		function addEvent(){
			var btnsWrap=$$('.artistPersona .btn_work')[0],
				prevBtn=$$('.artistPersona .btn_prev')[0],
				nextBtn=$$('.artistPersona .btn_next')[0],
				list=$$('.artistCartoonList li'),
				pageSize=3,page=1,
				last=Math.ceil(list.length/pageSize);
			
			if(this.data.data.length > pageSize){
				daum.show(btnsWrap);
				daum.addEvent(prevBtn,'click',prev);
				daum.addEvent(nextBtn,'click',next);
			}
			function prev(){
				page=page==1 ? last : page-1;
				go(page);
			};
			function next(){
				page=page==last ? 1 : page+1;
				go(page);
			};
			function go(p){
				var start=(p-1)*pageSize,
					end=start+pageSize;
				list.each(function(o,i){
					if(i>=start && i<end) daum.show(o);
					else daum.hide(o);
				});
			};
			
		};
	};
	function init(){
		 _artistWrap=$$('.artistPersona')[0],
		_normalWrap=$$('.normalPersona')[0],
		_artistName=$$('.artistName')[0];
		
		 LeagueAuth(function(d){
			 // 개인화영역
			if(d.isLeaguetoonArtist) renderArtistModule(d.artistName);
			else daum.show($$('.normalPersona')[0]);
		});
	};
	
	return {init : init}
})();
/*
 * 공모전
 */
var Support={};
Support.Main=(function(){
	function setBanner(){
		var that=this;
		var btns=$$(".supportBanner .bnr_num a"),
			bans=$$(".supportBanner .bnr_list li");
		if(that.data.data.length>1){
			daum.show($$(".supportBanner .bnr_num")[0]);
		}else if(!that.data.data||that.data.data.length==0){
			daum.hide($$(".supportBanner")[0]);
		};
		
		btns.each(function(o,i){
			daum.addEvent(o,'click',active.bind(this,i));
		});
		function active(n){
			btns.each(function(o,i){
				if(n==i){
					daum.addClassName(o,'on');
					daum.show(bans[i]);
				}else{
					daum.removeClassName(o,'on');
					daum.hide(bans[i]);
				}
			});
		};
	};
	function init(){
		new TemplateRender({tmpId:'supportBottomBanner',rendEl:$$('.supportBottomBanner')[0],dataUrl:'/xml/cartoon/leaguetoon_exhibit_banner.js'});//공모전 하단배너
		new TemplateRender({tmpId:'supportBanner',rendEl:$$('.supportBanner')[0],dataUrl:'/xml/cartoon/leaguetoon_exhibit.js',callback:setBanner});//공모전 상단배너
//		new TemplateRender({tmpId:'supportBanner',rendEl:$$('.supportBanner')[0],dataUrl:'/js/banner.js',callback:setBanner});//공모전 상단배너
	};
	return {init:init};
})();

/*
 * 공모전-스크롤 따라 다니는 메뉴
 */
var scrollMenu = {
	obj: null,
	wrap: null,
	html: '\
		<div id="view_more_layer">\
			<img src="http://i1.daumcdn.net/img-section/webtoon/comic/remote_btn_up.gif" width="38" height="10" alt="맨위로" onclick="scrollMenu.toTop();" class="btn1 cursor"/><br />\
			<img src="http://i1.daumcdn.net/img-section/webtoon/comic/remote_btn_down.gif" width="38" height="10" alt="아래로" onclick="scrollMenu.toBottom();" class="btn2 cursor"/><br />\
			<img src="http://i1.daumcdn.net/img-section/webtoon/comic/remote_btn_prev.gif" width="44" height="10" alt="이전화면" onclick="scrollMenu.toPrev();" class="cursor" /><br />\
		</div>\
	',
	init: function(){
		scrollMenu.wrap = $$('.viewContents')[0];
		scrollMenu.wrap.innerHTML += scrollMenu.html;
		scrollMenu.obj = $('view_more_layer');
		scrollMenu.hdrScroll();

		daum.Event.addEvent(window, 'scroll', scrollMenu.hdrScroll);
	},
	hdrScroll: function(){
		//console.debug('스크롤');
		var t = scrollMenu.getViewportOffset();
		if(t < 100){
			scrollMenu.move(100 - t);
		}else{
			scrollMenu.move(70);
		}

	},
	toTop: function(){
		//console.debug('위로');
		window.scrollTo(0,0);
	},
	getViewportOffset: function(){
		return daum.Element.getCoords(scrollMenu.wrap).top - daum.Browser.getScrollOffsets().top;
	},
	toBottom: function(){
		//console.debug('아래로');
		var t = document.body.clientHeight;
		window.scrollTo(0,t);
	},
	toPrev: function(){
		history.back();
	},
	move: function(t){
		scrollMenu.obj.style.top = t + 'px';
	}
}


document.write('<script src="http://s1.daumcdn.net/photo-media/js/getBanner.js" type="text/javascript" charset="utf-8"><'+'/script></head>');
try { document.execCommand('BackgroundImageCache', false, true); }catch(e){}  // ie6 백그라운드 이미지 플리커링 해결


