// SideView.js

if(typeof(SIDEVIEW_JS) == 'undefined') {

var SIDEVIEW_JS = true;

function insertHead( name, text, evt )
{

var	idx = this.heads.length;
var	row = new SideViewRow(-idx, name, text, evt);

	this.heads[idx] = row;
	return row;

}


function insertTail(name, evt)
{

var	idx = this.tails.length;
var	row = new SideViewRow(idx, name, evt);

	this.tails[idx] = row;
	return row;

}


function SideViewRow(idx, name, onclickEvent)
{

	this.idx = idx;
	this.name = name;
	this.onclickEvent = onclickEvent;
	this.renderRow = renderRow;
	
	this.isVisible = true;
	this.isDim = false;

}

function renderRow()
{

	if(!this.isVisible)
		return "";
		
	var str = "<div id='sideview'>"+ this.onclickEvent +"</div>";
		return str;

}

    function showSideView(curObj, mb_id, name, email, homepage) 
    {
		/*
		alert(curObj);
		alert(mb_id);
		alert(name);
		alert(email);
*/
        var sideView = new SideView('nameContextMenu', curObj, mb_id, name, email, homepage);
        sideView.showLayer();
    }

    function SideView(targetObj, curObj, mb_id, name, email, homepage) 
    {
        this.targetObj = targetObj;
        this.curObj = curObj;
        this.mb_id = mb_id;
        name = name.replace(/¡¦/g,"");
        this.name = name;
        this.email = email;
        this.homepage = homepage;
        this.showLayer = showLayer;
        this.makeNameContextMenus = makeNameContextMenus;
        this.heads = new Array();
        this.insertHead = insertHead;
        this.tails = new Array();
        this.insertTail = insertTail;
        this.getRow = getRow;
        this.hideRow = hideRow;		
        this.dimRow = dimRow;

	this.insertTail("info", ""+ name +"");

}

function showLayer()
{

clickAreaCheck = true;

var oSideViewLayer = document.getElementById(this.targetObj);
var oBody = document.body;

	if(oSideViewLayer == null) {
		oSideViewLayer = document.createElement("DIV");
		oSideViewLayer.id = this.targetObj;
		oSideViewLayer.style.position = 'absolute';
		oBody.appendChild(oSideViewLayer);
	}

	oSideViewLayer.innerHTML = this.makeNameContextMenus();

	if(getAbsoluteTop(this.curObj) + this.curObj.offsetHeight + oSideViewLayer.scrollHeight + 10 > oBody.scrollHeight)
		oSideViewLayer.style.top = getAbsoluteTop(this.curObj) - oSideViewLayer.scrollHeight;
	else
		oSideViewLayer.style.top = getAbsoluteTop(this.curObj) + this.curObj.offsetHeight;

	oSideViewLayer.style.left = getAbsoluteLeft(this.curObj) - this.curObj.offsetWidth + 10;

	divDisplay(this.targetObj, 'block');

	selectBoxHidden(this.targetObj);

}


    function getAbsoluteTop(oNode)
    {
        var oCurrentNode=oNode;
        var iTop=0;
        while(oCurrentNode.tagName!="BODY") {
            iTop+=oCurrentNode.offsetTop - oCurrentNode.scrollTop;
            oCurrentNode=oCurrentNode.offsetParent;
        }
        return iTop;
    }

    function getAbsoluteLeft(oNode)
    {
        var oCurrentNode=oNode;
        var iLeft=0;
        iLeft+=oCurrentNode.offsetWidth;
        while(oCurrentNode.tagName!="BODY") {
            iLeft+=oCurrentNode.offsetLeft;
            oCurrentNode=oCurrentNode.offsetParent;
        }
        return iLeft;
    }


    function makeNameContextMenus()
    {
        var str = "<Table Width='130' border='0' cellpadding='0' cellspacing='0'>";

        var i=0;
        for (i=this.heads.length - 1; i >= 0; i--)
            str += this.heads[i].renderRow();
        var j=0;
        for (j=0; j < this.tails.length; j++) 
            str += '<tr>' + this.tails[j].renderRow();
        

        str += "</Table>";
        
        return str;
        
    }

    function getRow(name)
    {
        var i = 0;
        var row = null;
        for (i=0; i<this.heads.length; ++i)
        {
            row = this.heads[i];
            if (row.name == name) return row;
        }

        for (i=0; i<this.tails.length; ++i)
        {
            row = this.tails[i];
            if (row.name == name) return row;
        }
        return row;
    }

    function hideRow(name)
    {
        var row = this.getRow(name);
        if (row != null)
            row.isVisible = false;
    }

    function dimRow(name)
    {
        var row = this.getRow(name);
        if (row != null)
            row.isDim = true;
    }
    // Internet Explorer¿¡¼­ ¼¿·ºÆ®¹Ú½º¿Í ·¹ÀÌ¾î°¡ °ãÄ¥½Ã ·¹ÀÌ¾î°¡ ¼¿·ºÆ® ¹Ú½º µÚ·Î ¼û´Â Çö»óÀ» ÇØ°áÇÏ´Â ÇÔ¼ö
    // ·¹ÀÌ¾î°¡ ¼¿·ºÆ® ¹Ú½º¸¦ Ä§¹üÇÏ¸é ¼¿·ºÆ® ¹Ú½º¸¦ hidden ½ÃÅ´
    // <div id=LayerID style="display:none; position:absolute;" onpropertychange="selectBoxHidden('LayerID')">
    function selectBoxHidden(layer_id)
    {
        //var ly = eval(layer_id);
        var ly = document.getElementById(layer_id);

        // ·¹ÀÌ¾î ÁÂÇ¥
        var ly_left   = ly.offsetLeft;
        var ly_top    = ly.offsetTop;
        var ly_right  = ly.offsetLeft + ly.offsetWidth;
        var ly_bottom = ly.offsetTop + ly.offsetHeight;

        // ¼¿·ºÆ®¹Ú½ºÀÇ ÁÂÇ¥
        var el;

        for (i=0; i<document.forms.length; i++) {
            for (k=0; k<document.forms[i].length; k++) {
                el = document.forms[i].elements[k];
                if (el.type == "select-one") {
                    var el_left = el_top = 0;
                    var obj = el;
                    if (obj.offsetParent) {
                        while (obj.offsetParent) {
                            el_left += obj.offsetLeft;
                            el_top  += obj.offsetTop;
                            obj = obj.offsetParent;
                        }
                    }
                    el_left   += el.clientLeft;
                    el_top    += el.clientTop;
                    el_right  = el_left + el.clientWidth;
                    el_bottom = el_top + el.clientHeight;

                    // ÁÂÇ¥¸¦ µûÁ® ·¹ÀÌ¾î°¡ ¼¿·ºÆ® ¹Ú½º¸¦ Ä§¹üÇßÀ¸¸é ¼¿·ºÆ® ¹Ú½º¸¦ hidden ½ÃÅ´
                    if ( (el_left >= ly_left && el_top >= ly_top && el_left <= ly_right && el_top <= ly_bottom) ||
                         (el_right >= ly_left && el_right <= ly_right && el_top >= ly_top && el_top <= ly_bottom) ||
                         (el_left >= ly_left && el_bottom >= ly_top && el_right <= ly_right && el_bottom <= ly_bottom) 

||
                         (el_left >= ly_left && el_left <= ly_right && el_bottom >= ly_top && el_bottom <= ly_bottom) 

)
                        el.style.visibility = 'hidden';
                }
            }
        }
    }

    // °¨Ãß¾îÁø ¼¿·ºÆ® ¹Ú½º¸¦ ¸ðµÎ º¸ÀÌ°Ô ÇÔ
    function selectBoxVisible()
    {
        for (i=0; i<document.forms.length; i++)
        {
            for (k=0; k<document.forms[i].length; k++)
            {
                el = document.forms[i].elements[k];
                if (el.type == "select-one" && el.style.visibility == 'hidden')
                    el.style.visibility = 'visible';
            }
        }
    }


    function getAbsoluteTop(oNode)
    {
        var oCurrentNode=oNode;
        var iTop=0;
        while(oCurrentNode.tagName!="BODY") {
            iTop+=oCurrentNode.offsetTop - oCurrentNode.scrollTop;
            oCurrentNode=oCurrentNode.offsetParent;
        }
        return iTop;
    }


    function getAbsoluteLeft(oNode)
    {
        var oCurrentNode=oNode;
        var iLeft=0;
        iLeft+=oCurrentNode.offsetWidth;
        while(oCurrentNode.tagName!="BODY") {
            iLeft+=oCurrentNode.offsetLeft;
            oCurrentNode=oCurrentNode.offsetParent;
        }
        return iLeft;
    }

    function divDisplay(id, act)
    {
    	if(id == 'nameContextMenu_view') {
    		id = 'nameContextMenu';
    		act = 'block';
    	}
        selectBoxVisible();

        document.getElementById(id).style.display = act;
    }

    function hideSideView()
    {
        if (document.getElementById("nameContextMenu"))
            divDisplay ("nameContextMenu", 'none');
    }

    var clickAreaCheck = false;
    document.onclick = function()
    {
        if (!clickAreaCheck)
            hideSideView();
        else
            clickAreaCheck = false;
    }
}
