﻿//////////////////////////////////
//	WCM 배진익 2006년 10월 29일	//
//////////////////////////////////

var icnt_init = false;
var icnt_xmlHttp;
var icnt_server;
var icnt_taglist;
var icnt_param;
var icnt_svrTime;
var now = new Date(); 

//////////////////////////
// 필요한 데이터 초기화 //
//////////////////////////
function icnt_initVar()
{
	if(!icnt_init){
		icnt_xmlHttp		= icnt_getXMLhttp();
		//icnt_server			= '/search/icount.jsp';		//조회수에 맞춰서 해당 경로명을 삽입한다. 단, Ajax 규칙상 다른 서버는 접근되지 않는다.
		icnt_server			= '/count/icount.jsp'
		icnt_param			= new Array();
		icnt_taglist		= new Array();
		icnt_hottaglist		= new Array();
		icnt_newtaglist		= new Array();
		icnt_datelist		= new Array();

		icnt_init = true;

		icnt_hotcnt			= 1000;

		icnt_hotimg = "<img src='/images/img_sHot.gif'>";
		icnt_newimg = "<img src='/images/img_sNew.gif'>";

	}
}

//핫이미지에 적용할 조회수를 설정한다.
function icnt_setHotcnt(hotcnt) {
	icnt_initVar();

	icnt_hotcnt = hotcnt
}

//뉴이미지와 핫이미지를 설정한다.
function icnt_setImg(hotimg, newimg){
	icnt_initVar();

	icnt_hotimg = hotimg;
	icnt_newimg = newimg
}

//조회수 이미지에 사용할 태그를 Array에 넣는다.
function icnt_setHot(catid, artid){
	icnt_initVar();

	document.write('<span id='+catid+artid+'_hot></span>');

	icnt_hottaglist.push(document.getElementById(catid+artid+"_hot"));
}

//뉴 이미지에 사용할 태그와 게시일을 Arrary에 넣는다
function icnt_setNew(catid, artid, date){
	icnt_initVar();

	document.write('<span id='+catid+artid+'_new></span>');

	icnt_newtaglist.push(document.getElementById(catid+artid+"_new"));
	
	icnt_datelist.push(date.replace("-",""));
}

/////////////////////////
// 조회수 가지고 오기  //
/////////////////////////

//조회수에 사용할 태그와 파라메터를 Array에 넣는다.
function icnt_setTag(catid, artid){
	icnt_initVar();

	document.write('<span id='+catid+artid+'></span>');

	icnt_param.push(catid+'-'+artid);
	icnt_taglist.push(document.getElementById(catid+artid));
}


//지금까지 입력된 엘리먼트와 파라메터를 기준으로 서버에 request를 던진다
//서버의 응답은 비동기로 진행되며 서버의 state 있을 경우 icnt_Callback 호출한다.
function icnt_getHit(){
	if(icnt_param != null){
		var url  = icnt_server;
			url += '?action=select' 
			url += '&param=' + icnt_param.join(',');
			url += '&p='+now.getTime();

		icnt_xmlHttp.open('GET', url, true);
		icnt_xmlHttp.onreadystatechange = icnt_Callback;	//xmlhttp 함수의 readystate가 변경되면 callback 함수를 호출한다
		icnt_xmlHttp.send(null);
		//document.write(url);
		//alert(url);
	}
}

//서버의 state가 변경된 경우에 호출되며 값이 있을 경우에 icnt_resultPush를 호출하고 result 엘리먼트의 값을 배열로 넘겨준다
function icnt_Callback(){
	if (icnt_xmlHttp.readyState == 4) 
	{
		if (icnt_xmlHttp.status == 200) 
		{
			//결과값이 있는 경우
			//alert(icnt_xmlHttp.responseXML.xml);
			icnt_resultPush(icnt_xmlHttp.responseXML.getElementsByTagName('result'));

			//서버 시간을 저장한다
			try {
				icnt_svrTime = icnt_xmlHttp.responseXML.getElementsByTagName('date')[0].firstChild.data;
			}catch(e) {
				icnt_svrTime = ''+now.getYear()+padZero(now.getMonth()+1,2)+padZero(now.getDate(),2)+now.getHours()+now.getMinutes()+now.getSeconds();
			}

			for (var i=0; i<icnt_newtaglist.length; i++)
			{
				if (icnt_datelist[i] > icnt_svrTime)
				{
					icnt_newtaglist[i].innerHTML = icnt_newimg;
				}
			}
		} 
		else
		{
			icnt_resultPushDefault();
		}
	}
}



//ion_result값을 taglist에 있는 순서대로 결과값을 넣는다.
function icnt_resultPush(ion_result){

	var size = ion_result.length;
//	var size = icnt_taglist.length;
	var hotSize = icnt_hottaglist.length;
	var cnt = 0;

	//결과값에 따라서 이 부분 표현해 주기
	for (var i = 0; i < size; i++) 
	{
		cnt = ion_result[i].firstChild.data;
		icnt_taglist[i].innerHTML = cnt;

		if (hotSize > i && cnt > icnt_hotcnt)
		{
			icnt_hottaglist[i].innerHTML = icnt_hotimg;
		}
    }
}

//ion_result값이 없는 경우나 에러일 경우 기본 숫자로 보여준다
function icnt_resultPushDefault(){

	var size = icnt_taglist.length;

	for (var i = 0; i < size; i++) 
	{
		icnt_taglist[i].innerHTML = '3';
    }
}





//////////////////////
// 조회수 저장하기  //
//////////////////////

//조회숫자를 올리기 위해 서버 catid, artid로 request를 한다
function icnt_setHit(catid, artid, subject, createDt, artUrl){

	icnt_initVar();
	
	if(artid != null && catid != null){
		var url  = icnt_server;
			url += '?action=update';
			url += '&param=' + catid+'-'+artid;
			url += '&subject=' + subject;
			url += '&createDt=' + createDt;
			url += '&artUrl=' + artUrl;
			url += '&p='+now.getTime();

		icnt_xmlHttp.open('GET', url, true);
		icnt_xmlHttp.onreadystatechange = ion_debug;	//xmlhttp 함수의 readystate가 변경되면 callback 함수를 호출한다
		icnt_xmlHttp.send(null);
		//document.write(url);
		//alert(url);
	}
}

function ion_debug()
{

    if (icnt_xmlHttp.readyState == 4) 
	{
		if (icnt_xmlHttp.status == 200) 
		{
			//alert('응답완료 : ' + icnt_xmlHttp.responseText);
		} 
		else if (icnt_xmlHttp.status == 204)//데이터가 존재하지 않을 경우
		{
			//alert('응답실패');
		}
    }
}








///////////////////////////////////////////////////////
// 상용 메소드 ////////////////////////////////////////
///////////////////////////////////////////////////////

// 모든 브라우져에서 XML HTTP 객체 생성
function icnt_getXMLhttp(){
	var rtn = null;
		if(window.ActiveXObject){
			rtn = new ActiveXObject('Msxml2.XMLHTTP');
			if(!rtn){
				rtn = new ActiveXObject('Microsoft.XMLHTTP');
			}
		}else if(window.XMLHttpRequest){
			 rtn = new XMLHttpRequest();
		}
	return rtn;
}

//숫자 자리수 맞추는 함수
function padZero(num,leng) {
	var zero=leng-(""+num).length;
	if (typeof(num)=="number" && zero>0) {
		var tmp="";
		for (var i=0; i<zero; i++) tmp+="0";
		return tmp+num;
	} else return num;
}
