/**
* È­¸é¿¡ ajax ¸¦ ÅëÇÑ ÆäÀÌÁö °ü¸®¸¦ ¿ëÀÌÇÏµµ·Ï ÇÏ±âÀ§ÇÑ  À¯Æ¿(multi page managing)
*
»ç¿ë¿¹ : /sample/page_manager_sample.jsp    
date 2008. 06. 02
@author whitedream
*/
function PageManagerUtil(){
    //ÇöÀç È­¸é¿¡ Ç¥½ÃµÈ Page Á¤º¸¸¦ ´ã°í ÀÖ´Â PageDivUtil obj
    var currPageDivUtil;
    //ÇöÀç È­¸é¿¡ Ç¥½ÃµÈ Page ¸í
    var currPageName;
    //µî·ÏÇÑ ¸ðµç ÆäÀÌÁö¸í°ú div Á¤º¸¸¦ map ÇüÅÂ·Î ÀúÀåÇÏ´Â º¯¼ö    
    var mapPage = new Array();

    //È­¸é»ó¿¡¼­ Ç¥½ÃµÇ´Â ÆäÀÌÁö(view)¸íÀ» µî·Ï
    this.addPage = function(pageName){
        var pageDivUtil = mapPage[pageName];
        if(pageDivUtil==undefined){
            pageDivUtil = new PageDivUtil();
            mapPage[pageName] = pageDivUtil;            
        }else{
            alert(pageName+" ÆäÀÌÁö´Â ÀÌ¹Ì µî·Ï µÇ¾ú½À´Ï´Ù.");
        }
    }

    //µî·ÏµÈ ÆäÀÌÁö(view)¸¦ ±¸¼ºÇÏ´Â div ¿ä¼Ò¸¦ µî·Ï
    this.addPageDiv = function(pageName, divId){
        var pageDivUtil = mapPage[pageName];
        
        if (pageDivUtil==undefined){
            alert(pageName+" ÆäÀÌÁö´Â µî·ÏµÇÁö ¾Ê¾Ò½À´Ï´Ù.");
            return false;
        }
                
        pageDivUtil.addDiv(divId);
    }

    //div°¡ ÃÖÃÊ Ç¥½ÃµÉ¶§ ¼öÇàµÇ¾î¾ß ÇÏ´Â ÃÊ±âÈ­ ÇÔ¼ö¸¦ µî·Ï
    this.addPageInitFunction = function(pageName, p_initFunc){
        var pageDivUtil = mapPage[pageName];
        pageDivUtil.addInitFunction(p_initFunc);
    }
    
    //div°¡ ÃÖÃÊ Ç¥½Ã½Ã ¼öÇàµÇ¾î¾ß ÇÏ´Â ÃÊ±âÈ­ ÇÔ¼ö ¼öÇà ¿©ºÎ ¸®ÅÏ    
    this.isInitialized = function(pageName){
        var pageDivUtil = mapPage[pageName];
        return pageDivUtil.isInit();
    }
    
    //page °ü·Ã div ¸¦  È­¸é¿¡ Ç¥½Ã
    this.onPage = function(pageName){
        var pageDivUtil = mapPage[pageName];
        pageDivUtil.onPage();
    }
    //page °ü·Ã div ¸¦  È­¸é¼­ °¨Ãã
    this.offPage = function(pageName){
        var pageDivUtil = mapPage[pageName];
        pageDivUtil.offPage();
    }
        
    //ÆäÀÌÁö(view) ¸¦ ÀüÈ¯
    this.changePage = function(pageName){
        var pageDivUtil = mapPage[pageName];

        if (pageDivUtil==undefined){
            alert(pageName+" ÆäÀÌÁö´Â µî·ÏµÇÁö ¾Ê¾Ò½À´Ï´Ù.");
            return false;
        }

        var nextPageDivUtil;

        //ÀÌ¹Ì Ç¥½ÃµÇ°í ÀÖ´Â ÆäÀÌÁö°¡ ¾Æ´Ï¶ó¸é
        if (currPageName!=pageName){
            //°ð Ç¥½ÃµÉ ÆäÀÌÁö¸¦ ÀúÀå
            nextPageDivUtil = pageDivUtil;            

            //ÀÌ¹Ì Ç¥½ÃµÇ°í ÀÖ´Â ÆäÀÌÁö°¡ Á¸ÀçÇÑ´Ù¸é È­¸é¿¡¼­ °¨Ãá´Ù
            if(currPageDivUtil!=undefined){            
                currPageDivUtil.offPage();
            }
            //°ð Ç¥½ÃµÉ ÆäÀÌÁö¸¦ È­¸é¿¡ Ç¥½ÃÇÑ´Ù.
            nextPageDivUtil.onPage();
            
            //Ç¥½ÃµÈ ÆäÀÌÁö¸¦ ÇöÀç Ç¥½ÃµÈ ÆäÀÌÁö·Î ÀúÀå
            currPageDivUtil = nextPageDivUtil;
            //ÇöÀç Ç¥½ÃµÈ ÆäÀÌÁö¸íÀ» ÀúÀå
            currPageName = pageName;
        }
    }
}


/**
* ÆäÀÌÁö¸¦ ±¸¼ºÇÏ´Â div ¿ä¼Ò¸¦ °ü¸®ÇÏ±â À§ÇÑ À¯Æ¿
*    
date 2008. 06. 02
@author whitedream
*/
function PageDivUtil(){
    //div ¿ä¼Ò¸¦ ´ãÀ» ¹è¿­
    var arrDivObj = new Array();
    var arrCnt=-1;
    
    //ÃÊ±âÈ­ ÇÔ¼ö¸¦ ÀúÀå
    var initFunc = function(){
        //dummy ÃÊ±âÈ­ ÇÔ¼ö ¼¼ÆÃ
    }

    //ÃÊ±âÈ­ ÇÔ¼ö ¼öÇà¿©ºÎ
    var isInitialized = false;

    //div obj ¹è¿­ ¸®ÅÏ
    this.getArrDivObj = function(){
        return arrDivObj;
    }
    
    //µî·ÏµÈ div °¡ ÀÖÀ¸¸é div obj ¸®ÅÏ, ¾øÀ¸¸é undefined ¸®ÅÏ
    this.getDiv = function(divId){
        var obj;
        for(var i=0;i<arrDivObj.length;i++){
            if(arrDivObj[i].id == divId){
                obj = arrDivObj[i];
                break;
            }
        }
        return obj;    
    }
    
    //ÃÊ±âÈ­ ÇÔ¼ö ¼öÇà ¿©ºÎ ¸®ÅÏ
    this.isInit = function(){
        return isInitialized;
    }
     
    //div ¸¦ Ãß°¡
    this.addDiv = function(divId){              
        if(this.getDiv(divId)==undefined){            
            var obj = document.getElementById(divId);
            if(obj!=undefined){
                arrCnt++;            
                arrDivObj[arrCnt] = obj;              
            }else{
                alert(divId+" div´Â Á¸Àç ÇÏÁö ¾Ê½À´Ï´Ù.");
            }
        }else{
            alert(divId+" div´Â ÀÌ¹Ì µî·Ï µÇ¾ú½À´Ï´Ù.");
        }              
    }

    //div°¡ ÃÖÃÊ Ç¥½ÃµÉ¶§ ¼öÇàµÇ¾î¾ß ÇÏ´Â ÃÊ±âÈ­ ÇÔ¼ö¸¦ µî·Ï
    this.addInitFunction = function(p_initFunc){
        initFunc = p_initFunc;
    }

    //ÃÊ±âÇÔ¼ö ¼öÇà
    this.initialize = function(){
        initFunc();
    }

    //page °ü·Ã div ¸¦  È­¸é¿¡ Ç¥½Ã
    this.onPage = function(){
        //alert("onPage");
        setObjDisplay(arrDivObj,"block");
        //ÃÊ±âÈ­ ÇÔ¼ö´Â ÃÖÃÊ 1È¸¸¸ ¼öÇà
        if(!isInitialized){
            this.initialize();
            isInitialized=true;
        }
    }

    //page °ü·Ã div ¸¦  È­¸é¼­ °¨Ãã
    this.offPage = function(){
        setObjDisplay(arrDivObj,"none");
    }

    //div obj ¸¦´ã°í ÀÖ´Â array ¸¦ ¹Þ¾Æ È­¸é¼­ display value¸¦ ¼³Á¤
    var setObjDisplay = function(arrObj,displayValue){
        var cnt=0;
        for(var i=0;i<arrObj.length;i++){                        
            //alert(cnt+":"+arrObj[i].id+"="+displayValue);
            arrObj[i].style.display=displayValue;
        }        
    }
}
