Вход Регистрация
Файл: usr/plugins/js/obf.srax.fx.js
Строк: 230
<?php
/**
* @name FX Effect
*
* @author Ruslan Sinitskiy (si-rus)
*
* http://www.fullajax.ru/#:license
*/



var Fax = {

    
timer : function(startValue, endValue, timeout, count){
        if (
timeout == null) this.timeout = 10; else this.timeout = timeout;
        if (
count == null) this.count = 20; else this.count = count;

        var 
i = 1;
        
this.finishPercent = i/this.count;
        
this.startPercent = 1 - this.finishPercent;
        
this.isEnd = false;

        
        
this.percent = function (){
            return 
this.finishPercent;
        };  

        
this.value = function (){
            return 
startValue + i * (endValue - startValue)/this.count;
        };  
  
        
this.stop = function(){this.isEnd = true;};
  
        
this.change = function(){};
  
        
this.update = function() {  
            
this.change();     
            
i++;
            
this.finishPercent = i/this.count;
            
this.startPercent = 1 - this.finishPercent;
        };

        
this.start = function start() {
            if ((
i <= this.count && !this.isEnd) || (startValue == endValue)) {
                
this.update();
                var 
_this = this;
                
this.recall = function() {_this.start()};
                
setTimeout(this.recall, this.timeout);
            } else {
                
this.isEnd = true;
                
this.afterEnd();
            }
        };
        
        
this.afterEnd = function(){};

    }, 
    
    
jerk : function(obj){
        if (
typeof obj == 'string') obj = id(obj);
        var 
tmr = new Fax.timer(0, 0, 100, 1);
        var 
delta = 10;

        
tmr.change = function(){
            var 
pos = Fax.findPosition(obj);
            
obj.style.top = nextPosition(pos[1]) + 'px';   
            
obj.style.left = nextPosition(pos[0]) + 'px';   
        }

        function 
nextPosition(px){
            
val = Math.random();
            if (
Math.random() >= .5) val = -val;
            
px += val;
            return 
px ;               
        }
        

        
tmr.start();
    },


    
jerk2 : function(obj){
        if (
typeof obj == 'string') obj = id(obj);
        var 
tmr = new Fax.timer(0, 0, 100, 1);
        var 
start = Fax.findPosition(obj);
        var 
delta = 10;
        var 
plusH = (Math.random() >= .5) ? true : false;
        var 
plusW = (Math.random() >= .5) ? true : false;
        
tmr.change = function(){
            var 
pos = Fax.findPosition(obj);
            if (
start[0] + delta < pos[0]) plusH = false;
            if (
start[0] - delta > pos[0]) plusH = true;
            if (
start[1] + delta < pos[1]) plusW = false;
            if (
start[1] - delta > pos[1]) plusW = true;
            
pos[0] += plusH ? Math.random() : -Math.random();
            
pos[1] += plusW ? Math.random() : -Math.random();
            
obj.style.top = pos[1] + 'px';   
            
obj.style.left = pos[0] + 'px';   
        }

        
tmr.start();
    },

    
jerk3 : function(obj){
        var 
objPos = new Array();
        for (var 
i = 0; i < obj.length; i++){
            
obj[i] = SRAX.get(obj[i]);
            if (!
obj[i]) continue;
            var 
opos = Fax.findPosition(obj[i]);
            
objPos[i] = opos;
        }
        var 
tmr = new Fax.timer(0, 0, 100, 1);
        var 
deltaH = 30;
        var 
deltaW = 10;
        var 
start = [0,0];
        var 
pos = [0,0];
        var 
plusH = (Math.random() >= .5) ? true : false;
        var 
plusW = (Math.random() >= .5) ? true : false;
        
tmr.change = function(){

            
pos[0] += plusH ? Math.random() : -Math.random();
            
pos[1] += plusW ? Math.random() : -Math.random();

            if (
start[0] + deltaH < pos[0]) plusH = false;
            if (
start[0] - deltaH > pos[0]) plusH = true;
            if (
start[1] + deltaW < pos[1]) plusW = false;
            if (
start[1] - deltaW > pos[1]) plusW = true;

            for (var 
i = 0; i < obj.length; i++){
                
obj[i] = SRAX.get(obj[i]);
                if (!
obj[i]) continue;
                var 
val = objPos[i][1] + pos[1];
                
obj[i].style.top =  val + 'px';   
                
val = objPos[i][0] + pos[0];
                
obj[i].style.left = val + 'px';   
    
            }

        }

        
tmr.start();
    },

    
size : function(obj, timeout, count){
        if (
typeof obj == 'string') obj = id(obj);
        
end = obj.clientWidth;
        var 
tmr = new Fax.timer(0, end, timeout, count);
        
        var 
fontSize = Fax.getStyle(obj,'fontSize');
        var 
ed = '%';
        if (
fontSize.indexOf(ed) == -1) ed = 'px';
        
fontSize = parseFloat(fontSize.substring(0,fontSize.length - ed.length));

        var 
right = parseFloat(obj.style.left.substring(0,obj.style.left.length - 2)) + obj.clientWidth;
        var 
left = parseFloat(obj.style.left.substring(0,obj.style.left.length - 2));

        
tmr.change = function(){
            var 
val = tmr.value();
            
obj.style.left = (left - val) + 'px';
            
obj.style.fontSize = Math.ceil(fontSize + tmr.percent() * fontSize) + ed;
        }

        
tmr.start();
    }, 

    
puff : function(obj){

        var 
dubl = document.createElement('div');        
        var 
pos = Fax.findPosition(obj);

        
dubl.style.fontSize = Fax.getStyle(obj, 'fontSize');
        
dubl.style.color = Fax.getStyle(obj, 'color');
        
dubl.style.fontColor = Fax.getStyle(obj, 'fontColor');
        
dubl.style.position = 'absolute';
        
dubl.style.left = pos[0] + 'px';
        
dubl.style.top = pos[1] + 'px';
        var 
a = obj.getElementsByTagName('a');
        if (
a && a[0] && a[0].innerHTML) dubl.innerHTML = a[0].innerHTML; else return; // dubl.innerHTML = obj.innerHTML;

        
document.body.appendChild(dubl);

        if (
SRAX.browser.msie) dubl.style.backgroundColor = 'white';

        new 
Fax.size(dubl, 20, 20);
        var 
op = new Fax.opacity(dubl, 1, 0, 200, 100);
        
op.afterEnd = function(){
            
dubl.parentNode.removeChild(dubl);
        }

    },

    
findPosition : function(obj) {
        if (
typeof obj == 'string') obj = id(obj);
        var 
curleft = curtop = 0;
        if (
obj.offsetParent) {
            
curleft = obj.offsetLeft
            curtop 
= obj.offsetTop
            
while (obj = obj.offsetParent) {
                if (
obj.id == 'linkerLayer') break;
                
curleft += obj.offsetLeft
                curtop 
+= obj.offsetTop
            
}
        }
        return [
curleft,curtop];        
    },


    
getStyle : function(obj, name){
        var 
val;
        
        if (
document.defaultView && document.defaultView.getComputedStyle) {
            var 
css = document.defaultView.getComputedStyle(obj, null);
            
val = css ? css[name] : null;
        } else if (
obj.currentStyle) {
            
val = obj.currentStyle[name];
        }

        return 
val;
    },

    
opacity : function(obj, start, end, timeout, type, count){
        if (
typeof obj == 'string') obj = id(obj);
        var 
tmr = new Fax.timer(start, end, timeout, count);
        
tmr.count = 5;
        var 
agt = navigator.userAgent.toLowerCase();
        if (
window.ActiveXObject) obj.style.zoom = 1;
  
        
tmr.change = function(){
            var 
opacity = tmr.value();

            if (
window.ActiveXObject) {
                if (
type == 1) {           
                    if (
opacity < 0.3) {
                        
obj.style.filter = "alpha(opacity=0)";
                    } else {
                        
//obj.style.filter = "alpha(opacity=1)";
                        
obj.style.filter = "AlphaImageLoader(src='', sizingMethod='scale')";
                    }
                } else {
                    
obj.style.filter = "alpha(opacity=" + opacity*100 + ")";
                }
            } else {
                
obj.style.KHTMLOpacity = opacity; // Safari and Konqueror
                
obj.style.MozOpacity = opacity; // Old Mozilla and Firefox
                
obj.style.opacity = opacity;   
            }
   
        };
        var 
_this = this;
        
tmr.afterEnd = function(){
            
_this.afterEnd();
        };

        
this.afterEnd = function(){};

        
tmr.start();
        
this.timer = tmr;

    }

}
?>
Онлайн: 2
Реклама