/**
 * 상수정의
 **/
var STATIC={
	loginUrl: "http://login.daum.net/accounts/loginform.do?daumauth=1&url=" 
}
var Util={
	goLogin: function(returnUrl){
		top.location.href=STATIC.loginUrl+encodeURIComponent(returnUrl);
	},

	/*
	 * url에 타임스탬프 붙이기
	 * */
	getTimestampUrl: function(url){
		var url = url;
		url += url.indexOf("?")>-1 ? '&' : '?';
		url += 'timestamp='+new Date().getTime();
		
		return url;
	}
};

function checkScroll(){
	hideLocationBar();
	PV.init();
}

// 서제스트
var Suggest = {
	qObj: null,
	oldValue: null,
	listWrap: null,
	list: null,
	delBtn: null,
	closeBtn: null,
	init: function(){
		Suggest.list = $('suggestList');
		Suggest.listWrap = $('suggestListWrap');
		Suggest.delBtn = $('delQueryBtn');
		Suggest.closeBtn = $('suggestListCloseBtn');
		Suggest.qObj = $('q');
		Suggest.oldValue = Suggest.qObj.value;
		Suggest.checkChangeValue();
		
		// 쿼리 삭제 버튼
		Suggest.delBtn.onclick = function(){
			this.blur();
			Suggest.qObj.focus();
			Suggest.delQuery();
			Suggest.hideDelQueryBtn();
			Suggest.hideSuggestLayer();
		}
		// 서제스트 레이어 닫기버튼
		Suggest.closeBtn.onclick = function(){
			Suggest.hideSuggestLayer();
		}
	},
	// 인풋박스에 값이 변했는지 1초에 한번씩 확인
	checkChangeValue: function(){
		if(Suggest.hasQuery()){ // 값이 있다면 쿼리삭제 버튼 보여줌
			Suggest.showDelQueryBtn();
		}else{// 값이 없다면 쿼리삭제 버튼 보여줌
			Suggest.hideDelQueryBtn();
			Suggest.hideSuggestLayer();
		}
		// 유효한 쿼리이면 리퀘스트 요청
		if(Suggest.isAvailableQuery()){
			Suggest.reqestData();
		}
		setTimeout("Suggest.checkChangeValue()",1000);
	},
	// 인풋박스의 값이 이전값과 같은지 다른지
	isNewQuery: function(){
		var newValue = Suggest.qObj.value;
		var oldValue = Suggest.oldValue;
		Suggest.oldValue = newValue;

		if(newValue != oldValue){
			return true;
		}

		return false;
	},
	// 데이터 요청
	reqestData: function(){
		var q = encodeURIComponent(Suggest.qObj.value);
		new daum.Ajax( { url:"/mobile/keyword", paramString:"q="+q, onsuccess: Suggest.onLoadData } ).request();
	},
	// 데이터 수신완료
	onLoadData: function(req) {

		var result = eval('(' + req.responseText + ')'); 
		var size = result.items.length;

		if(size == 0){
			Suggest.hideSuggestLayer();
		}else{
			Suggest.insertList(result);
			Suggest.showSuggestLayer();
		}
	},
	// 서제스트 레이어에 데이터 삽입
	insertList: function(r){
		var len = ( 5 < r.items.length) ? 5 : r.items.length;
		var html = "";
		for(var i = 0; i < len; i++){
			var q = daum.trim(r.items[i]);
			html += '<li><a href="#" onclick="Suggest.searchByQuery(\''+q+'\'); return false;">'+q+'</a></li>';
		}
		Suggest.list.innerHTML = html;
	},
	// 서제스트 레이어 보여주기
	showSuggestLayer: function(s){
		Suggest.listWrap.style.display = 'block';
	},
	// 서제스트 레이어 숨기기
	hideSuggestLayer: function(s){
		Suggest.listWrap.style.display = 'none';
	},
	// 유효한 쿼리인지
	isAvailableQuery: function(){
		var q = Suggest.qObj.value;
		q = daum.trim(q);
		
		
		if(q != "" && q.length < 20 && Suggest.isNewQuery()){
			return true;
		}
		return false;
	},
	// 쿼리가 입력되었는지
	hasQuery: function(){
		var q = Suggest.qObj.value;
		if(q != ""){
			return true;
		}
		return false;
	},
	// 쿼리삭제 버튼을 보여줌
	showDelQueryBtn: function(){
		Suggest.delBtn.style.display = 'block';
	},
	// 쿼리삭제 버튼을 숨김
	hideDelQueryBtn: function(){
		Suggest.delBtn.style.display = 'none';
	},
	// 쿼리를 삭제
	delQuery: function(){
		Suggest.qObj.value = "";
	},
	// 쿼리를 입력
	changeQuery: function(s){
		Suggest.oldValue = s
		Suggest.qObj.value = s;
		Suggest.qObj.focus();
		Suggest.hideSuggestLayer();
	},
	// 쿼리로 바로 검색
	searchByQuery: function(s){
		Suggest.qObj.value = s;
		Suggest.hideSuggestLayer();
		document.forms["searchForm"].submit();
	}
}
// 마이피플 유저인지/등록했는지/등록하기
var MyPeople={
	url: {
		install: "/mobile/mypeople/info?type=install",
		setting: "/mobile/mypeople/info?type=setting",
		already: "/mobile/mypeople/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"
	},
	check: function(id, callback){
		new daum.Ajax({
			url: Util.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);
				};
				
			}.bind(this)
		}).request();
	},
	checkSuccess: function(d,id){
		// 로그인
		if(!d.data.isLogin){
			Util.goLogin(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: Util.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="/mobile/mypeople/info?type=complete";
				else alert(data.result.message);
				
			}.bind(this)
		}).request();
	},
	install: function(){
		var ua=daum.Browser;
		if(ua.ipad||ua.iphone||ua.ipod){
			location.href=this.installUrl.iOS;
		}else if(ua.android){
			location.href=this.installUrl.android;
		}else{
			location.href=this.installUrl.pc;
		};
	},
	toggle: function(o,id){
		var onoff=o.className=="mypeople_off" ? "on" : "off";
		this.check(id, function(d, id){
			// 로그인
			if(!d.data.isLogin){
				Util.goLogin(location.href);
				return false;
			};
			// 마이피플 설치 안내
			if(d.data.myPeopleStatus!="on"){
				location.href=this.url.install;
				return false;
			};

			new daum.Ajax({
				url: Util.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="mypeople_"+onoff;
					}
					else alert(data.result.message);
					
				}.bind(this)
			}).request();
		}.bind(this));
	}
};
// 리스트 ajaX처리
function AjaxList(options){
	this.options={
		page_size: 8,
		url: '/mobile/xml/series.xml/',
		params: '',
		page_no: 1,
		wrap: 'listWrap',
		topInfoWrap: 'topInfoWrap',
		moreBtn: 'moreBtn',
		type: '',
		today: '',
		finished: false
	};
	daum.extend(this.options, options);
	
	this.oldHash = 0;
	this.loading = false;
	this.totalCount = 0;
	this.isList = (this.options.type == 'list');

	if(this.isList){
		this.options.page_size = 12;
	}

	this.init();
}
AjaxList.prototype={
	init: function(){
		var page_no = this.options.page_no = this.getHash();
		var page_size = this.options.page_size * page_no;
		this.send({page_no: 1, page_size: page_size});
		
		var self = this;

		daum.addEvent(window,'load',function(){
				setInterval(self.checkHash.bind(self),500);
			});
	},
	//
	checkHash: function(){
		if(this.isDiffHash()){
			this.moveHashNoList();
			this.oldHash = this.getPureHash();
		}
	},
	// 해시와 페이지 넘버가 같은지 확인
	isDiffHash: function(){
		var oldHash = this.oldHash;
		var hash = this.getPureHash() + "";
		if(hash.indexOf(':view') > -1){
			return false;
		}
		return (oldHash != hash);
	},
	// 해시번호와 같은 리스트로 스크롤 이동
	moveHashNoList: function(){
		var el = $('listWrap').getElementsByTagName('li');
		var no = (this.getPureHash()-1) * this.options.page_size;
		if(no > -1 && el[no]){
			var top = el[no].offsetTop;
			window.scrollTo(0, top);
		}
		if(no < 0){
			window.scrollTo(1, 0);
		}
	},
	// static
	goView: function(){
		var url = location.href;
		url = url.replace(':view', '');
		location.href = url + ":view";
	},
	// 페이지 가져오기
	getPureHash: function(){
		var page = location.href.split('#')[1];
		page = page ? page : 0;
		return page;
	},
	// 페이지 가져오기
	getHash: function(){
		var page = location.href.split('#')[1];
		page = page ? page.replace(':view','') : 1;
		return page;
	},
	// 해시 설정하기
	setHash: function(){
		if(this.pauseHash()){
			return;
		}
		var page_no = this.options.page_no;
		var host = location.href.split('#')[0];
		var url = host + "#" + page_no;
		location.href = url;
	},
	pauseHash: function(){
		return location.href.indexOf(':view') > -1 && (this.getHash() == this.options.page_no);
	},
	// 데이타 요청
	send: function(o){
		if(this.isLoading()){
			return;
		}


		var url = this.options.url;
		var page_size = o.page_size ? o.page_size : this.options.page_size;
		var page_no = o.page_no ? o.page_no : this.options.page_no;
		var params = this.options.params;

		new daum.Ajax( { url: url, paramString:"page_size="+ page_size +"&page_no="+ page_no + params, onsuccess: this.complete.bind(this) } ).request();

		this.setLoading(true);


	},
	// 데이터 로딩중인지
	isLoading: function(){
		return this.loading;
	},
	// 데이터 로딩중인지
	setLoading: function(b){
		this.loading = b;
	},
	// 페이지 넘버 올리기
	setNextPageNo: function(){
		this.options.page_no++;
		this.oldHash++;
	},
	// 데이타 수신처리
	complete: function(req){
		var xml = req.responseXML;
		
		if(this.totalCount == 0){
			this.totalCount = xml.getElementsByTagName('totalCount')[0].firstChild.nodeValue;
		}
		
		if(this.isList){
			var item = xml.getElementsByTagName('item')[0];
			var items = xml.getElementsByTagName('webtoonEpisode');
			this.insertToList(item, items);
		}else{
			var items = xml.getElementsByTagName('item');
			this.insert(items);
		}

		this.setMoreBtn(items.length);

		this.setHash();
		this.setNextPageNo();
		this.setLoading(false);

		if(arguments.callee.isFirst){
			PV.call(); // pv수집
		}
		arguments.callee.isFirst = true;

	},
	// 더보기 버튼 처리, 리스트가 더있는지 ajax 요청
	setMoreBtn: function(n){
		var page_size = this.options.page_size;
		var page_no = this.options.page_no;
		var loadCount = page_size * page_no
		var totalCount = this.totalCount;
		var moreBtn = this.options.moreBtn;

		if(totalCount > loadCount ){
			if($(moreBtn).style.display == "none"){
				$(moreBtn).style.display = "inline";
				daum.addEvent($(moreBtn), 'click', this.send.bind(this));
			}
		}else{
			$(moreBtn).style.display = "none";
		}

	},
	// 불러올 리스트가 더 있는지
	haveMoreList: function(n){
		var page_no = this.options.page_no;
		var page_size = this.options.page_size;
		var value = false;
	
		if(n > page_size){
			value = (n == 0 || n < page_size * page_no);
		}else{
			value = (n == 0 || n < page_size);
		}

		return !value;
	},
	// html 만들어서 페이지에 추가 - 리스트용
	insertToList: function(item, items){
		var el = document.createElement("ul");
		var s='',id,finishYn,nickname,title,englishTitle,introduction,titleImageUrl,thumbnailImageUrl,episode,episodeImageUrl,episodeTitle,artist,url,episodeTitle;

		id = item.getAttribute('id');
		finishYn = item.getElementsByTagName('finishYn')[0].firstChild.nodeValue;
		nickname = item.getElementsByTagName('nickname')[0].firstChild.nodeValue;
		title = item.getElementsByTagName('title')[0].firstChild.nodeValue;
		//englishTitle = item.getElementsByTagName('englishTitle')[0].firstChild.nodeValue;
		introduction = item.getElementsByTagName('introduction')[0].firstChild.nodeValue;
		//titleImageUrl = item.getElementsByTagName('titleImageUrl')[0].firstChild.nodeValue;
		artist = item.getElementsByTagName('artist')[0].getElementsByTagName('name')[0].firstChild.nodeValue;

		$(this.options.topInfoWrap).innerHTML = '\
			<div class="each_top_info">\
				<h2>'+title+'</h2>\
				<span class="info"><span class="bar">|</span> '+artist+'</span>\
				<p class="desc">'+introduction+'</p>\
			</div>\
			<div class="common_button">\
				<a class="btn_text btn_mapl" href="#" onclick="MyPeople.check('+id+');return false;">\
					<span><span>마플알림</span></span>\
				</a>\
				<a class="btn_text btn_first_view" href="/mobile/view/'+nickname+'/1">\
					<span>첫회 보기</span>\
				</a>\
				<a class="btn_text btn_save" href="#" onclick="saveToon('+id+');return false;">\
					<span>작품 저장</span>\
				</a>\
			</div>';

		for(var i=0; i<items.length; i++)
		{
			episode = items[i].getElementsByTagName('episode')[0].firstChild.nodeValue;
			episodeTitle = items[i].getElementsByTagName('title')[0].firstChild.nodeValue;
			thumbnailImageUrl = items[i].getElementsByTagName('thumbnailImageUrl')[0].firstChild.nodeValue;
			//episodeImageUrl = items[i].getElementsByTagName('episodeImageUrl')[0].firstChild.nodeValue;
			url = "/mobile/view/"+nickname+"/" + episode;
			regDate = items[i].getElementsByTagName('dateCreated')[0].firstChild.nodeValue;

			s += '\
				<li><a href="'+url+'" onclick="goView();">\
					<img src="'+thumbnailImageUrl+'" width="98" height="63" alt="" />';
			if(this.isNew(regDate)){
				s += '<span class="new">new</span>';
			}
			s += '\
					<strong>'+title+' <em>'+episodeTitle+'</em></strong>\
					<span class="desc">'+introduction+' </span>\
					<span class="info">\
						'+artist+'\
						<span class="bar">|</span>\
						'+regDate+'\
					</span>\
				</a></li>';
		}
		el.innerHTML = s;
		$(this.options.wrap).appendChild(el);
	},
	// html 만들어서 페이지에 추가
	insert: function(items){
		var el = document.createElement("ul");
		var s='',id,finishYn,nickname,title,englishTitle,introduction,titleImageUrl,thumbnailImageUrl,episode,episodeImageUrl,episodeTitle,thumbnailImageUrl,artist,url,regDate,isAdult;
		var len = items.length;

		for(var i=0; i<len; i++)
		{
			try{
				id = items[i].getAttribute('id')
				finishYn = items[i].getElementsByTagName('finishYn')[0].firstChild.nodeValue;
				nickname = items[i].getElementsByTagName('nickname')[0].firstChild.nodeValue;
				title = items[i].getElementsByTagName('title')[0].firstChild.nodeValue;
				//englishTitle = items[i].getElementsByTagName('englishTitle')[0].firstChild.nodeValue;
				introduction = items[i].getElementsByTagName('introduction')[0].firstChild.nodeValue;
				//titleImageUrl = items[i].getElementsByTagName('titleImageUrl')[0].firstChild.nodeValue;
				//thumbnailImageUrl = items[i].getElementsByTagName('thumbnailImageUrl')[0].firstChild.nodeValue;
				episode = items[i].getElementsByTagName('episode')[0].firstChild.nodeValue;
				//episodeImageUrl = items[i].getElementsByTagName('episodeImageUrl')[0].firstChild.nodeValue;
				episodeTitle = items[i].getElementsByTagName('latestWebtoonEpisode')[0].getElementsByTagName('title')[0].firstChild.nodeValue;
				thumbnailImageUrl = items[i].getElementsByTagName('latestWebtoonEpisode')[0].getElementsByTagName('thumbnailImageUrl')[0].firstChild.nodeValue;
				artist = items[i].getElementsByTagName('artist')[0].getElementsByTagName('name')[0].firstChild.nodeValue;
				url = "/mobile/view/"+nickname+"/" + episode;
				regDate = items[i].getElementsByTagName('dateCreated')[0].firstChild.nodeValue;
				isAdult = items[i].getElementsByTagName('ageGrade')[0].firstChild.nodeValue;
				if(finishYn == "Y"){
					url = "/mobile/list/"+nickname;
					episodeTitle = '총' + episode + '회';
				}

			}catch(e){}

			s += '\
				<li><a href="'+url+'" onclick="goView();">\
					<img src="'+thumbnailImageUrl+'" width="98" height="63" alt="" />';
			if(this.isNew(regDate)){
				s += '<span class="new">new</span>';
			}
			s += '\
					<strong>'+title+' <em>'+episodeTitle+'</em></strong>\
					<span class="desc">'+introduction+'</span>\
					<span class="info">\
						'+artist+'\
						<span class="bar">|</span>\
						'+regDate;
			if(isAdult){
				s += ' <span class="ico_adult">19세이상 관람가</span>';
			};
			s += '\
					</span>\
				</a></li>';
		}
		el.innerHTML = s;
		$(this.options.wrap).appendChild(el);
	},
	// 업데이트되었는지
	isNew: function(d2){
		var d1 = this.options.today;
		var d2 = d2.split(" ")[0];

		if(d1 == d2){ // 년도가 같고
			return true;
		}

		return false;
	}
}
// My만화 전체선택
function selectAll(){
	var o = document.getElementsByName('store_id');
	var len = o.length;
	var isCheckedAll = true;

	for(var i = 0; i<len; i++){
		if(!o[i].checked){
			isCheckedAll = false;
		}
		o[i].checked = "checked";
	}

	if(isCheckedAll){ // 전체선택일 때 또 전체선택을 누르면 전체해제로
		for(var i = 0; i<len; i++){
			o[i].checked = "";
		}
	}

}
// 하나라도 선택했는지
function checkDel(){
	var refer = document.getElementsByName('store_type')[0].value;
	var o = document.getElementsByName('store_id');
	var len = o.length;
	for(var i = 0; i<len; i++){
		if(o[i].checked){
			return true;
		}
	}
	location.href="/mobile/my/alert?refer="+refer;
	return false;
}
// 최소 하나 선택해주세요. 
function goMy(){
	var loc = location.href.split('refer=')[1];
	location.href = '/mobile/my/' + loc;
	//history.go(-1);
}
// 요일별 보기
function viewWeekly(r){
	if(r == ""){
		location.href = "/mobile/series/";
	}else{
		location.href = r;
	}
}
function goView(){
	var url = location.href;
	var hash = "#:view";
	if(url.indexOf(':view') > -1){
		return;
	}
	if(url.indexOf('#') > -1){
		hash = ":view";
	}
	location.href += hash;
}

function domReady(){
	PV.init();
}

var PV = {
	init: function(){
		document.write('<iframe src="about:blank" width="0" height="0" frameborder="0" scrolling="no" name="ifr_korClick" id="ifr_korClick"></iframe>');
		
		Click.call();
	},
	call: function(){
		ifr_korClick.location.href='http://cartoon.media.daum.net/viewerhor.html?'+new Date().getTime();
		
		Click.call();

	}
}
/*클릭*/
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://click.media.daum.net/pv/click.php?service='+service+'&ref='+ref+'&loc='+loc+'&tit='+tit+'&'+new Date().getTime();
		daum.load(url);
	}
};

