/*********************************
* 스크롤액션
* li사이즈 조정 시 #scroll, scrollspeed 조절
*********************************/
var topsizeplus = 0; //높이 조절
var sresult = "sresult";//선택된li id
var seqsresult = "recateseq";//선택된li seq
var pseqsresult = "precateseq";//선택된li seq
var nseqsresult = "nrecateseq";//선택된li seq
var fseqsresult = "frecateseq";//선택된li seq
var sresultlangth = 2; //선택된li 배열
var plushdigth = 5; //두번째 li top값 변경(px)
var sizelinum = 1; //특정 li top값 변경용
var defaultli = 5; //기본 li개수
var scheck = 3;// 선택되는 li 위치값
var t_positionnum = 2; //처음 위치값
var e_positionnum = 0; //마지막 위치값
var e_stopnum = 0;// e정지값
var addlilangth = 0;//임의로 생성될 li개수(데이터가 5개 미만시)
var reallilangth = 0;//생성id 시작값
var addobjlangth = 0; //추가된 li개수
var absvv = 0;//이동할 절대값
var mImgsize = 561;//이미지 최대값
var oriNum = 0;//실제 li개수 this.num은 변함

/*********************************
* ajax관련
*********************************/
var s_xmlHttp;
var s_xmlHttp1;
var s_xmlHttp2;
var s_xmlHttp3;
var obj = "scnt";
var pobj = "pscnt";
var nobj = "nscnt";
var fobj = "fscnt";
var i = 0;
var snum =0;
var opValue1 = "cateCnt";	//option 값 xml태그명
var url = "/search/lib/xmlSemantic.jsp";
var p_url = "/search/lib/xmlSemantic1.jsp";
var n_url = "/search/lib/xmlSemantic2.jsp";
var f_url = "/search/lib/xmlSemantic3.jsp";

function textScroll(scroll_el_id) {
    this.objElement = document.getElementById(scroll_el_id);
	this.objElement2 = document.getElementById(sresult); //대표li
	this.objElement3 = document.getElementById(seqsresult); //대표li seq
	this.objElement4 = document.getElementById(pseqsresult); //대표li seq
	this.objElement5 = document.getElementById(nseqsresult); //대표li seq
	this.objElement6 = document.getElementById(fseqsresult); //대표li seq
	this.objImgup = document.getElementById("imgUp");//up이미지
	this.objImgdn = document.getElementById("imgDn");//dn이미지
	
    this.objElement.style.position = 'relative';
    //this.objElement.style.overflow = 'hidden';
    this.objLi = this.objElement.getElementsByTagName('li');
    //this.height = this.objElement.offsetHeight; // li 엘리먼트가 움직이는 높이(외부에서 변경가능)
	this.height = 40; //ie6에서 높이 잘 못가져옴...하드코딩.
	//alert(this.height);
    //this.height = this.objLi.height;
	this.num = this.objLi.length; // li 엘리먼트의 총 갯수
	oriNum = this.num;
	reallilangth = defaultli - addlilangth;//생성id 시작값

	if(this.num < defaultli){ //li태그 가 5개 미만시 생성	
		addlilangth = defaultli - this.num; //5개 미만 일경우 생성해주는 li갯수
		var addlilangthNm = this.num; //개체명 뒤 숫자
		//alert(this.num);
		for(var i=0;i< addlilangth; i++){
			var newLI = document.createElement("li"); 
			//var a_el = document.createElement("a"); 
			/*for (var j=0; j<4; j++){
				var newInput = document.createElement("input");
				newInput.type = "hidden";
				newInput.value = "";
				newInput.id = "cateseq" + (reallilangth + i);
				newLI.appendChild(newInput); 

			}*/
			var newInput0 = document.createElement("input");
			var newInput1 = document.createElement("input");
			var newInput2 = document.createElement("input");
			var newInput3 = document.createElement("input");
			var newInput4 = document.createElement("input");
			newInput0.type = "hidden";
			newInput1.type = "hidden";
			newInput2.type = "hidden";
			newInput3.type = "hidden";
			newInput4.type = "hidden";
			newInput0.value = "";
			newInput1.value = "";
			newInput2.value = "";
			newInput3.value = "";
			newInput4.value = "";
			newInput0.id = "cateseq" + (addlilangthNm + i);
			newInput1.id = "pcateseq" + (addlilangthNm + i);
			newInput2.id = "ncateseq" + (addlilangthNm + i);
			newInput3.id = "fcateseq" + (addlilangthNm + i);
			newInput4.id = "orignalkwd" + (addlilangthNm + i);
			//newLI.appendChild(a_el); 
			newLI.appendChild(newInput0); 
			newLI.appendChild(newInput1); 
			newLI.appendChild(newInput2);
			newLI.appendChild(newInput3); 
			newLI.appendChild(newInput4); 
			this.objElement.appendChild(newLI);
			this.num = this.num +1;
		}
	}

	e_stopnum = (this.num - 3) - addlilangth; //e 정지값

	//e_positionnum = scheck + addlilangth;//마지막 위치 초기값
	this.totalHeight = this.height*this.num; // 총 높이
    this.scrollspeed = 4; // 스크롤되는 px
    this.objTop = new Array(); // 각 li의 top 위치를 저장
	this.objSeq = new Array(); // 각 li의 seq를 저장
	this.pobjSeq = new Array(); // 각 li의 seq를 저장
	this.nobjSeq = new Array(); // 각 li의 seq를 저장
	this.fobjSeq = new Array(); // 각 li의 seq를 저장
	this.objOriKwd = new Array(); // 각 li의 seq를 저장
    this.timer = null;
    
    for(var i=0; i<this.num; i++){
        this.objLi[i].style.position = 'absolute';
		this.objTop[i] = this.height*i;
		this.objSeq[i] = document.getElementById("cateseq"+i).value;
		this.pobjSeq[i] = document.getElementById("pcateseq"+i).value;
		this.nobjSeq[i] = document.getElementById("ncateseq"+i).value;
		this.fobjSeq[i] = document.getElementById("fcateseq"+i).value;
		this.objOriKwd[i] = document.getElementById("orignalkwd"+i).value;

		if(i == sizelinum){  //li(sizelinum) top값 수정
			this.objLi[i].style.top = this.objTop[sizelinum]-plushdigth+"px";//top위치조정	
		}else{
			this.objLi[i].style.top = this.objTop[i]+"px";//top위치조정
		}
		this.objLi[i].style.left = "0px"; //left좌표
    }

	this.objElement2.innerHTML = this.objLi[sresultlangth].innerHTML;//선택된 li 초기값 넣기
	this.objElement2.title = this.objOriKwd[sresultlangth];//선택된 title 초기값 넣기
	this.objElement3.value = this.objSeq[sresultlangth];//선택된 seq 초기값 넣기
	this.objElement4.value = this.pobjSeq[sresultlangth];//선택된 seq 초기값 넣기
	this.objElement5.value = this.nobjSeq[sresultlangth];//선택된 seq 초기값 넣기
	this.objElement6.value = this.fobjSeq[sresultlangth];//선택된 seq 초기값 넣기
	
	op_Change(this.objSeq[sresultlangth]);//ajax 처리
	op_Change1(this.pobjSeq[sresultlangth]);//ajax 처리
	op_Change2(this.nobjSeq[sresultlangth]);//ajax 처리
	op_Change3(this.fobjSeq[sresultlangth]);//ajax 처리

	//alert(s_xmlHttp.readyState);
	MvChgimg(this);//이미지 비활성화
	//moveScntTop();// 상세내용 위치잡기

	

}

textScroll.prototype.start = function() {
	if(oriNum<scheck){ //li가 3개 미만시 위치조정
		var mvNum = scheck - oriNum; //이동할 숫자
	
		for (var i=0; i<mvNum; i++ ){
			absvv = (scheck - reallilangth) -1;
			real_search_keyword.move('d',absvv);
		}
		
	}
	setTimeout("moveScntTop()",30); // 상세내용 위치잡기
	//moveScntTop();// 상세내용 위치잡기
}

textScroll.prototype.move = function(sv,vv){
if(sv == "u"){ //up
	//alert(e_positionnum);
	if(e_positionnum ==  e_stopnum){
		//alert("마지막입니다.");
		return false;
	}

    for(var i=0; i<this.num; i++) {
		
		this.objTop[i] = this.objTop[i] - this.scrollspeed;
        this.objLi[i].style.top = this.objTop[i]+"px";
    }

    if(this.objTop[sresultlangth]%this.height == 0){
		if(sizelinum == (this.num-1)){
			sizelinum = 0;
		}else{
			sizelinum = sizelinum + 1;
		}
		this.objLi[sizelinum].style.top = this.objTop[sizelinum]-plushdigth+"px";//top위치조정
			this.jump(sv,vv);
    }else{
		//alert("a");
        clearTimeout(this.timer);
        this.timer = setTimeout(this.name+".move('"+sv+"','"+vv+"')",30);
		return true;
    }

}else{ //dw
	//alert(t_positionnum);
	if(t_positionnum == 0){
		//alert("처음입니다.");
		return false;
	}
		
	for(var i=0; i<this.num; i++) {
		
        this.objTop[i] = this.objTop[i] + this.scrollspeed;
        this.objLi[i].style.top = this.objTop[i]+"px";
	}	
    if(this.objTop[sresultlangth]%this.height == 0){
		if(sizelinum == 0){
			sizelinum = this.num - 1;
		}else{
			sizelinum = sizelinum - 1;
		}
		this.objLi[sizelinum].style.top = this.objTop[sizelinum]-plushdigth+"px";//top위치조정
        this.jump(sv,vv);
    }else{
        clearTimeout(this.timer);
        this.timer = setTimeout(this.name+".move('"+sv+"','"+vv+"')",30);
		return true;
    }
}
}

textScroll.prototype.jump = function(sv,vv){

if(sv == "u"){

	//선택된 li에 값 넣기
	if(sresultlangth == (this.num - 1)){
		sresultlangth = 0;
	}else{
		sresultlangth = sresultlangth + 1;
	}
	t_positionnum = t_positionnum + 1; //위치값  - 1
	e_positionnum = e_positionnum + 1; //위치값  - 1
	this.objElement2.innerHTML = this.objLi[sresultlangth].innerHTML;//대표li에 값 넣기
	this.objElement2.title = this.objOriKwd[sresultlangth];//선택된 title 초기값 넣기
	//this.objElement3.value = this.objSeq[sresultlangth]; //대표seq 값 넣기

	op_Change(this.objSeq[sresultlangth]);//ajax 처리
	op_Change1(this.pobjSeq[sresultlangth]);//ajax 처리
	op_Change2(this.nobjSeq[sresultlangth]);//ajax 처리
	op_Change3(this.fobjSeq[sresultlangth]);//ajax 처리
	
	MvChgimg(this);//이미지 비활성화
	
	if(vv > 0){
		absvv = absvv - 1;
		real_search_keyword.move(sv,absvv);
	}
	//alert(this.num + "asjajds" + t_positionnum);

}else{

	//선택된 li에 값 넣기
	if(sresultlangth == 0){
		sresultlangth = (this.num - 1);
	}else{
		sresultlangth = sresultlangth - 1;
	}
	t_positionnum = t_positionnum - 1; //위치값  + 1
	e_positionnum = e_positionnum - 1; //위치값  + 1
	this.objElement2.innerHTML = this.objLi[sresultlangth].innerHTML;//대표li에 값 넣기
	this.objElement2.title = this.objOriKwd[sresultlangth];//선택된 title 초기값 넣기
	op_Change(this.objSeq[sresultlangth]);//ajax 처리
	op_Change1(this.pobjSeq[sresultlangth]);//ajax 처리
	op_Change2(this.nobjSeq[sresultlangth]);//ajax 처리
	op_Change3(this.fobjSeq[sresultlangth]);//ajax 처리
	

	MvChgimg(this);//이미지 비활성화

	if(vv > 0){
		absvv = absvv - 1;
		real_search_keyword.move(sv,absvv);
	}
}
    //alert(e_positionnum);
	moveScntTop();
	
}

function listMove(sv,vv){
	if(sv == "m"){ //글자선택시 move
		absvv = Math.abs(sresultlangth - vv);//절대값
		if(sresultlangth - vv > 0){
			absvv = absvv - 1;
			real_search_keyword.move('d',absvv);
		}else if(sresultlangth - vv < 0){
			absvv = absvv - 1;
			real_search_keyword.move('u',absvv);
		}else{
			return;
		}
	}else{
		real_search_keyword.move(sv,vv); // 스크롤링 시작
	}

}

function MvChgimg(obj){
if(e_positionnum == e_stopnum){ //up
		//obj.objImgup.src="/images/search/semantic_btnup.gif";
		obj.objImgdn.src="/images/search/semantic_btndown2.gif";
	}else{
		//obj.objImgup.src="/images/search/semantic_btnup.gif";
		obj.objImgdn.src="/images/search/semantic_btndown.gif";
	}

if(t_positionnum == 0){ //dn
		obj.objImgup.src="/images/search/semantic_btnup2.gif";
		//obj.objImgdn.src="/images/search/semantic_btndown.gif";
	}else{
		obj.objImgup.src="/images/search/semantic_btnup.gif";
		//obj.objImgdn.src="/images/search/semantic_btndown.gif";
	}


}

/*********************************
* ajax xml
* cv : code 
* robj : 결과값 div 구분값(현제, 이전, 다음)
*********************************/

function op_Change(cv){
    s_xmlHttp = getXmlHttpRequest();
   
    //모든 DSI widget 에서 이 엑션을 통해서 요청을 주고 받는다.
	//var url = "http://localhost:8080/sampleselect/select_ajax.jsp?l="+l;
	var qryString = "";
	
	if(url)
    {
		//s_xmlHttp.open("GET", url, true);	
		//s_xmlHttp.open("GET", url + "?skwd=" + cv , true);
		s_xmlHttp.open("GET", url + "?cateseq=" + cv , false);
		s_xmlHttp.onreadystatechange = handleRequest;
        s_xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");   
        s_xmlHttp.send(qryString);
    }
    return s_xmlHttp;
}

function op_Change1(cv){
    s_xmlHttp1 = getXmlHttpRequest1();
   
    //모든 DSI widget 에서 이 엑션을 통해서 요청을 주고 받는다.
	//var url = "http://localhost:8080/sampleselect/select_ajax.jsp?l="+l;
	var qryString = "";
	
	if(p_url)
    {
		s_xmlHttp1.open("GET", p_url + "?cateseq=" + cv , false);
		s_xmlHttp1.onreadystatechange = handleRequest1;
        s_xmlHttp1.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");   
        s_xmlHttp1.send(qryString);
    }
    //return true;
}


function op_Change2(cv){
    s_xmlHttp2 = getXmlHttpRequest2();
   
    //모든 DSI widget 에서 이 엑션을 통해서 요청을 주고 받는다.
	//var url = "http://localhost:8080/sampleselect/select_ajax.jsp?l="+l;
	var qryString = "";
	
	if(n_url)
    {
		s_xmlHttp2.open("GET", n_url + "?cateseq=" + cv , false);
		s_xmlHttp2.onreadystatechange = handleRequest2;
        s_xmlHttp2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");   
        s_xmlHttp2.send(qryString);
		//moveScntTop();
    }
    //return true;
}

function op_Change3(cv){
    s_xmlHttp3 = getXmlHttpRequest3();
   
    //모든 DSI widget 에서 이 엑션을 통해서 요청을 주고 받는다.
	//var url = "http://localhost:8080/sampleselect/select_ajax.jsp?l="+l;
	var qryString = "";
	
	if(f_url)
    {
		s_xmlHttp3.open("GET", f_url + "?cateseq=" + cv , false);
		s_xmlHttp3.onreadystatechange = handleRequest3;
        s_xmlHttp3.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");   
        s_xmlHttp3.send(qryString);
    }
    //return true;
}

function getXmlHttpRequest(){
    var s_xmlHttp = false;
	
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        s_xmlHttp = new XMLHttpRequest();
		//s_xmlHttp = new ActiveXObject("Msxml2.XMLHTTP.6.0");
    }
    // IE
    else if (window.ActiveXObject) {
        s_xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

	return s_xmlHttp;
}

function getXmlHttpRequest1(){
    var s_xmlHttp1 = false;
	
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        s_xmlHttp1 = new XMLHttpRequest();
		//s_xmlHttp = new ActiveXObject("Msxml2.XMLHTTP.6.0");
    }
    // IE
    else if (window.ActiveXObject) {
        s_xmlHttp1 = new ActiveXObject("Microsoft.XMLHTTP");
    }

	return s_xmlHttp1;
}

function getXmlHttpRequest2(){
    var s_xmlHttp2 = false;
	
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        s_xmlHttp2 = new XMLHttpRequest();
		//s_xmlHttp = new ActiveXObject("Msxml2.XMLHTTP.6.0");
    }
    // IE
    else if (window.ActiveXObject) {
        s_xmlHttp2 = new ActiveXObject("Microsoft.XMLHTTP");
    }

	return s_xmlHttp2;
}

function getXmlHttpRequest3(){
    var s_xmlHttp3 = false;
	
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        s_xmlHttp3 = new XMLHttpRequest();
		//s_xmlHttp = new ActiveXObject("Msxml2.XMLHTTP.6.0");
    }
    // IE
    else if (window.ActiveXObject) {
        s_xmlHttp3 = new ActiveXObject("Microsoft.XMLHTTP");
    }

	return s_xmlHttp3;
}


//현제 결과값
function handleRequest(){
    //정상
    if(s_xmlHttp.readyState == 4) {
        //서버에서 작업 완료
        if(s_xmlHttp.status == 200) {
            view();
        } else {
            //alert("Error loading ", "+xmlhttp.status+"("+xmlhttp.statusText+")");
        }
    }
}

//이전 결과값
function handleRequest1(){
    //정상
    if(s_xmlHttp1.readyState == 4) {
        //서버에서 작업 완료
        if(s_xmlHttp1.status == 200) {
            view1();
        } else {
            //alert("Error loading ", "+xmlhttp.status+"("+xmlhttp.statusText+")");
        }
    }
}

//다음 결과값
function handleRequest2(){
    //정상
    if(s_xmlHttp2.readyState == 4) {
        //서버에서 작업 완료
        if(s_xmlHttp2.status == 200) {
            view2();
        } else {
            //alert("Error loading ", "+xmlhttp.status+"("+xmlhttp.statusText+")");
        }
    }
}

//다음 결과값
function handleRequest3(){
    //정상
    if(s_xmlHttp3.readyState == 4) {
        //서버에서 작업 완료
        if(s_xmlHttp3.status == 200) {
            view3();
        } else {
            //alert("Error loading ", "+xmlhttp.status+"("+xmlhttp.statusText+")");
        }
    }
}

function view(){ //현제 view
    var xmlDoc = s_xmlHttp.responseXML;
	
	var sv = xmlDoc.getElementsByTagName(opValue1);
	var cnt = sv.length;
	
	for(var i=0;i<cnt; i++){
		document.getElementById(obj).innerHTML = sv[i].firstChild.nodeValue;
	}
	//alert(scnt.innerHTML);
	var scntimg = scnt.getElementsByTagName("img");//이미지 추출
	imgResize(scntimg);//이미지리사이즈

}

function view1(){ //이전 view
    var xmlDoc1 = s_xmlHttp1.responseXML;
	var sv1 = xmlDoc1.getElementsByTagName(opValue1);
	var cnt1 = sv1.length;

	if(cnt1 == 0){
		document.getElementById(pobj).innerHTML = "";
	}else{
		for(var i=0;i<cnt1; i++){
			document.getElementById(pobj).innerHTML = sv1[i].firstChild.nodeValue;
		}
	}
	//alert(scnt.innerHTML);
	var scntimg = scnt.getElementsByTagName("img");//이미지 추출
	imgResize(scntimg);//이미지리사이즈

}

function view2(){ //다음 view
    var xmlDoc2 = s_xmlHttp2.responseXML;
	var sv2 = xmlDoc2.getElementsByTagName(opValue1);
	var cnt2 = sv2.length;
	
	if(cnt2 == 0){
		document.getElementById(nobj).innerHTML = "";
	}else{	
		for(var i=0;i<cnt2; i++){
			document.getElementById(nobj).innerHTML = sv2[i].firstChild.nodeValue;
		}
	}
	//alert(scnt.innerHTML);
	var scntimg = scnt.getElementsByTagName("img");//이미지 추출
	imgResize(scntimg);//이미지리사이즈
}


function view3(){ //이전(이전) view
    var xmlDoc3 = s_xmlHttp3.responseXML;
	var sv3 = xmlDoc3.getElementsByTagName(opValue1);
	var cnt3 = sv3.length;
	
	if(cnt3 == 0){
		document.getElementById(fobj).innerHTML = "";
	}else{	
		for(var i=0;i<cnt3; i++){
			document.getElementById(fobj).innerHTML = sv3[i].firstChild.nodeValue;
		}
	}
	//alert(scnt.innerHTML);
	var scntimg = scnt.getElementsByTagName("img");//이미지 추출
	imgResize(scntimg);//이미지리사이즈
}


function imgResize( obj ){
	//alert(str);
	var ircnt = obj.length;

	for(var i=0; i<ircnt; i++){
		
		if(obj[i].offsetWidth > mImgsize){
			var o_objw = obj[i].offsetWidth;
			obj[i].style.width = mImgsize+"px";
			obj[i].style.height = (obj[i].offsetHeight*mImgsize )/o_objw + "px";
			
		}
	}
	//return str;
}


/**
* 이미지 리사이즈
*/      
function img_Rsize(obj, w, h){
 if(obj.width > w){
  obj.style.width = w + "px";
  obj.style.height = (obj.height*w)/obj.width + "px";  
 }
 if(obj.height > h){
  obj.style.width = (obj.width*h)/obj.height + "px";
  obj.style.height = h + "px";
 }
}


/**
* 상세내용 위치 잡기
*/
function moveScntTop(){
	var reTobj = document.getElementById(obj);//현제
	var reTpobj = document.getElementById(pobj);//이전
	var reTnobj = document.getElementById(nobj);//다음
	var reTfobj = document.getElementById(fobj);//이전(이전)
	var reSmobj = document.getElementById("mscnt");
	
	//if(reTobj.offsetHeight < 200 && reTobj.offsetHeight < 120){
	//	reTobj.style.height = "120px";
	//}
	

	if(reTobj.offsetHeight > 200){ //상세내용 div 위치 및 사이즈 조절
		reTobj.style.top = "0px"; //현제 view top값
		reTpobj.style.display ="none";
		reTnobj.style.display ="none";
		reSmobj.style.overflowY = "auto";
	}else if(reTobj.offsetHeight > 190 && reTobj.offsetHeight < 200){ //어정쩡한 사이즈
		reTobj.style.top = "27px"; //현제 view top값	
		reTpobj.style.display ="block";
		reTnobj.style.display ="block";
		reSmobj.style.overflowY = "hidden";
	}else{ //가운데 위치값 찾기
		reTobj.style.top = 142 - (reTobj.offsetHeight / 2) + "px";
		reTpobj.style.display ="block";
		reTnobj.style.display ="block";
		reSmobj.style.overflowY = "hidden";
	}
		if(reTpobj.innerHTML == ""){
			reTpobj.style.display = "none";
		}else{
			reTpobj.style.display = "block";
		}

		if(reTfobj.innerHTML == ""){
			reTfobj.style.display = "none";
		}else{
			reTfobj.style.display = "block";
		}

		//이전(이전) view top값 연산
		reTfobj.style.top = (reTobj.offsetTop - reTpobj.offsetHeight) - reTfobj.offsetHeight +"px";
		//이전 view top값 연산
		reTpobj.style.top = (reTobj.offsetTop - reTpobj.offsetHeight) +"px";
		//다음 view top값 연산
		reTnobj.style.top = reTobj.offsetTop + reTobj.offsetHeight + "px";

		
	
	//alert("reTfobj:"+reTfobj.style.top+"===reTpobj:"+reTpobj.style.top);
	//alert("objHeight:" + document.getElementById(obj).offsetHeight);
}
