﻿Hardcore.FloatingObject = function()
{
    var _object;
    var _topborder;
    var _bottomborder;
    var _containerwithheight;
    var _containerwithheightname;
    Ext.onReady(this.Initialize.createDelegate(this));
}

Ext.extend(Hardcore.FloatingObject, Ext.util.Observable,
{
    Initialize : function()
    {
        this.addEvents({"onData": true});
    },
    
    SetObject : function(instancename, floating, upperbound, lowerbound, containerwithheight)
    {
        this._object = Ext.get(floating);
        var tb = Ext.get(upperbound);
        this._topborder = tb.getY();
        this._bottomborder = Ext.get(lowerbound);
        this._containerwithheightname = containerwithheight;
        try
        {
            this._containerwithheight = Ext.get(containerwithheight);
        }
        catch (e)
        {
        }

        setInterval(instancename + '.ScrollIntoView();', 5);
    },
    
    ScrollIntoView : function()
    {
        try
        {
            if (this._containerwithheight == null)
            {
                this._containerwithheight = Ext.get(this._containerwithheightname);
            }
            
            var py = this.ScrollTop();
            var y = this._object.getY() + (this.ScrollTop() + 5 - this._object.getY())/8;
            
            if (y < this._topborder)
            {
                y = this._topborder;
            }
            if (y > this._bottomborder.getY() - this._containerwithheight.getHeight())
            {
                y = this._bottomborder.getY() - this._containerwithheight.getHeight();
            }
            this._object.setY(y);
        }
        catch (e)
        {
        }
    },
    
    ScrollTop : function()
    {
        var pos = 0;
        if (window.pageYOffset)
        {
	          pos = window.pageYOffset
        }
        else if (document.documentElement && document.documentElement.scrollTop)
        {
	        pos = document.documentElement.scrollTop
        }
        else if (document.body)
        {
	          pos = document.body.scrollTop
        }
        return pos;    
    }
});