Вход Регистрация
Файл: whmcs/templates/orderforms/ajaxcart/js/jqueryfloat.js
Строк: 126
<?php
(function($){
/*----------------------------------------------------------------------------------
Class: FloatObject
-------------------------------------------------------------------------------------*/
    
function FloatObject(jqObjparams)
    {
        
this.jqObj jqObj;

        switch(
params.speed)
        {
            case 
'fast'this.steps 5; break;
            case 
'normal'this.steps 10; break;
            case 
'slow'this.steps 20; break;
            default: 
this.steps 10;
        };

        var 
offset this.jqObj.offset();
        
this.currentX offset.left;
        
this.currentY offset.top;
        
this.width this.jqObj.width();
        
this.height this.jqObj.height();
        
this.alwaysVisible params.alwaysVisible;
        
this.alwaysTop params.alwaysTop;


        
this.origX typeof(params.x) == "string" ?  this.currentX params.x;
        
this.origY typeof(params.y) == "string" ?  this.currentY params.y;


        
//now we make sure the object is in absolute positions.
        
this.jqObj.css({'position':'absolute' 'top':this.currentY ,'left':this.currentX});
    }

    
FloatObject.prototype.updateLocation = function()
    {
        
this.updatedX = $(window).scrollLeft() + this.origX;

        if( 
this.alwaysTop == false ){
            if ($(
window).scrollTop() > this.origY ) {
this.updatedY = $(window).scrollTop() + 5;
} else {
this.updatedY = $(window).scrollTop()+ this.origY;
}

            if( 
this.alwaysVisible ){
                if( 
this.origX this.width this.windowWidth() )
                    
this.updatedX this.windowWidth() - this.width + $(window).scrollLeft();
                if( 
this.origY this.height this.windowHeight() )
                {
                    
this.updatedY = $(window).scrollTop() + this.windowHeight() - this.height;
                    if( 
this.updatedY this.origY this.updatedY this.origY;
                }
            }
        }
        else
        {

            if( $(
window).scrollTop() > this.origY )
            {
                
this.updatedY = $(window).scrollTop() + 5;
            }
            else
            {
                
this.updatedY this.origY 5;
            }
        }
        
this.dx Math.abs(this.updatedX this.currentX );
        
this.dy Math.abs(this.updatedY this.currentY );

        return 
this.dx || this.dy;
    }

    
FloatObject.prototype.windowHeight = function()
    {
        var 
de document.documentElement;

        return 
self.innerHeight ||
            (
de && de.clientHeight) ||
            
document.body.clientHeight;
    }

    
FloatObject.prototype.windowWidth = function()
    {
        var 
de document.documentElement;

        return 
self.innerWidth ||
            (
de && de.clientWidth) ||
            
document.body.clientWidth;
    }


    
FloatObject.prototype.move = function()
    {
        if( 
this.jqObj.css("position") != "absolute" ) return;
        var 
cx 0;
        var 
cy 0;

        if( 
this.dx )
        {
            if( 
this.dx this.steps )
                
cx = (this.dx >= 1) ? 0;
            else
                
cx Math.round(this.dx/this.steps);

            if( 
this.currentX this.updatedX )
                
this.currentX += cx;
            else
                
this.currentX -= cx;
        }

        if( 
this.dy )
        {
            if( 
this.dy this.steps )
                
cy = (this.dy >= 1) ? 0;
            else
                
cy Math.round(this.dy/this.steps);

            if( 
this.currentY this.updatedY )
                
this.currentY += cy;
            else
                
this.currentY -= cy;
        }

        
this.jqObj.css({'left':this.currentX'top'this.currentY });
    }



/*----------------------------------------------------------------------------------
Object: floatMgr
-------------------------------------------------------------------------------------*/
    
$.floatMgr = {

        
FOArray: new Array() ,

        
timernull ,

        
initializeFO: function(jqObj,params)
        {
            var 
settings =  $.extend({
                
x,
                
y,
                
speed'normal' ,
                
alwaysVisiblefalse ,
                
alwaysTopfalse},params||{});
            var 
newFO = new FloatObject(jqObj,settings);

            $.
floatMgr.FOArray.push(newFO);

            if( !$.
floatMgr.timer ) $.floatMgr.adjustFO();

            
//now making sure we are registered to all required window events
            
if( !$.floatMgr.registeredEvents )
            {
                    $(
window).bind("resize", $.floatMgr.onChange);
                    $(
window).bind("scroll", $.floatMgr.onChange);
                    $.
floatMgr.registeredEvents true;
            }
        } ,

        
adjustFO: function()
        {
            $.
floatMgr.timer null;

            var 
moveFO false;

            for( var 
< $.floatMgr.FOArray.length i++ )
            {
                 
FO = $.floatMgr.FOArray[i];
                 if( 
FO.updateLocation() )  moveFO true;
            }

            if( 
moveFO )
            {
                for( var 
< $.floatMgr.FOArray.length i++ )
                {
                    
FO = $.floatMgr.FOArray[i];
                    
FO.move();
                }

                if( !$.
floatMgr.timer ) $.floatMgr.timer setTimeout($.floatMgr.adjustFO,50);
            }
        }   ,

        
stopFloatChkfalse ,

        
onChange: function()
        {
            if( !$.
floatMgr.timer && !$.floatMgr.stopFloatChk ) $.floatMgr.adjustFO();
        }
    };

/*----------------------------------------------------------------------------------
Function: makeFloat
-------------------------------------------------------------------------------------*/
    
$.fn.makeFloat = function(params) {
        var 
obj this.eq(0); //we only operate on the first selected object;
        
$.floatMgr.initializeFO(obj,params);
        if( $.
floatMgr.timer == null ) $.floatMgr.adjustFO();
        return 
obj;
    };
    $.fn.
stopFloat = function(params) {
        $.
floatMgr.stopFloatChk true;
    };

    $.fn.
restartFloat = function(params) {
        $.
floatMgr.stopFloatChk false;
    };
})(
jQuery);
?>
Онлайн: 2
Реклама