function GetAbsPos(elem)
{
    var end  = false;
    var prnt = elem;
    var x    = 0;
    var y    = 0;
    
    while (!end)
    {
        if (prnt != null)
        {
            if (prnt.offsetLeft)
            {
                x += prnt.offsetLeft;
            }
            
            if (prnt.offsetTop)
            {
                y  += prnt.offsetTop;
            }
        
            prnt = prnt.offsetParent;
        }
        else
        {
            break;
        }
    }//while
    
    return {Left: x, Top: y};
}//GetAbsPos

//

function InitMover()
{
    var pos  = GetAbsPos($('#mover').get(0));
    var left = pos.Left;
    var top  = pos.Top;

    var dir = 0;
    var end = false;

    while (!end)
    {
        dir = Math.ceil(Math.random() * 4);
        
        if ((dir == 1) && (top > 0))
        {
            break;
        }
        else if ((dir == 2) && (left < window.moverAvailWidth - left))
        {
            break;
        }
        else if ((dir == 3) && (top < window.moverAvailHeight - top))
        {
            break;
        }
        else if ((dir == 4) && (left > 0))
        {
            break;
        }
    }//while
    
    switch (dir)
    {
        case 1:     //top
            var val  = Math.ceil(Math.random() * top);
            var dist = val - top;
            var anim = {
                'top': val + 'px'
            }
        
            break;
                                
        case 2:     //right     
            var val  = Math.ceil(Math.random() * (window.moverAvailWidth - left));
            var dist = val - left;
            var anim = {        
                'left': val + 'px'
            }                   
        
            break;
            
        case 3:     //bottom
            var val  = Math.ceil(Math.random() * (window.moverAvailHeight - top));
            var dist = val - top;
            var anim = {
                'top': val + 'px'
            }
        
            break;
            
        case 4:     //left
            var val  = Math.ceil(Math.random() * left);
            var dist = val - left;
            var anim = {
                'left': val + 'px'
            }
        
            break;
    }//switch
    
    var dur = Math.ceil(Math.abs(dist) * 10 / window.moverSpeed);
    
    $('#val > span').text(val);
    $('#dist > span').text(dist);
    $('#dir > span').text(dir);
    
    $('#mover').animate(anim,dur,function () {
        InitMover();
    });
}//InitMover

$(function () {
    var iw = 276;
    var ih = 207;
    
    /**
     *
     *  window.moverSpeed - <1,10>
     *  can be different too, but number for sure :p             
     *  
     */                          
    
    window.moverSpeed = 1.5;
            
    /**
     *
     *  nakodit random start coords ?!
     *  
     */                                                   
            
    var ww  = $(window).width();
    var wh  = $(window).height();
    
    window.moverAvailWidth  = ww - iw;
    window.moverAvailHeight = wh - ih;

    $('body').append('<div id="mover"><img src="img/banner.jpg" alt="O.o" /></div>');
    $('div#mover').show();
    
    InitMover();
});

