
//전역변수 설정
UI.DynamicScript.prototype.noCacheParam = function(){ return ''; }
var Clustering = new UI.DynamicScript('','utf-8'); 
var param = UI.parseQuery();
var clusterId = param['clusterid'];
var newsId = param['newsid'];
var clusternewsId = param['clusternewsid'];
var cp = param['p'];
var chk_error="off";
var cData = new Array(new Array(),new Array(),new Array());
var sort = param['X'] ? param['X'] : 0;

//함수시작

ClusterListing = function(options){
	this.iframeSrc="http://media.daum.net/nms/service/news/cluster/view_news?newsid=";
	this.firstLoad = true;
	this.noPhoto = false;
	if(clusternewsId!=undefined){
		UI.$('cnewsView').src=this.iframeSrc+clusternewsId+"&cateid=&p="+cp; 
	}else{
		chk_error="on";
	}
	this.options={
		page:1,//페이지
		startNum:0,//중복통신점검
		listLength:15,//리스트 갯수
		photoListLength:27,//포토 리스트 갯수
		maxNum:1, //전체 리스트
		maxPhotoNum:1,// 전체 포토 리스트
		sort:0
	}
	Object.extend(this.options, options);
	maxNum = new Number(); //전역 변수
	this.Listing(1);
}

ClusterListing.prototype={
	Listing:function(chk){//page에 맞는 js값 불러오기
		var call_js = "http://media.daum.net/cluster/api/view.js?id="+clusterId+"&page="+this.options.page+"&callback=P.Write";
		call_js = (this.options.sort==1)?(call_js+"&sort_type=id"):(call_js);
		try{
			if(this.options.sort==0){ // 정확도순
				call_js = call_js+"&page_size="+this.options.listLength;
				UI.$('cluster_sort0').className="on";
				UI.$('cluster_sort1').className="off";
				if(!this.noPhoto)UI.$('cluster_sort2').className="off";
			}else if(this.options.sort==1){ // 최신순
				call_js = call_js+"&page_size="+this.options.listLength+"&sort_type=id";
				UI.$('cluster_sort0').className="off";
				UI.$('cluster_sort1').className="on";
				if(!this.noPhoto)UI.$('cluster_sort2').className="off";
			}else{ // 포토
				call_js = call_js+"&page_size="+this.options.photoListLength+"&list_type=photo";
				UI.$('cluster_sort0').className="off";
				UI.$('cluster_sort1').className="off";
				UI.$('cluster_sort2').className="on";
			}
			if(chk == 1){//첫로딩때
				call_js = (clusternewsId==undefined)?(call_js):(call_js+"&article_id="+clusternewsId);//articleid이속하는페이지찾기
				Clustering.call(call_js);
			}else{
				if(cData[this.options.sort][this.options.page]==undefined || (this.options.page==1 && this.options.startNum==0)){//중복통신줄이기
					Clustering.call(call_js);
				}else{//이미 불렀던 page 안부르기
					this.Write(cData[this.options.sort][this.options.page]);
					this.options.startNum=0;
				}
			}
		}catch(e){}
	},
	Paging:function(options){
		Object.extend(this.options,options);
		this.Listing();//page에 맞는 js값 불러오기
		this.NowPageSet = Math.floor((this.options.page-1)/5);
		this.prevPage = this.NowPageSet*5;
		this.nextPage = this.NowPageSet*5+6;
		if(this.options.sort == 2){ // 포토/TV
			this.maxPage = Math.floor((this.options.maxPhotoNum-1)/this.options.photoListLength)+1;
		}else{
			this.maxPage = Math.floor((this.options.maxNum-1)/this.options.listLength)+1;
		}
		this.MaxPageSet = Math.floor((this.maxPage-1)/5);
		var PageHTML = new UI.StringBuffer();
		if(this.NowPageSet>0){
			PageHTML.append("<span class=\"left\">");
			PageHTML.append("<a href=\"#\" onclick=\"P.Paging({page:1});window.scrollTo(0,0);return false;\"><img src=\"http://i1.daumcdn.net/img-media/media3/common/bt_recent_off.gif\" width=\"13\" height=\"13\" alt=\"최신\" /></a><a href=\"#\" onclick=\"P.Paging({page:"+this.prevPage+"});window.scrollTo(0,0);return false;\"><img src=\"http://i1.daumcdn.net/img-media/media3/common/bt_pre_off.gif\" width=\"13\" height=\"13\"  alt=\"이전\" /></a>");
			PageHTML.append("</span>");
		}
			PageHTML.append("<span class=\"num\">");
		for(var i=1;i<6;i++){
			var num = i + this.NowPageSet*5;
			if(num<=this.maxPage){
				if(num==this.options.page){
					(i==5 || num == this.maxPage)?PageHTML.append("<b class=\"last\">"+num+" </b>"):PageHTML.append("<b>"+num+" </b>");
				}else{
					(i==5 || num == this.maxPage)?PageHTML.append("<a href=\"#\" onclick=\"P.Paging({page:"+num+"});\" class=\"last\">"+num+" </a>"):PageHTML.append("<a href=\"#\" onclick=\"P.Paging({page:"+num+"});\">"+num+" </a>");
				}
			}
		}
			PageHTML.append("</span>");
		if(this.NowPageSet<this.MaxPageSet){
			PageHTML.append("<span class=\"right\">");
			PageHTML.append("<a href=\"#\" onclick=\"P.Paging({page:"+this.nextPage+"});window.scrollTo(0,0);return false;\"><img src=\"http://i1.daumcdn.net/img-media/media3/common/bt_next_off.gif\" width=\"13\" height=\"13\" alt=\"다음\" /></a><a href=\"#\" onclick=\"P.Paging({page:"+this.maxPage+"});window.scrollTo(0,0);return false;\"><img src=\"http://i1.daumcdn.net/img-media/media3/common/bt_last_off.gif\" width=\"13\" height=\"13\" alt=\"끝\" /></a>");
			PageHTML.append("</span>");
		}
		try{
			UI.$('paging').innerHTML=PageHTML;
			UI.$('cul_total').innerHTML= maxNum;
		}catch(e){}
	},
	View:function(id,cateid,cp,thiz){
		var liz = UI.$('cListing').getElementsByTagName('li');
		for(var i=0;i<liz.length;i++){
			try{
				if(liz[i].className.indexOf("on") > -1){
					liz[i].className=liz[i].className.replace("on","");
					liz[i].className+="visited";
				}
			}catch(e){};//자기자신노드 지우기
		}
		clusternewsId=id;
		thiz.className+=" on";
		UI.$('cnewsView').src=this.iframeSrc+clusternewsId+"&cateid="+cateid+"&p="+cp;
		if(this.options.sort == 2){ // 포토/TV
			this.drawImgLine(id);
		}
		window.scrollTo(0,0);
	},
	drawImgLine : function(id){
		var el = UI.$("img_"+id);
		var w = el.width-4;
		var h = el.height-4;
		var w2 = el.width-6;
		var h2 = el.height-6;
		var div = document.createElement('div');
		div.className = "imgLine";
		div.style.width = w + "px";
		div.style.height = h + "px";
		if(!document.all){
			div.style.top = el.offsetTop + "px";
			div.style.left = (el.offsetLeft-1) + "px";
		}
		div.innerHTML = '<div class="innerWrap" style="width:'+w2+'xp;height:'+h2+'px"></div>'
		el.parentNode.insertBefore(div, el);
	},
	drawImgGrayLine : function(id){
		var el = UI.$("img_"+id);
		var w = el.width-2;
		var h = el.height-2;
		var div = document.createElement('div');
		div.className = "imgGrayLine";
		div.style.width = w + "px";
		div.style.height = h + "px";
		if(!document.all){
			div.style.top = el.offsetTop + "px";
			div.style.left = (el.offsetLeft-1) + "px";
		}
		el.parentNode.insertBefore(div, el);
	},
	Write:function(data){//받아서 내용 갱신 하는 함수
		var onEl = 0;//처음 선택된 기사
		if(data.error=="cluster not found"){
			if(this.options.sort == 2){//포토가 하나도 없을때는 정확도로
				alert("포토/TV기사는 없습니다.");
				P.Paging({sort:0,page:1})
			}else{
				chk_error="on";//파라메타에러일때 전역변수
				var error_txt="<div id='DAUMCOMMON_ERROR_MSG'><div id='content'><h3>서비스 이용에 불편을 드려 죄송합니다.<br />원하시는 페이지를 찾을 수가 없습니다.</h3><p>찾으시려는 페이지의 주소가 잘못 입력되었거나,<br />페이지 주소의 변경 혹은 삭제로 인해 현재 사용할 수 없습니다.</p><p>입력하신 페이지의 주소가 정확한지 다시 한번 확인해 주시길 부탁드립니다.</p><p>관련하여 문의사항 있으시면 언제든지, <a href='http://cs.daum.net/faq/site/63.html' target='_top'>고객센터</a>로 문의해주시길 바랍니다.</p><p>감사합니다.</p></div></div><div id='magpieArea'><img src='http://group3.magpie.daum.net/magpie/opencounter/Open.do?service=mediadaum&key=wrong_prameter&host=media-nmsweb1' width='0' height='0' alt='' /></div>";
				UI.$('paging').innerHTML="";
				if(data.error=="cluster not found") UI.$('clusterView').innerHTML=error_txt;
			}
		}else{
			if(data.cluster.photoCount==0 && this.firstLoad){
				UI.$('cluster_sort2').className = "dimmed";
				UI.$('cluster_sort2').onclick = function(){
					this.blur();
					return false;
				}
				this.firstLoad = false;
				this.noPhoto = true;
			}
			this.options.page = (data.cluster.page!="")?data.cluster.page:this.options.page;
			this.options.maxNum = maxNum = data.cluster.totalCount;
			this.options.maxPhotoNum = data.cluster.photoCount;

			var News = data.cluster.articles;
			cData[this.options.sort][this.options.page] = data;//데이타 저장
			var ListStr = new UI.StringBuffer();
			if(clusternewsId==undefined){
				UI.$('cnewsView').src=this.iframeSrc+News[0].id+"&cateid="+News[0].category.id;clusternewsId=News[0].id;
			}
			if(UI.$('cul_news_tit').innerHTML==""){//newsid 이전기사 링크값이 없을 경우 대체용
				UI.$('cul_news_tit').innerHTML=News[0].title;
				UI.$('cul_news_back').href="http://newslink.media.daum.net/news/"+News[0].id;
			}
			if(this.options.sort == 2){ // 포토/TV
				ListStr.append("<ul class=\"phototv\">");
			}else{
				ListStr.append("<ul class=\"list\">");
			}
			for(var i = 0; i<News.length;i++){
				try{
					if(i%5==0 && i!=0 && i!=20 && this.options.sort != 2){ // 5개마다 라인
						ListStr.append("<li class=\"line\"><span>&nbsp;</span></li>");
					}else if(i%9==0 && i!=0 && i!=27 && this.options.sort == 2){
						ListStr.append("<li class=\"line\"><span>&nbsp;</span></li>");
					}
					
					ListStr.append("<li class=\"");

					if(!News[i].image.url){ // 이미지가 있다면
						ListStr.append("noPhoto ");
					}

					if(News[i].id==clusternewsId){
						ListStr.append("on\"");
						onEl = i;

						if(this.options.sort == 2){ // 포토/TV
							var tid_line = setTimeout('P.drawImgLine("'+News[i].id+'");',100);
						}
					}else{
						ListStr.append("\"");
					}

					ListStr.append("title=\""+News[i].title+"\" onclick=\"P.View('"+News[i].id+"','"+News[i].category.id+"','"+News[i].cp.engName+"',this);\"><div class=\"box\"></div>");

					if(this.options.sort == 2){ // 포토/TV
						var img = this.getThumbImgPhoto(News[i].image.url);
					}else{
						var img = this.getThumbImg(News[i].image.url);
					}

					if(News[i].image.url){ // 이미지가 있다면
						ListStr.append("<div class=\"photoWrap\"><div class=\"listImgLine\"></div><img src=\""+img+"\" class=\"img\" id=\"img_"+News[i].id+"\" alt=\""+News[i].title+"\" /></div>");
					}
					if(this.options.sort == 2){ // 포토/TV
						var title = this.reduceTxt(News[i].title , 30);
					}else{
						var title = this.reduceTxt(News[i].title , 51);
					}
					ListStr.append("<div class=\"titleWrap\"><a href=\"?newsid="+newsId+"&amp;clusterid="+clusterId+"&amp;clusternewsid="+News[i].id+"\" class=\"title\" title=\""+News[i].title+"\" onclick=\"return false;\">"+title+"</a><span class=\"info\"><span class=\"cp\">"+News[i].cp.korName+"</span><em>|</em><span class=\"date\">"+News[i].regDt.substring(0,4)+"."+News[i].regDt.substring(4,6)+"."+News[i].regDt.substring(6,8)+" "+News[i].regDt.substring(8,10)+":"+News[i].regDt.substring(10,12)+"</span></span></div></li>");

				}catch(e){}
			}
			ListStr.append("</ul>");
			UI.$('cListing').innerHTML=ListStr;
			if(this.options.sort == 2){ // 포토/TV
				var tid_grayline = setTimeout('P.setGrayLine();',100);
			}
		}
	},
	setGrayLine : function(){
		var o = UI.$("cListing").getElementsByTagName("img");
		var len = o.length;
		for(var i = 0; i<len; i++){
			this.drawImgGrayLine(o[i]);
		}
	},
	drawImgGrayLine : function(el){
		var w = el.width-2;
		var h = el.height-2;
		var div = document.createElement('div');
		div.className = "imgGrayLine";
		div.style.width = w + "px";
		div.style.height = h + "px";
		div.style.top = el.offsetTop + "px";
		div.style.left = (el.offsetLeft-1) + "px";
		el.parentNode.insertBefore(div, el);
	},
	reduceTxt : function(t, size){
		alert
		var text = this.decodeHTML(t);
		text = this.cutString(text, size, "..");
		return text;
	},
	decodeHTML : function(s){
		if(!this.decodeElement){
			this.decodeElement = document.createElement('textarea');
		}
		this.decodeElement.innerHTML = s;
		return this.decodeElement.value;
	},
	cutString : function(s, limit, suff){
		var suffix = suff || "",
			_limit = limit - suffix.length,
			_byte = 0,
			_str = '',
			val, i;
		for(i=0;i<s.length;i+=1){
			if(_limit>0){_str+=s.charAt(i);}
			val = escape(s.charAt(i)).length;
			if(val>3){ _byte++; _limit--; }
			_byte++; _limit--;
		}
		_str+=suffix;
		return (limit >= _byte) ? s : _str; 
	},
	getThumbImg:function(s){
		var a = s.split('/');
		var f = a[a.length -1];
		s =s.replace(f,'90x90_'+f);

		return s;
	},
	getThumbImgPhoto:function(s){
		var a = s.split('/');
		var f = a[a.length -1];
		s =s.replace(f,'90x90_'+f);

		return s;
	},
	Renew:function(){
		this.Paging({startNum:1});
		if(chk_error=="on"){setTimeout('P.Paging({startNum:1});',500);}
	}
}

P = new ClusterListing({listLength:20,sort:sort});var pageRenew = setTimeout('P.Renew();',1000);
