﻿jQuery.fn.extend({

    //
    // Position the an element relative to the inside of its parent
    // using absolute positioning. The element should already have the  
    // proper z-Index set. 
    //  
    // @param string vertial 'bottom', 'top'
    // @param string horizontal 'left', 'right'
    // @param element the element to position
    //
    positionToParent: function(vertical, horizontal)
    {
        var parent = this.parent().eq(0);

        var elementHeight = this.outerHeight();
        var elementWidth = this.outerWidth();

        var elementPos = this.offset();
        var elementLeft = elementPos.left;
        var elementTop = elementPos.top;

        var parentHeight = parent.outerHeight();
        var parentWidth = parent.outerWidth();

        var parentPos = parent.offset();
        var parentLeft = parentPos.left;
        var parentTop = parentPos.top;

        switch (vertical)
        {
            case 'bottom':
                elementTop = parentHeight - elementHeight;
                break;
            case 'top':
                elementTop = 0;
                break;
            default:
                break;
        }

        switch (horizontal)
        {
            case 'right':
                elementLeft = parentWidth - elementWidth;
                break;
            case 'left':
                elementLeft = 0;
                break;
            default:
                break;
        }
        
        this.css({
            top: parseInt(elementTop) + 'px',
            left: parseInt(elementLeft) + 'px',
            position: 'absolute'
        });

        return this;
    }

});
