
var GrowBox = function() {
    this.el = null;
    this.grow = 'grow';
    this.dir = 'tl';
    this.count = 0;
}

var hover = new GrowBox();

Event.observe(window, 'load', function() {
    hover.el = $('poethover'); 
})

function growBox(grow_obj, start_w, start_h)
{

    el = grow_obj.el;

    el_w = el.getWidth();
    el_h = el.getHeight();

    inc_w = (el_w - start_w) / 100.0;
    inc_h = (el_h - start_h) / 100.0;

    w = start_w + inc_w*grow_obj.count; 
    h = start_h + inc_h*grow_obj.count; 

    switch(grow_obj.dir)
    {
        case 'tl': 
        a = 0;
        b = w;
        c = h;
        d = 0;
        break;

        case 'tr': 
        a = 0;
        b = el_w;
        c = h;
        d = el_w - w;
        break;

        case 'bl': 
        a = el_h - h;
        b = w;
        c = el_h;
        d = 0;
        break;

        case 'br': 
        a = el_h - h;
        b = el_w;
        c = el_h;
        d = el_w - w;
        break;
    }
    el.style.clip = "rect("+a+"px "+b+"px "+c+"px "+d+"px)";

    if (grow_obj.grow == 'grow')
    {
        if (grow_obj.count < 100)
        {
            window.setTimeout(
                function(){  
                    grow_obj.count = grow_obj.count + 10;
                    growBox(grow_obj,start_w,start_h); }, 
                2);//interval
        }
    }
    else
    {
        if (grow_obj.count > 0)
        {
            window.setTimeout(
                function(){
                    grow_obj.count = grow_obj.count - 10;
                    growBox(grow_obj,start_w,start_h); }, 
                2);//interval
        }
        else
        {
            el.style.visibility = "hidden";
        }
    }
}

function showPoetHover(id)
{   
    poetHoverEl = $(id);
    pos = poetHoverEl.positionedOffset();

    hovHeight = hover.el.getHeight();
    hovWidth = hover.el.getWidth();
    hovElHeight = poetHoverEl.getHeight();
    hovElWidth = poetHoverEl.getWidth();
    vpos = poetHoverEl.viewportOffset();
    right = vpos.left + hovElWidth + hovWidth;
    bottom = vpos.top + hovElHeight + hovHeight;

    poetHoverEl.style.zIndex = 200;
    poetHoverEl.style.backgroundColor = "#f0e0ff";

    hover.el.update();
    poet_id=poetHoverEl.id.sub('poet_', '');
    new Ajax.Updater(hover.el, '../public/miniprofile.php?poetID='+poet_id);
    hover.el.style.visibility="visible";


    size = document.viewport.getDimensions();
/*
 * -1 and +1 s  below are so that hover is covered by border 
 * needs to be same value as border width of poetHoverEl
 */
    hover.grow = 'grow';
    if ( right < size.width )
    {
        if (bottom < size.height)
        {
            poetHoverEl.style.borderBottomColor = "#f0e0ff";
            hover.el.style.left = pos[0] + "px";
            hover.el.style.top = pos[1] + hovElHeight - 1 + "px";
            hover.dir = 'tl';
            growBox(hover,hovElWidth,0);
        }
        else
        {
            poetHoverEl.style.borderTopColor = "#f0e0ff";
            hover.el.style.left = pos[0] + "px";
            hover.el.style.top = pos[1] - hovHeight + 1 + "px";
            hover.dir = 'bl';
            growBox(hover,hovElWidth,0);
        }
    }
    else
    {
        if (bottom < size.height)
        {
            poetHoverEl.style.borderBottomColor = "#f0e0ff";
            hover.el.style.left = pos[0] - (hovWidth - hovElWidth) + "px";
            hover.el.style.top = pos[1] + hovElHeight - 1 + "px";
            hover.dir = 'tr';
            growBox(hover,hovElWidth,0);
        }
        else
        {
            poetHoverEl.style.borderTopColor = "#f0e0ff";
            hover.el.style.left = pos[0] - (hovWidth - hovElWidth) + "px";
            hover.el.style.top = pos[1] - hovHeight + 1 + "px";
            hover.dir = 'br';
            growBox(hover,hovElWidth,0);
        }
    }

}

function hidePoetHover(id)
{
    poetHoverEl = $(id);
    poetHoverEl.style.backgroundColor = "#f8f8f8";
    poetHoverEl.style.borderTopColor = "#c0b0e8";
    poetHoverEl.style.borderLeftColor = "#c0b0e8";
    poetHoverEl.style.borderBottomColor = "#8068a0";
    poetHoverEl.style.borderRightColor = "#8068a0";
    poetHoverEl.style.zIndex = 0;

    hover.grow = 'shrink';
    growBox(hover,poetHoverEl.getWidth(), 0);
}

