﻿// JScript 파일
document.write("<script type='text/javascript' language='javascript' src='/lib/js/prototype.js' ></script>");
//################################# 쿠키에서 값가져오기 
function list_getCookie(s){ 
    var tmp=document.cookie.split('; '); 
    for (var i=0; i<tmp.length;i++){ 
        var c_name = tmp[i].split('='); 
        if (c_name[0]==s) return c_name[1]; 
    } 
    return false; 
} 

function getCookie(key)
{
  var cook = document.cookie + ";";
  var idx =  cook.indexOf(key, 0);
  var val = "";
 
  if(idx != -1)
  {
    cook = cook.substring(idx, cook.length);
    begin = cook.indexOf("=", 0) + 1;
    end = cook.indexOf(";", begin);
    val = unescape( cook.substring(begin, end) );
  }
 
  return val;
}
//################################# 쿠키에서 값가져오기 


//################################# 쿠키저장 
function set_cookie(c,s)    { 
    var expireDate = new Date(); 
    expireDate.setSeconds(expireDate.getSeconds()+10);    
    document.cookie = c+'='+s+';expires='+expireDate.toGMTString()+';path=/;domain='+window.location.hostname+';';    
} 

function setCookie(name, value, expiredays)
{
  var today = new Date();
  today.setDate( today.getDate() + expiredays );
  document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + today.toGMTString() + ";"
}
//################################# 쿠키저장 

//################################# 펼치기/닫기 
function part_view(n)    { 
    //obj = eval("part"+n+"_cont"); 

    //if(obj.style.display == 'none')    obj.style.display=''; 
    //else                                        obj.style.display='none'; 
} 
//################################# 펼치기/닫기 

function init() { 
    var paragraphScroller = new ParagraphScroller(layout.split(',')); 
    paragraphScroller.init(); 
} 

var TimeIterator = function (obj) { 
    this.objTimeout = null; 
    this.bStop = false; 
    this._waitingTime = 0; 
    this.id = TimeIterator.list.length; 
    TimeIterator.list[this.id] = obj; 
} 

TimeIterator.list = new Array(); 
TimeIterator.prototype.start = function() { 
    if (this.objTimeout) clearTimeout(this.objTimeout); 
    this.bStop = false; 
    this.objTimeout = setTimeout('TimeIterator.list["' + this.id + '"]._iterate();', this.getWaitingTime()); 
} 
TimeIterator.prototype.stop = function() { 
    if (this.objTimeout) clearTimeout(this.objTimeout); 
    this.bStop = true; 
} 

TimeIterator.prototype._iterate = function() { 
    this.iterate(); 
    if(this.bStop) return; 
    this.objTimeout = setTimeout('TimeIterator.list["' + this.id + '"]._iterate();', this.getWaitingTime()); 
} 
TimeIterator.prototype.setWaitingTime = function(msec) { 
    this._waitingTime = msec 
} 
TimeIterator.prototype.getWaitingTime = function() { 
    return this._waitingTime; 
} 
TimeIterator.prototype.inheritTo = function(obj) { 
    for (var p in this) { 
        obj[p] = this[p]; 
    } 
} 



var ParagraphScroller = function (pIdList) { 
    var ti = new TimeIterator(this); 
    ti.inheritTo(this);        

    this.objParent = null; 
    this.pIdList = pIdList; 
    this.objParagraphList = null; 
    this.objCloneList = null; 
    this.clickedId = ''; 

    this.bWorking = false; 
    this.bCloneCreated = false; 

    //const 
    this.SHOW_CLONE = true; 
    this.SHOW_ORIGNAL = false; 
    this.SCROLL_ENABLE = true; 
    this.SCROLL_DISABLE = false; 

    //이동설정 
    this.hSpace = 0;    //행여백 
    this.scrollStep = 10; //무빙수치 
    this.scrollCount = 0; 
    this.scrollInfoList = null; 
    this.objTimeIteratorList = new Array(); 
    this.setWaitingTime(0); 
    
}; 

ParagraphScroller.prototype.iterate = function() { 
    this.scroll(); 
} 

ParagraphScroller.prototype.registSubTimeIterator = function (objTimeIterator) { 
    this.objTimeIteratorList[this.objTimeIteratorList.length] = objTimeIterator; 
} 

ParagraphScroller.prototype.stopSubTimeIterator = function () { 
    for(var i = 0; i < this.objTimeIteratorList.length; i++) { 
        this.objTimeIteratorList[i].stop(); 
    } 
} 
ParagraphScroller.prototype.startSubTimeIterator = function () { 
    for(var i = 0; i < this.objTimeIteratorList.length; i++) { 
        this.objTimeIteratorList[i].start(); 
    } 
} 


ParagraphScroller.prototype.reArrange = function () { 
    var objBr = document.getElementById('ClearBr'); 
    if(objBr) this.objParent.removeChild(objBr); 
    var len = this.objParagraphList.length; 
    //alert('1') 
    for (var i = 0; i < len; i++) { 
        this.objParent.removeChild(this.objParagraphList[i]); 
    } 
    for (var i = 0; i < len; i++) { 
        this.objParent.appendChild(this.objParagraphList[i]); 
        this.pIdList[i] = this.objParagraphList[i].id; 
    } 
    setCookie('layout8', this.pIdList.join(), 1); 
    this.bWorking = false; 
} 

ParagraphScroller.prototype.displayChange = function (bShowClone) { 
    for ( var i = 0; i < this.objParagraphList.length; i++ ) { 
        var objParagraph = this.objParagraphList[i]; 
        var objClone = this.objCloneList[objParagraph.id]; 
        if (bShowClone) 
        { 
            objClone.style.display = 'block'; 
            objParagraph.style.display = 'none'; 
        } else { 
            objParagraph.style.display = 'block'; 
            objClone.childNodes[0].innerHTML = ''; 
            objClone.style.display = 'none'; 
        } 
    } 
} 
ParagraphScroller.prototype.scroll = function () { 
    var len = this.scrollInfoList.length; 
    if(this.scrollCount  >= this.scrollStep) { 
        //scroll end 

        //alert('1') 
        for (var i=0; i < len; i++) { 
            var scrollInfo = this.scrollInfoList[i]; 
            scrollInfo.obj.style.top = scrollInfo.to + "px"; 
        } 
        this.reArrange(); 
        this.displayChange(this.SHOW_ORIGINAL); 
        this.startSubTimeIterator(); 
        this.stop(); 
        return; 
    } else { 
        for (var i=0; i < len; i++) { 
            var scrollInfo = this.scrollInfoList[i]; 
            var displacement = Math.round(Math.sin(this.scrollCount/this.scrollStep * Math.PI / 2)  * scrollInfo.dist); 
            var curPos = scrollInfo.from + displacement; 
            scrollInfo.obj.style.top = curPos + "px"; 
        } 
    } 
    this.scrollCount++; 
} 
ParagraphScroller.prototype.createClone = function() { 
    this.objCloneList = new Array(); 
    for ( var i = this.objParagraphList.length - 1; i >= 0; i-- ) { 
        var objParagraph = this.objParagraphList[i]; 
        var objClone = objParagraph.cloneNode(true); 
        var objCroneWrap = document.createElement('div'); 
        objCroneWrap.style.display = ''; 
        this.objParent.appendChild(objCroneWrap); 
        this.objCloneList[objParagraph.id] = objCroneWrap; 
        objCroneWrap.appendChild(objClone); 
        objClone.style.margin = "0px"; 
        objCroneWrap.style.zIndex = '2'; 
        objCroneWrap.style.width = objParagraph.offsetWidth + "px"; // for firefox (fix width) 
        objCroneWrap.style.position = "absolute"; 
    } 
    this.bCloneCreated = true; 
} 

ParagraphScroller.prototype.copyClone = function() { 
    for ( var i = this.objParagraphList.length - 1; i >= 0; i-- ) { 
        var objParagraph = this.objParagraphList[i]; 
        var objClone = this.objCloneList[objParagraph.id];
        objClone.childNodes[0].innerHTML = objParagraph.innerHTML; 
        objClone.style.zIndex = '2'; 
    } 
} 

ParagraphScroller.prototype.initScroll = function () { 
    this.stopSubTimeIterator(); 
    if (!this.bCloneCreated) { 
        this.createClone(); 
    } else { 
        this.copyClone(); 
    } 
    var top = this.posTop; 
    this.scrollInfoList = new Array(); //--; 
    var idx = 0; 
    for ( var i = 0; i < this.objParagraphList.length; i++ ) { 
        var objParagraph = this.objParagraphList[i]; 
        var objClone = this.objCloneList[objParagraph.id]; 
        var to = top; 
        var from = objParagraph.offsetTop; 
        objClone.style.top = objParagraph.offsetTop + "px"; 
        
        if (from != to) { 
            //add scrollInfo 
            var scrollInfo = new Object(); 
            scrollInfo.obj = objClone; 
            scrollInfo.from = from; 
            scrollInfo.to = to; 
            scrollInfo.dist = to - from; 
            this.scrollCount = 0; 
            this.scrollInfoList[idx++] = scrollInfo; 
        } 
        top = top + objParagraph.offsetHeight + this.hSpace; 
    } 
    this.objCloneList[this.clickedId].style.zIndex = '3'; 
    this.displayChange(this.SHOW_CLONE); 
} 

ParagraphScroller.prototype.move = function( bUseScroll ) { 
    if ( bUseScroll ) { 
        this.initScroll(); 
        this.start(); 
    } else { 
        this.reArrange(); 
    } 
} 
ParagraphScroller.prototype.clickUp = function( id ) { 
    
    this.clickedId = id; 
    var objList = this.objParagraphList; 
    var idx; 

    for (idx = objList.length - 1; idx >= 0 && objList[idx].id != id; idx--); //search id's index (position); 
        if(idx == 0) { // first position. 
            //scroll 
            var first = objList[0]; 
            var len = objList.length - 1; 
            for (var i = 0; i < len; i++) { 
                objList[i] = objList[i+1]; 
            } 
            objList[i] = first; 
        } else { 
            //swap position 
            var tmp = objList[idx]; 
            objList[idx] = objList[idx - 1]; 
            objList[idx - 1] = tmp; 
        } 

        this.move(this.SCROLL_ENABLE); 
} 

ParagraphScroller.prototype.handlerClickUp = function() { 
    var objScroller = this.pScroller; 
    if( objScroller.bWorking ) return; 
    objScroller.bWorking = true; 
    objScroller.clickUp.call(objScroller, this.paragraphId); 
} 

ParagraphScroller.prototype.init = function () {
    this.objParagraphList = new Array();        

    for ( var i = this.pIdList.length - 1; i >= 0; i-- ) { 
        //regist event handler 
        var objParagraph = document.getElementById(this.pIdList[i]); 
        this.objParagraphList[i] = objParagraph; 
        var objList = objParagraph.getElementsByTagName("span"); 
        for (var j=0; j < objList.length; j++) { 
            if(objList[j].className == "icon_up") { 
                objList[j].onclick = this.handlerClickUp;
                objList[j].pScroller = this; 
                objList[j].paragraphId = this.pIdList[i]; 
                try 
                { 
                    objList[j].style.cursor = 'pointer'; 
                } catch (e) { 
                    objList[j].style.cursor = 'hand'; 
                } 
            } 
        }        
    }
    this.objParent = this.objParagraphList[0].parentNode; 
    this.objParent.style.height = this.objParent.offsetHeight + 'px'; 
    this.posTop = document.getElementById(this.pIdList[0]).offsetTop;

	//document.getElementById("test").innerHTML = '';

	//for (var i=0; i < this.objParagraphList.length; i++)
	//{	
	//	document.getElementById("test").innerHTML += '<div id="PART'+ (i + 1) +'"  style="position:relative;">' + this.objParagraphList[i].innerHTML + '</DIV>';
	//}
} 	