/*
jool v0.6.9.001
This code ©2010 Giovanni Di Gregorio All Rights Reserved · giovannidigregorio.com
Every intellectual property reserved. Please refer to http://jool.giovannidigregorio.com
Released under licence MIT http://www.opensource.org/licenses/mit-license.php
Please report comments or bugs to shaithana@gmail.com
Free for personal and commercial use, please not remove this copyright informations
NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
*/
// General utilities
function al(value) {
return alert(value);
};
function $$(obj) {
return document.getElementById(obj);
};
// jool namespace
var jool = {
version: '0.6.9.0',
internal: '01',
// internal methods
pc: function(cn, p) {
// parseClass legge il valore di una proprietà in una classe CSS
this.cn = '.' + cn;
this.cr;
if (j.sniff('IE')) {
this.cr = 'rules';
} else {
this.cr = 'cssRules';
};
for (var s = 0; s < document.styleSheets.length; s++) {
for (var r = 0; r < document.styleSheets[s][this.cr].length; r++) {
if (document.styleSheets[s][this.cr][r].selectorText == this.cn) {
return document.styleSheets[s][this.cr][r].style[p];
};
};
};
},
htr: function(c) {
// hexToRgb converte un valore esadecimale in RGB
if (c.toString().indexOf('#') != -1) {
c = c.replace(/#/g, '');
this.r = parseInt(c.slice(0, 2), 16);
this.g = parseInt(c.slice(2, 4), 16);
this.b = parseInt(c.slice(4, 6), 16);
this.rgb = [this.r, this.g, this.b];
} else {
this.rgb = c.replace(/rgb\(|\)/g, '').split(', ');
this.rgb = [parseInt(this.rgb[0], 10), parseInt(this.rgb[1], 10), parseInt(this.rgb[2], 10)];
};
return this.rgb;
},
tcc: function(p) {
// toCamelCasing converte una stringa con dash in camelCasing
var str = p.split("-");
var p = '';
for (var i in str) {
if (i > 0) str[i] = str[i].substring(0, 1).toUpperCase() + str[i].substring(1, str[i].length);
p += str[i];
};
return p;
},
coords: function(e) {
// trova le coordinate per j.gps
j.gps.x = (j.sniff('IE')) ? window.event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft: e.pageX;
j.gps.y = (j.sniff('IE')) ? window.event.clientY + document.body.scrollTop + document.documentElement.scrollTop: e.pageY;
j.gps.wScreen = window.screen.width;
j.gps.hScreen = window.screen.height;
j.gps.tScroll = document.documentElement.scrollTop;
j.gps.lScroll = document.documentElement.scrollLeft;
},
css: function(obj, p) {
// legge il valore di una proprietà CSS
if (j.sniff('IE')) {
if (obj.currentStyle[j.tcc(p)] == 'auto') {
return 0;
} else {
return obj.currentStyle[j.tcc(p)];
};
} else {
return document.defaultView.getComputedStyle(obj, null).getPropertyValue(p);
};
},
// API methods
play: function(e) {
// metodo di avvio per fx, set, flow, load
var that = this;
switch (this.action) {
case 'fx':
(this.valueType != 'rel') ? this.valueType = 'abs': this.valueType = 'rel';
if (!this.duration || this.duration == 0 || this.duration == 1) this.duration = 2;
this.easing = this.easing || 'linear';
this.stop(true);
this.Go = j.fxGo;
break;
case 'set':
this.Go = j.setGo;
break;
case 'flow':
this.Go = j.flowGo;
break;
case 'load':
this.Go = j.loadGo;
break;
};
(this.wait) ? this.waitTM = setTimeout(function() {
that.Go();
},
this.wait * 10) : this.Go();
},
stop: function(i) {
// metodo di stop
window.clearTimeout(this.waitTM);
window.clearTimeout(this.fxTM);
this.objStop = this.$;
if (i == true) {
while (this.objStop) {
window.clearTimeout(this.objStop.fxTM);
window.clearTimeout(this.objStop.waitTM);
this.objStop = this.objStop.$;
};
};
},
// API jool.gps
gps: function(obj) {
this.coords = j.coords;
var x = y = wScreen = hScreen = tScroll = lScroll = 0;
if (j.sniff('IE')) {
document.attachEvent('onmousemove', this.coords);
} else {
document.addEventListener('mousemove', this.coords, false);
};
},
// API jool.sniff
sniff: function(b) {
switch (b) {
case 'IE' || 'IE4+': if (document.all && !window.opera) return true;
break;
case 'IE5+':
if (window.attachEvent && !window.opera) return true;
break;
case 'IE5.5+':
if (window.createPopup && !window.opera) return true;
break;
case 'IE6+':
if (document.compatMode && document.all && !window.opera) return true;
break;
case 'IE7+':
if (document.documentElement && typeof document.documentElement.style.maxHeight != 'undefined' && !window.opera) return true;
break;
case 'Mozilla' || 'Safari' || 'Camino' || 'Firefox1+': if (window.getComputedStyle && !window.opera) return true;
break;
case 'Firefox1.5+':
if (Array.every) return true;
break;
case 'Firefox2+':
if (window.Iterator) return true;
break;
case 'Opera':
if (window.opera) return true;
break;
case 'Opera8+':
if (window.XMLHttpRequest && window.opera) return true;
break;
case 'Chrome':
if ((navigator.userAgent.toLowerCase()).indexOf("chrome") > -1) return true;
break;
};
},
// API jool.dom
dom: function(obj) {
return new j.$dom(obj);
},
$dom: function(f) {
this.f = f.split('!=');
this.h1 = [];
this.h2 = [];
this.z = [];
this.z1 = [];
this.z2 = [];
// Selezione dei nodi del DOM da includere
this.ID1 = (((this.f[0]).match(/#\S*(?=\.)/) || (this.f[0]).match(/#\S*/) || '*').toString()).replace('#', '');
if (this.f[0].indexOf('#') != -1) {
this.TAG1 = (((this.f[0]).match(/ \S*(?=\.)/) || (this.f[0]).match(/ \S*/) || '*').toString()).replace(' ', '');
} else {
this.TAG1 = (((this.f[0]).match(/\S*(?=\.)/) || (this.f[0]).match(/\S*/) || '*').toString()).replace(' ', '');
if (this.TAG1 == '') this.TAG1 = '*';
};
this.CLASS1 = ((this.f[0]).match(/\.\S*/)) ? new RegExp("(^| )" + (((this.f[0]).match(/\.\S*/)).toString()).replace('.', '') + "( |$)") : new RegExp(/(^| )\S*( |$)/);
if ((this.TAG1 == '*') && (this.CLASS1.toString() == '/(^| )\\S*( |$)/')) {
this.z1.push($$(this.ID1));
} else {
if (this.ID1 != '*') {
for (var i = 0; i < $$(this.ID1).getElementsByTagName(this.TAG1).length; i++) {
this.h1.push($$(this.ID1).getElementsByTagName(this.TAG1)[i]);
};
} else {
for (var i = 0; i < document.getElementsByTagName(this.TAG1).length; i++) {
this.h1.push(document.getElementsByTagName(this.TAG1)[i]);
};
};
for (var c = 0; c < this.h1.length; c++) {
if (this.h1[c]) {
if ((this.CLASS1).test(this.h1[c].className)) {
this.z1.push(this.h1[c]);
};
};
};
};
// Selezione dei nodi del DOM da escludere eventualmente
if (this.f[1]) {
this.ID2 = (((this.f[0]).match(/#\S*(?=\.)/) || (this.f[1]).match(/#\S*/) || '*').toString()).replace('#', '');
if (this.f[1].indexOf('#') != -1) {
this.TAG2 = (((this.f[1]).match(/ \S*(?=\.)/) || (this.f[1]).match(/ \S*/) || '*').toString()).replace(' ', '');
} else {
this.TAG2 = (((this.f[1]).match(/\S*(?=\.)/) || (this.f[1]).match(/\S*/) || '*').toString()).replace(' ', '');
if (this.TAG2 == '') this.TAG2 = '*';
};
this.CLASS2 = ((this.f[1]).match(/\.\S*/)) ? new RegExp("(^| )" + (((this.f[1]).match(/\.\S*/)).toString()).replace('.', '') + "( |$)") : new RegExp(/(^| )\S*( |$)/);
if ((this.TAG2 == '*') && (this.CLASS2.toString() == '/(^| )\\S*( |$)/')) {
this.z2.push($$(this.ID2));
} else {
if (this.ID2 != '*') {
for (var i = 0; i < $$(this.ID2).getElementsByTagName(this.TAG2).length; i++) {
this.h2.push($$(this.ID2).getElementsByTagName(this.TAG2)[i]);
};
} else {
for (var i = 0; i < document.getElementsByTagName(this.TAG2).length; i++) {
this.h2.push(document.getElementsByTagName(this.TAG2)[i]);
};
};
for (var c = 0; c < this.h2.length; c++) {
if (this.h2[c]) {
if ((this.CLASS2).test(this.h2[c].className)) {
this.z2.push(this.h2[c]);
};
};
};
};
this.is = [];
for (var c = 0; c < this.z1.length; c++) {
for (var e = 0; e < this.z2.length; e++) {
if (this.z1[c] == this.z2[e]) this.is[c] = true;
};
if (this.is[c] != true) this.z.push(this.z1[c]);
};
} else {
this.z = this.z1;
};
return this.z;
},
// API jool.flow
flow: function(obj) {
return new j.$flow(obj);
},
$flow: function(p) {
this.code = p.code;
this.successfully = this.$ = p.successfully;
this.action = 'flow';
this.wait = p.wait;
this.play = j.play;
this.stop = j.stop;
},
flowGo: function() {
(typeof this.code == 'string') ? eval(this.code) : this.code();
if (this.$) { (typeof this.$ == 'string') ? eval(this.$) : ((this.$.action) ? this.$.play() : this.$());
};
},
// API jool.set
set: function(obj) {
return new j.$set(obj);
},
$set: function(p) {
this.object = p.object;
this.dom = p.dom;
this.except = p.except || '';
this.text = p.text;
this.html = p.html;
this.cssClass = p.cssClass;
this.style = p.style;
this.successfully = this.$ = p.successfully;
this.wait = p.wait;
this.action = 'set';
this.play = j.play;
this.stop = j.stop;
},
setGo: function() {
if (this.object) {
for (var o in this.object) {
this.obj = (typeof this.object[o] == 'string') ? $$(this.object[o].replace('#', '')) : this.object[o];
if (this.except != '') {
this.exc = (typeof this.except == 'string') ? $$(this.except.replace('#', '')) : this.except;
} else {
this.exc = null;
};
if (this.obj != this.exc || this.exc == null) {
if (this.text) {
(j.sniff('IE')) ? this.obj.innerText = this.text: this.obj.textContent = this.text;
};
if (this.html) this.obj.innerHTML = this.html;
if (this.cssClass) this.obj.className = this.cssClass;
if (this.style) this.styles = (this.style).split(';');
for (var x in this.styles) {
if (this.styles[x] != '') var arg = this.styles[x].split(':');
eval('this.obj.style.' + j.tcc(arg[0]) + ' = \'' + arg[1] + '\'');
};
};
};
};
if (this.dom) {
this.doms = j.dom(this.dom);
for (var i in this.doms) {
this.obj = this.doms[i];
if (this.except != '') {
this.exc = (typeof this.except == 'string') ? $$(this.except.replace('#', '')) : this.except;
} else {
this.exc = null;
};
if (this.obj != this.exc || this.exc == null) {
if (this.text) {
(j.sniff('IE')) ? this.doms[i].innerText = this.text: this.doms[i].textContent = this.text;
};
if (this.html) this.doms[i].innerHTML = this.html;
if (this.cssClass) this.doms[i].className = this.cssClass;
if (this.style) this.styles = (this.style).split(';');
for (var x in this.styles) {
if (this.styles[x] != '') var arg = this.styles[x].split(':');
eval('this.doms[i].style.' + j.tcc(arg[0]) + ' = \'' + arg[1] + '\'');
};
};
};
};
if (this.$) { (typeof this.$ == 'string') ? eval(this.$) : ((this.$.action) ? this.$.play() : this.$());
};
},
// API jool.load
load: function(obj) {
return new j.$load(obj);
},
$load: function(p) {
this.object = p.object;
this.store = p.store;
this.uri = p.uri;
this.variables = p.variables;
this.method = p.method || 'GET';
//puo essere 'GET' o 'POST'
this.fill = p.fill || 'replace';
//puo essere 'replace', 'before' o 'after'
this.render = p.render || 'html';
//puo essere 'html' o 'text'
this.requestHeader = p.requestHeader;
//esempio ['Content-Type', 'application/x-www-form-urlencoded']
this.successfully = this.$ = p.successfully;
this.unsuccessfully = this.n$ = p.unsuccessfully;
this.wait = p.wait;
this.action = 'load';
this.play = j.play;
this.stop = j.stop;
},
loadGo: function() {
if (this.method == 'GET') var uri = this.uri + ((this.variables) ? '?' + this.variables + '&': '?') + 'j.cache=' + new Date().getTime();
var that = this;
var http = (j.sniff('IE') && !j.sniff('IE7+')) ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest();
http.open(this.method, uri);
http.onreadystatechange = function() {
if (http.readyState == 4) {
if (http.status >= 200 && http.status < 300) {
if (that.object) {
that.object = (typeof that.object == 'string') ? $$(that.object.replace('#', '')) : that.object;
switch (that.render) {
case 'html':
that.object.innerHTML = (that.fill == 'replace') ? http.responseText: ((that.fill == 'before') ? http.responseText + $$(that.object).innerHTML: that.object.innerHTML + http.responseText);
break;
case 'text':
if (j.sniff('IE')) {
that.object.innerText = (that.fill == 'replace') ? http.responseText: ((that.fill == 'before') ? http.responseText + that.object.innerText: that.object.innerText + http.responseText);
} else {
that.object.textContent = (that.fill == 'replace') ? http.responseText: ((that.fill == 'before') ? http.responseText + that.object.textContent: $$(that.object).textContent + http.responseText);
};
break;
};
} else {
return http.responseText;
};
if (that.store) eval(that.store + ' = http.responseText');
if (that.$) { (typeof that.$ == 'string') ? eval(that.$) : ((that.$.action) ? that.$.play() : that.$());
};
} else {
var httpError = 'error ' + http.status + ' | for http status codes see w3.org';
if (that.object) {
that.object = (typeof that.object == 'string') ? $$(that.object.replace('#', '')) : that.object;
that.object.innerHTML = httpError;
} else {
return http.status;
};
if (that.store) eval(that.store + ' = httpError');
if (that.n$) { (typeof that.n$ == 'string') ? eval(that.n$) : ((that.n$.action) ? that.n$.play() : that.n$());
};
};
};
};
if (this.requestHeader) http.setRequestHeader(this.requestHeader[0], this.requestHeader[1]);
(this.method == 'post') ? http.send(eval(this.variables)) : http.send(null);
},
// API jool.fx
fx: function(obj) {
return new j.$fx(obj);
},
$fx: function(p) {
this.p = p;
this.newClass = p.newClass || [];
this.object = p.object || [];
this.except = p.except || '';
this.dom = p.dom;
this.classname = p.classname;
this.opacity = p.opacity || [];
this.width = p.width || [];
this.walign = p.walign || 'left';
this.height = p.height || [];
this.halign = p.halign || 'top';
this.left = p.left || [];
this.top = p.top || [];
this.bottom = p.bottom || [];
this.backgroundColor = p.backgroundColor || [];
this.border = p.border || [];
this.borderColor = p.borderColor || [];
this.borderTop = p.borderTop || (p.border || []);
this.borderTopColor = p.borderTopColor || (p.borderColor || []);
this.borderRight = p.borderRight || (p.border || []);
this.borderRightColor = p.borderRightColor || (p.borderColor || []);
this.borderBottom = p.borderBottom || (p.border || []);
this.borderBottomColor = p.borderBottomColor || (p.borderColor || []);
this.borderLeft = p.borderLeft || (p.border || []);
this.borderLeftColor = p.borderLeftColor || (p.borderColor || []);
this.padding = p.padding || [];
this.paddingTop = p.paddingTop || (p.padding || []);
this.paddingRight = p.paddingRight || (p.padding || []);
this.paddingBottom = p.paddingBottom || (p.padding || []);
this.paddingLeft = p.paddingLeft || (p.padding || []);
this.margin = p.margin || [];
this.marginTop = p.marginTop || (p.margin || []);
this.marginRight = p.marginRight || (p.margin || []);
this.marginBottom = p.marginBottom || (p.margin || []);
this.marginLeft = p.marginLeft || (p.margin || []);
this.fontSize = p.fontSize || [];
this.color = p.color || [];
this.valueType = p.valueType;
this.unit = p.unit;
this.easing = p.easing;
this.duration = p.duration;
this.wait = p.wait;
this.successfully = this.$ = p.successfully;
this.action = 'fx';
this.play = j.play;
this.stop = j.stop;
},
fxGo: function() {
//performanceTime = new Date().getTime();
this.time = 0;
// Trasforma le assegnazioni esterne di border, padding e margin nelle proprietà dei lati
if (this.borderTop.length == 0) this.borderTop = this.border || this.p.border;
if (this.borderTopColor.length == 0) this.borderTopColor = this.borderColor || this.p.borderColor;
if (this.borderRight.length == 0) this.borderRight = this.border || this.p.border;
if (this.borderRightColor.length == 0) this.borderRightColor = this.borderColor || this.p.borderColor;
if (this.borderBottom.length == 0) this.borderBottom = this.border || this.p.border;
if (this.borderBottomColor.length == 0) this.borderBottomColor = this.borderColor || this.p.borderColor;
if (this.borderLeft.length == 0) this.borderLeft = this.border || this.p.border;
if (this.borderLeftColor.length == 0) this.borderLeftColor = this.borderColor || this.p.borderColor;
if (this.paddingTop.length == 0) this.paddingTop = this.padding || this.p.padding;
if (this.paddingRight.length == 0) this.paddingRight = this.padding || this.p.padding;
if (this.paddingBottom.length == 0) this.paddingBottom = this.padding || this.p.padding;
if (this.paddingLeft.length == 0) this.paddingLeft = this.padding || this.p.padding;
if (this.marginTop.length == 0) this.marginTop = this.margin || this.p.margin;
if (this.marginRight.length == 0) this.marginRight = this.margin || this.p.margin;
if (this.marginBottom.length == 0) this.marginBottom = this.margin || this.p.margin;
if (this.marginLeft.length == 0) this.marginLeft = this.margin || this.p.margin;
// Dichiarazione degli array
this.startOpacity = [];
this.changeOpacity = [];
this.startWidth = [];
this.changeWidth = [];
this.startHeight = [];
this.changeHeight = [];
this.startLeft = [];
this.changeLeft = [];
this.startTop = [];
this.changeTop = [];
this.startBottom = [];
this.changeBottom = [];
this.startBorderTop = [];
this.changeBorderTop = [];
this.startBorderRight = [];
this.changeBorderRight = [];
this.startBorderBottom = [];
this.changeBorderBottom = [];
this.startBorderLeft = [];
this.changeBorderLeft = [];
this.startPaddingTop = [];
this.changePaddingTop = [];
this.startPaddingRight = [];
this.changePaddingRight = [];
this.startPaddingBottom = [];
this.changePaddingBottom = [];
this.startPaddingLeft = [];
this.changePaddingLeft = [];
this.startMarginTop = [];
this.changeMarginTop = [];
this.startMarginRight = [];
this.changeMarginRight = [];
this.startMarginBottom = [];
this.changeMarginBottom = [];
this.startMarginLeft = [];
this.changeMarginLeft = [];
this.startFontSize = [];
this.changeFontSize = [];
//this.backgroundColor = this.backgroundColor;
this.startBackgroundRed = [];
this.startBackgroundGreen = [];
this.startBackgroundBlue = [];
this.changeBackgroundRed = [];
this.changeBackgroundGreen = [];
this.changeBackgroundBlue = [];
this.fontColor = this.color;
this.startFontRed = [];
this.startFontGreen = [];
this.startFontBlue = [];
this.changeFontRed = [];
this.changeFontGreen = [];
this.changeFontBlue = [];
//this.borderTopColor = this.borderTopColor;
this.startBorderTopColorRed = [];
this.changeBorderTopColorRed = [];
this.startBorderTopColorGreen = [];
this.changeBorderTopColorGreen = [];
this.startBorderTopColorBlue = [];
this.changeBorderTopColorBlue = [];
//this.borderRightColor = this.borderRightColor;
this.startBorderRightColorRed = [];
this.changeBorderRightColorRed = [];
this.startBorderRightColorGreen = [];
this.changeBorderRightColorGreen = [];
this.startBorderRightColorBlue = [];
this.changeBorderRightColorBlue = [];
//this.borderBottomColor = this.borderBottomColor;
this.startBorderBottomColorRed = [];
this.changeBorderBottomColorRed = [];
this.startBorderBottomColorGreen = [];
this.changeBorderBottomColorGreen = [];
this.startBorderBottomColorBlue = [];
this.changeBorderBottomColorBlue = [];
//this.borderLeftColor = this.borderLeftColor;
this.startBorderLeftColorRed = [];
this.changeBorderLeftColorRed = [];
this.startBorderLeftColorGreen = [];
this.changeBorderLeftColorGreen = [];
this.startBorderLeftColorBlue = [];
this.changeBorderLeftColorBlue = [];
this.fxGoCheck = j.fxGoCheck;
//al(this.backgroundColor);
if (this.object.length > 0) {
for (var i in this.object) {
this.obj = (typeof this.object[i] == 'string') ? $$(this.object[i].replace('#', '')) : this.object[i];
this.fxGoCheck(i, i);
};
} else if (this.dom) {
this.doms = j.dom(this.dom);
for (var i in this.doms) {
this.obj = this.doms[i];
if (this.except != '') {
this.exc = (typeof this.except == 'string') ? $$(this.except.replace('#', '')) : this.except;
} else {
this.exc = null;
};
if (this.obj != this.exc || this.exc == null) {
this.fxGoCheck(i, 0);
} else {
this.fxGoCheck(i, 1);
};
};
};
this.fxLoop = j.fxLoop;
this.fxLoop();
},
fxGoCheck: function(i, f) {
// Analizza la newClass
if (this.newClass[f] && this.newClass[f] != 'null') {
this.newClass[f] = (this.newClass[f]).replace('.', '');
if ((!this.opacity[f] || this.opacity[f] == 'null') && j.pc(this.newClass[f], 'opacity')) this.opacity[f] = parseInt(j.pc(this.newClass[f], 'opacity'), 10);
if ((!this.width[f] || this.width[f] == 'null') && j.pc(this.newClass[f], 'width')) this.width[f] = parseInt(j.pc(this.newClass[f], 'width'), 10);
if ((!this.height[f] || this.height[f] == 'null') && j.pc(this.newClass[f], 'height')) this.height[f] = parseInt(j.pc(this.newClass[f], 'height'), 10);
if ((!this.left[f] || this.left[f] == 'null') && j.pc(this.newClass[f], 'left')) this.left[f] = parseInt(j.pc(this.newClass[f], 'left'), 10);
if ((!this.top[f] || this.top[f] == 'null') && j.pc(this.newClass[f], 'top')) this.top[f] = parseInt(j.pc(this.newClass[f], 'top'), 10);
if ((!this.bottom[f] || this.bottom[f] == 'null') && j.pc(this.newClass[f], 'bottom')) this.bottom[f] = parseInt(j.pc(this.newClass[f], 'bottom'), 10);
if ((!this.backgroundColor[f] || this.backgroundColor[f] == 'null') && j.pc(this.newClass[f], 'backgroundColor')) this.backgroundColor[f] = j.pc(this.newClass[f], 'backgroundColor');
if ((!this.borderTop[f] || this.borderTop[f] == 'null') && j.pc(this.newClass[f], 'borderTopWidth')) this.borderTop[f] = parseInt(j.pc(this.newClass[f], 'borderTopWidth'), 10);
if ((!this.borderTopColor[f] || this.borderTopColor[f] == 'null') && j.pc(this.newClass[f], 'borderTopColor')) this.borderTopColor[f] = j.pc(this.newClass[f], 'borderTopColor');
if ((!this.borderRight[f] || this.borderRight[f] == 'null') && j.pc(this.newClass[f], 'borderRightWidth')) this.borderRight[f] = parseInt(j.pc(this.newClass[f], 'borderRightWidth'), 10);
if ((!this.borderRightColor[f] || this.borderRightColor[f] == 'null') && j.pc(this.newClass[f], 'borderRightColor')) this.borderRightColor[f] = j.pc(this.newClass[f], 'borderRightColor');
if ((!this.borderBottom[f] || this.borderBottom[f] == 'null') && j.pc(this.newClass[f], 'borderBottomWidth')) this.borderBottom[f] = parseInt(j.pc(this.newClass[f], 'borderBottomWidth'), 10);
if ((!this.borderBottomColor[f] || this.borderBottomColor[f] == 'null') && j.pc(this.newClass[f], 'borderBottomColor')) this.borderBottomColor[f] = j.pc(this.newClass[f], 'borderBottomColor');
if ((!this.borderLeft[f] || this.borderLeft[f] == 'null') && j.pc(this.newClass[f], 'borderLeftWidth')) this.borderLeft[f] = parseInt(j.pc(this.newClass[f], 'borderLeftWidth'), 10);
if ((!this.borderLeftColor[f] || this.borderLeftColor[f] == 'null') && j.pc(this.newClass[f], 'borderLeftColor')) this.borderLeftColor[f] = j.pc(this.newClass[f], 'borderLeftColor');
if ((!this.paddingTop[f] || this.paddingTop[f] == 'null') && j.pc(this.newClass[f], 'paddingTop')) this.paddingTop[f] = parseInt(j.pc(this.newClass[f], 'paddingTop'), 10);
if ((!this.paddingRight[f] || this.paddingRight[f] == 'null') && j.pc(this.newClass[f], 'paddingRight')) this.paddingRight[f] = parseInt(j.pc(this.newClass[f], 'paddingRight'), 10);
if ((!this.paddingBottom[f] || this.paddingBottom[f] == 'null') && j.pc(this.newClass[f], 'paddingBottom')) this.paddingBottom[f] = parseInt(j.pc(this.newClass[f], 'paddingBottom'), 10);
if ((!this.paddingLeft[f] || this.paddingLeft[f] == 'null') && j.pc(this.newClass[f], 'paddingLeft')) this.paddingLeft[f] = parseInt(j.pc(this.newClass[f], 'paddingLeft'), 10);
if ((!this.marginTop[f] || this.marginTop[f] == 'null') && j.pc(this.newClass[f], 'marginTop')) this.marginTop[f] = parseInt(j.pc(this.newClass[f], 'marginTop'), 10);
if ((!this.marginRight[f] || this.marginRight[f] == 'null') && j.pc(this.newClass[f], 'marginRight')) this.marginRight[f] = parseInt(j.pc(this.newClass[f], 'marginRight'), 10);
if ((!this.marginBottom[f] || this.marginBottom[f] == 'null') && j.pc(this.newClass[f], 'marginBottom')) this.marginBottom[f] = parseInt(j.pc(this.newClass[f], 'marginBottom'), 10);
if ((!this.marginLeft[f] || this.marginLeft[f] == 'null') && j.pc(this.newClass[f], 'marginLeft')) this.marginLeft[f] = parseInt(j.pc(this.newClass[f], 'marginLeft'), 10);
if ((!this.fontSize[f] || this.fontSize[f] == 'null') && j.pc(this.newClass[f], 'fontSize')) this.fontSize[f] = parseInt(j.pc(this.newClass[f], 'fontSize'), 10);
if ((!this.color[f] || this.color[f] == 'null') && j.pc(this.newClass[f], 'color')) this.color[f] = j.pc(this.newClass[f], 'color');
};
// Check dell'opacità attuale, 'isNaN' è usato per il supporto a MSIE
if (this.opacity[f] != null) {
if (j.css(this.obj, 'display') == 'none') {
this.startOpacity[i] = 0;
this.obj.style.display = 'inline';
} else {
if ((j.css(this.obj, 'opacity') * 100) <= 0) {
this.startOpacity[i] = 0;
} else if (isNaN((j.css(this.obj, 'opacity') * 100)) || j.css(this.obj, 'opacity') * 100 == 100) {
this.startOpacity[i] = 100;
} else {
this.startOpacity[i] = (this.obj.style.opacity * 100);
};
};
this.changeOpacity[i] = (this.valueType == 'abs') ? this.opacity[f] - this.startOpacity[i] : this.opacity[f];
};
// Check della larghezza attuale
if (this.width[f] != null) {
this.verticalExtra = parseInt(j.css(this.obj, 'border-left-width'), 10) || 0;
this.verticalExtra += parseInt(j.css(this.obj, 'border-right-width'), 10) || 0;
this.verticalExtra += parseInt(j.css(this.obj, 'padding-left'), 10) || 0;
this.verticalExtra += parseInt(j.css(this.obj, 'padding-right'), 10) || 0;
this.startWidth[i] = (!isNaN(this.verticalExtra)) ? this.obj.offsetWidth - this.verticalExtra: this.obj.offsetWidth;
this.changeWidth[i] = (this.width[f] == 'auto') ? ((this.valueType == 'abs') ? this.obj.scrollWidth - this.startWidth[i] : this.obj.scrollWidth) : ((this.valueType == 'abs') ? this.width[f] - this.startWidth[i] : this.width[f]);
};
// Check dell'altezza attuale
if (this.height[f] != null) {
this.horizontalExtra = parseInt(j.css(this.obj, 'border-top-width'), 10) || 0;
this.horizontalExtra += parseInt(j.css(this.obj, 'border-bottom-width'), 10) || 0;
this.horizontalExtra += parseInt(j.css(this.obj, 'padding-top'), 10) || 0;
this.horizontalExtra += parseInt(j.css(this.obj, 'padding-bottom'), 10) || 0;
this.startHeight[i] = (!isNaN(this.horizontalExtra)) ? this.obj.offsetHeight - this.horizontalExtra: this.obj.offsetHeight;
this.changeHeight[i] = (this.height[f] == 'auto') ? ((this.valueType == 'abs') ? this.obj.scrollHeight - this.startHeight[i] : this.obj.scrollHeight) : ((this.valueType == 'abs') ? this.height[f] - this.startHeight[i] : this.height[f]);
//$$('debug1').innerHTML += this.startHeight[i]+'
';
};
// Check di left e top
if (this.left[f] != null) {
this.startLeft[i] = parseInt(j.css(this.obj, 'left'), 10);
this.changeLeft[i] = (this.valueType == 'abs') ? this.left[f] - this.startLeft[i] : this.left[f];
};
if (this.top[f] != null) {
this.startTop[i] = parseInt(j.css(this.obj, 'top'), 10);
this.changeTop[i] = (this.valueType == 'abs') ? this.top[f] - this.startTop[i] : this.top[f];
};
if (this.bottom[f] != null) {
this.startBottom[i] = parseInt(j.css(this.obj, 'bottom'), 10);
this.changeBottom[i] = (this.valueType == 'abs') ? this.bottom[f] - this.startBottom[i] : this.bottom[f];
};
// Check del colore di background
if (this.backgroundColor[f]) {
this.startBackgroundRed[i] = j.htr(j.css(this.obj, 'background-color'))[0];
this.startBackgroundGreen[i] = j.htr(j.css(this.obj, 'background-color'))[1];
this.startBackgroundBlue[i] = j.htr(j.css(this.obj, 'background-color'))[2];
this.changeBackgroundRed[i] = (j.htr(this.backgroundColor[f])[0] != this.startBackgroundRed[i]) ? j.htr(this.backgroundColor[f])[0] - this.startBackgroundRed[i] : 0;
this.changeBackgroundGreen[i] = (j.htr(this.backgroundColor[f])[1] != this.startBackgroundGreen[i]) ? j.htr(this.backgroundColor[f])[1] - this.startBackgroundGreen[i] : 0;
this.changeBackgroundBlue[i] = (j.htr(this.backgroundColor[f])[2] != this.startBackgroundBlue[i]) ? j.htr(this.backgroundColor[f])[2] - this.startBackgroundBlue[i] : 0;
};
// Check del colore del font
if (this.fontColor[f]) {
this.startFontRed[i] = j.htr(j.css(this.obj, 'color'))[0];
this.startFontGreen[i] = j.htr(j.css(this.obj, 'color'))[1];
this.startFontBlue[i] = j.htr(j.css(this.obj, 'color'))[2];
this.changeFontRed[i] = (j.htr(this.fontColor[f])[0] != this.startFontRed[i]) ? j.htr(this.fontColor[f])[0] - this.startFontRed[i] : 0;
this.changeFontGreen[i] = (j.htr(this.fontColor[f])[1] != this.startFontGreen[i]) ? j.htr(this.fontColor[f])[1] - this.startFontGreen[i] : 0;
this.changeFontBlue[i] = (j.htr(this.fontColor[f])[2] != this.startFontBlue[i]) ? j.htr(this.fontColor[f])[2] - this.startFontBlue[i] : 0;
};
// Check del colore del bordo top
if (this.borderTopColor[f]) {
this.startBorderTopColorRed[i] = j.htr(j.css(this.obj, 'border-top-color'))[0];
this.startBorderTopColorGreen[i] = j.htr(j.css(this.obj, 'border-top-color'))[1];
this.startBorderTopColorBlue[i] = j.htr(j.css(this.obj, 'border-top-color'))[2];
this.changeBorderTopColorRed[i] = (j.htr(this.borderTopColor[f])[0] != this.startBorderTopColorRed[i]) ? j.htr(this.borderTopColor[f])[0] - this.startBorderTopColorRed[i] : 0;
this.changeBorderTopColorGreen[i] = (j.htr(this.borderTopColor[f])[1] != this.startBorderTopColorGreen[i]) ? j.htr(this.borderTopColor[f])[1] - this.startBorderTopColorGreen[i] : 0;
this.changeBorderTopColorBlue[i] = (j.htr(this.borderTopColor[f])[2] != this.startBorderTopColorBlue[i]) ? j.htr(this.borderTopColor[f])[2] - this.startBorderTopColorBlue[i] : 0;
};
// Check del colore del bordo right
if (this.borderRightColor[f]) {
this.startBorderRightColorRed[i] = j.htr(j.css(this.obj, 'border-right-color'))[0];
this.startBorderRightColorGreen[i] = j.htr(j.css(this.obj, 'border-right-color'))[1];
this.startBorderRightColorBlue[i] = j.htr(j.css(this.obj, 'border-right-color'))[2];
this.changeBorderRightColorRed[i] = (j.htr(this.borderRightColor[f])[0] != this.startBorderRightColorRed[i]) ? j.htr(this.borderRightColor[f])[0] - this.startBorderRightColorRed[i] : 0;
this.changeBorderRightColorGreen[i] = (j.htr(this.borderRightColor[f])[1] != this.startBorderRightColorGreen[i]) ? j.htr(this.borderRightColor[f])[1] - this.startBorderRightColorGreen[i] : 0;
this.changeBorderRightColorBlue[i] = (j.htr(this.borderRightColor[f])[2] != this.startBorderRightColorBlue[i]) ? j.htr(this.borderRightColor[f])[2] - this.startBorderRightColorBlue[i] : 0;
};
// Check del colore del bordo bottom
if (this.borderBottomColor[f]) {
this.startBorderBottomColorRed[i] = j.htr(j.css(this.obj, 'border-bottom-color'))[0];
this.startBorderBottomColorGreen[i] = j.htr(j.css(this.obj, 'border-bottom-color'))[1];
this.startBorderBottomColorBlue[i] = j.htr(j.css(this.obj, 'border-bottom-color'))[2];
this.changeBorderBottomColorRed[i] = (j.htr(this.borderBottomColor[f])[0] != this.startBorderBottomColorRed[i]) ? j.htr(this.borderBottomColor[f])[0] - this.startBorderBottomColorRed[i] : 0;
this.changeBorderBottomColorGreen[i] = (j.htr(this.borderBottomColor[f])[1] != this.startBorderBottomColorGreen[i]) ? j.htr(this.borderBottomColor[f])[1] - this.startBorderBottomColorGreen[i] : 0;
this.changeBorderBottomColorBlue[i] = (j.htr(this.borderBottomColor[f])[2] != this.startBorderBottomColorBlue[i]) ? j.htr(this.borderBottomColor[f])[2] - this.startBorderBottomColorBlue[i] : 0;
};
// Check del colore del bordo left
if (this.borderLeftColor[f]) {
this.startBorderLeftColorRed[i] = j.htr(j.css(this.obj, 'border-left-color'))[0];
this.startBorderLeftColorGreen[i] = j.htr(j.css(this.obj, 'border-left-color'))[1];
this.startBorderLeftColorBlue[i] = j.htr(j.css(this.obj, 'border-left-color'))[2];
this.changeBorderLeftColorRed[i] = (j.htr(this.borderLeftColor[f])[0] != this.startBorderLeftColorRed[i]) ? j.htr(this.borderLeftColor[f])[0] - this.startBorderLeftColorRed[i] : 0;
this.changeBorderLeftColorGreen[i] = (j.htr(this.borderLeftColor[f])[1] != this.startBorderLeftColorGreen[i]) ? j.htr(this.borderLeftColor[f])[1] - this.startBorderLeftColorGreen[i] : 0;
this.changeBorderLeftColorBlue[i] = (j.htr(this.borderLeftColor[f])[2] != this.startBorderLeftColorBlue[i]) ? j.htr(this.borderLeftColor[f])[2] - this.startBorderLeftColorBlue[i] : 0;
};
// Check del bordo attuale
if (this.borderTop[f] != null) {
this.startBorderTop[i] = parseInt(j.css(this.obj, 'border-top-width'), 10);
this.changeBorderTop[i] = (this.valueType == 'abs') ? this.borderTop[f] - this.startBorderTop[i] : this.borderTop[f];
};
if (this.borderRight[f] != null) {
this.startBorderRight[i] = parseInt(j.css(this.obj, 'border-right-width'), 10);
this.changeBorderRight[i] = (this.valueType == 'abs') ? this.borderRight[f] - this.startBorderRight[i] : this.borderRight[f];
};
if (this.borderBottom[f] != null) {
this.startBorderBottom[i] = parseInt(j.css(this.obj, 'border-bottom-width'), 10);
this.changeBorderBottom[i] = (this.valueType == 'abs') ? this.borderBottom[f] - this.startBorderBottom[i] : this.borderBottom[f];
};
if (this.borderLeft[f] != null) {
this.startBorderLeft[i] = parseInt(j.css(this.obj, 'border-left-width'), 10);
this.changeBorderLeft[i] = (this.valueType == 'abs') ? this.borderLeft[f] - this.startBorderLeft[i] : this.borderLeft[f];
};
// Check del padding
if (this.paddingTop[f] != null) {
this.startPaddingTop[i] = parseInt(j.css(this.obj, 'padding-top'), 10);
this.changePaddingTop[i] = (this.valueType == 'abs') ? this.paddingTop[f] - this.startPaddingTop[i] : this.paddingTop[f];
};
if (this.paddingRight[f] != null) {
this.startPaddingRight[i] = parseInt(j.css(this.obj, 'padding-right'), 10);
this.changePaddingRight[i] = (this.valueType == 'abs') ? this.paddingRight[f] - this.startPaddingRight[i] : this.paddingRight[f];
};
if (this.paddingBottom[f] != null) {
this.startPaddingBottom[i] = parseInt(j.css(this.obj, 'padding-bottom'), 10);
this.changePaddingBottom[i] = (this.valueType == 'abs') ? this.paddingBottom[f] - this.startPaddingBottom[i] : this.paddingBottom[f];
};
if (this.paddingLeft[f] != null) {
this.startPaddingLeft[i] = parseInt(j.css(this.obj, 'padding-left'), 10);
this.changePaddingLeft[i] = (this.valueType == 'abs') ? this.paddingLeft[f] - this.startPaddingLeft[i] : this.paddingLeft[f];
};
// Check del margin
if (this.marginTop[f] != null || this.halign != 'top') {
this.startMarginTop[i] = parseInt(j.css(this.obj, 'margin-top'), 10);
if (this.halign == 'bottom') {
this.changeMarginTop[i] = ( - (this.height[f] - this.startHeight[i]));
} else if (this.halign == 'center') {
this.changeMarginTop[i] = ( - ((this.width[f] / 2) - (this.startWidth[i] / 2)));
} else {
this.changeMarginTop[i] = (this.valueType == 'abs') ? this.marginTop[f] - this.startMarginTop[i] : this.marginTop[f];
};
};
if (this.marginRight[f] != null) {
this.startMarginRight[i] = parseInt(j.css(this.obj, 'margin-right'), 10);
this.changeMarginRight[i] = (this.valueType == 'abs') ? this.marginRight[f] - this.startMarginRight[i] : this.marginRight[f];
};
if (this.marginBottom[f] != null) {
this.startMarginBottom[i] = parseInt(j.css(this.obj, 'margin-bottom'), 10);
this.changeMarginBottom[i] = (this.valueType == 'abs') ? this.marginBottom[f] - this.startMarginBottom[i] : this.marginBottom[f];
};
if (this.marginLeft[f] != null || this.walign != 'left') {
this.startMarginLeft[i] = parseInt(j.css(this.obj, 'margin-left'), 10);
if (this.walign == 'right') {
this.changeMarginLeft[i] = ( - (this.width[f] - this.startWidth[i]));
} else if (this.walign == 'center') {
this.changeMarginLeft[i] = ( - ((this.width[f] / 2) - (this.startWidth[i] / 2)));
} else {
this.changeMarginLeft[i] = (this.valueType == 'abs') ? this.marginLeft[f] - this.startMarginLeft[i] : this.marginLeft[f];
};
};
// Check del font
if (!this.unit) this.unit = 'px';
if (this.fontSize[f] != null) {
this.startFontSize[i] = parseInt(j.css(this.obj, 'font-size'), 10);
this.changeFontSize[i] = (this.valueType == 'abs') ? this.fontSize[f] - this.startFontSize[i] : this.fontSize[f];
};
},
fxLoop: function() {
this.fxLoopActions = j.fxLoopActions;
if (this.time < this.duration && this.time != -1) {
this.time++;
if (this.object.length > 0) {
for (var i in this.object) {
this.obj = (typeof this.object[i] == 'string') ? $$(this.object[i].replace('#', '')) : this.object[i];
this.fxLoopActions(i, i);
};
} else {
//this.doms = j.dom(this.dom);
for (var i in this.doms) {
this.obj = this.doms[i];
if (this.except != '') {
this.exc = (typeof this.except == 'string') ? $$(this.except.replace('#', '')) : this.except;
} else {
this.exc = null;
};
if (this.obj != this.exc || this.exc == null) {
this.fxLoopActions(i, 0);
} else {
this.fxLoopActions(i, 1);
};
};
};
// Loop
var that = this;
this.fxTM = setTimeout(function() {
that.fxLoop();
},
1);
} else {
//$$('header').innerHTML = (new Date().getTime()) - performanceTime;
// Operazioni di chiusura
window.clearTimeout(this.fxTM);
if (this.$) { (typeof this.$ == 'string') ? eval(this.$) : ((this.$.action) ? this.$.play() : this.$());
};
};
},
fxLoopActions: function(i, f) {
//$$('info').innerHTML += this.obj.className+" ";
// Setta la nuova classe CSS se disponibile
if (this.time == 1 && this.newClass[f] && this.newClass[f] != 'null') this.obj.className = (this.newClass[f]).replace('.', '');
// Set width con fix per numeri negativi
if (!isNaN(this.changeWidth[i])) this.obj.style.width = ((j.fxEasing(this.easing, parseInt(this.startWidth[i], 10), parseInt(this.changeWidth[i], 10), this.duration, this.time) >= 0) ? j.fxEasing(this.easing, parseInt(this.startWidth[i], 10), parseInt(this.changeWidth[i], 10), this.duration, this.time) : 0) + 'px';
// Set height con fix per numeri negativi
if (!isNaN(this.changeHeight[i])) this.obj.style.height = ((j.fxEasing(this.easing, parseInt(this.startHeight[i], 10), parseInt(this.changeHeight[i], 10), this.duration, this.time) >= 0) ? j.fxEasing(this.easing, parseInt(this.startHeight[i], 10), parseInt(this.changeHeight[i], 10), this.duration, this.time) : 0) + 'px';
// Set opacity
if (!isNaN(this.changeOpacity[i])) {
this.obj.style.filter = 'alpha(opacity:' + parseInt(j.fxEasing(this.easing, parseInt(this.startOpacity[i], 10), parseInt(this.changeOpacity[i], 10), this.duration, this.time), 10) + ')';
this.obj.style.KHTMLOpacity = parseInt(j.fxEasing(this.easing, parseInt(this.startOpacity[i], 10), parseInt(this.changeOpacity[i], 10), this.duration, this.time), 10) / 100;
this.obj.style.MozOpacity = parseInt(j.fxEasing(this.easing, parseInt(this.startOpacity[i], 10), parseInt(this.changeOpacity[i], 10), this.duration, this.time), 10) / 100;
this.obj.style.opacity = parseInt(j.fxEasing(this.easing, parseInt(this.startOpacity[i], 10), parseInt(this.changeOpacity[i], 10), this.duration, this.time), 10) / 100;
};
// Set left e top con fix per numeri negativi
if (!isNaN(this.changeLeft[i])) this.obj.style.left = ((j.fxEasing(this.easing, parseInt(this.startLeft[i], 10), parseInt(this.changeLeft[i], 10), this.duration, this.time) >= 0) ? j.fxEasing(this.easing, parseInt(this.startLeft[i], 10), parseInt(this.changeLeft[i], 10), this.duration, this.time) : 0) + 'px';
if (!isNaN(this.changeTop[i])) this.obj.style.top = ((j.fxEasing(this.easing, parseInt(this.startTop[i], 10), parseInt(this.changeTop[i], 10), this.duration, this.time) >= 0) ? j.fxEasing(this.easing, parseInt(this.startTop[i], 10), parseInt(this.changeTop[i], 10), this.duration, this.time) : 0) + 'px';
if (!isNaN(this.changeBottom[i])) this.obj.style.bottom = ((j.fxEasing(this.easing, parseInt(this.startBottom[i], 10), parseInt(this.changeBottom[i], 10), this.duration, this.time) >= 0) ? j.fxEasing(this.easing, parseInt(this.startBottom[i], 10), parseInt(this.changeBottom[i], 10), this.duration, this.time) : 0) + 'px';
// Set backgroundColor con fix per numeri negativi
if (this.backgroundColor[f] && this.backgroundColor[f] != 'null' && this.backgroundColor[f] != 'transparent') {
this.$backgroundRed = (parseInt(j.fxEasing(this.easing, this.startBackgroundRed[i], this.changeBackgroundRed[i], this.duration, this.time), 10) < 0) ? '00': ((parseInt(j.fxEasing(this.easing, this.startBackgroundRed[i], this.changeBackgroundRed[i], this.duration, this.time), 10) > 255) ? 'ff': ((parseInt(j.fxEasing(this.easing, this.startBackgroundRed[i], this.changeBackgroundRed[i], this.duration, this.time), 10).toString(16).length == 1) ? '0' + parseInt(j.fxEasing(this.easing, this.startBackgroundRed[i], this.changeBackgroundRed[i], this.duration, this.time), 10).toString(16) : parseInt(j.fxEasing(this.easing, this.startBackgroundRed[i], this.changeBackgroundRed[i], this.duration, this.time), 10).toString(16)));
this.$backgroundGreen = (parseInt(j.fxEasing(this.easing, this.startBackgroundGreen[i], this.changeBackgroundGreen[i], this.duration, this.time), 10) < 0) ? '00': ((parseInt(j.fxEasing(this.easing, this.startBackgroundGreen[i], this.changeBackgroundGreen[i], this.duration, this.time), 10) > 255) ? 'ff': ((parseInt(j.fxEasing(this.easing, this.startBackgroundGreen[i], this.changeBackgroundGreen[i], this.duration, this.time), 10).toString(16).length == 1) ? '0' + parseInt(j.fxEasing(this.easing, this.startBackgroundGreen[i], this.changeBackgroundGreen[i], this.duration, this.time), 10).toString(16) : parseInt(j.fxEasing(this.easing, this.startBackgroundGreen[i], this.changeBackgroundGreen[i], this.duration, this.time), 10).toString(16)));
this.$backgroundBlue = (parseInt(j.fxEasing(this.easing, this.startBackgroundBlue[i], this.changeBackgroundBlue[i], this.duration, this.time), 10) < 0) ? '00': ((parseInt(j.fxEasing(this.easing, this.startBackgroundBlue[i], this.changeBackgroundBlue[i], this.duration, this.time), 10) > 255) ? 'ff': ((parseInt(j.fxEasing(this.easing, this.startBackgroundBlue[i], this.changeBackgroundBlue[i], this.duration, this.time), 10).toString(16).length == 1) ? '0' + parseInt(j.fxEasing(this.easing, this.startBackgroundBlue[i], this.changeBackgroundBlue[i], this.duration, this.time), 10).toString(16) : parseInt(j.fxEasing(this.easing, this.startBackgroundBlue[i], this.changeBackgroundBlue[i], this.duration, this.time), 10).toString(16)));
this.obj.style.backgroundColor = '#' + this.$backgroundRed + this.$backgroundGreen + this.$backgroundBlue;
};
// Set color con fix per numeri negativi
if (this.fontColor[f] && this.fontColor[f] != 'null') {
this.$colorRed = (parseInt(j.fxEasing(this.easing, this.startFontRed[i], this.changeFontRed[i], this.duration, this.time), 10) < 0) ? '00': ((parseInt(j.fxEasing(this.easing, this.startFontRed[i], this.changeFontRed[i], this.duration, this.time), 10) > 255) ? 'ff': ((parseInt(j.fxEasing(this.easing, this.startFontRed[i], this.changeFontRed[i], this.duration, this.time), 10).toString(16).length == 1) ? '0' + parseInt(j.fxEasing(this.easing, this.startFontRed[i], this.changeFontRed[i], this.duration, this.time), 10).toString(16) : parseInt(j.fxEasing(this.easing, this.startFontRed[i], this.changeFontRed[i], this.duration, this.time), 10).toString(16)));
this.$colorGreen = (parseInt(j.fxEasing(this.easing, this.startFontGreen[i], this.changeFontGreen[i], this.duration, this.time), 10) < 0) ? '00': ((parseInt(j.fxEasing(this.easing, this.startFontGreen[i], this.changeFontGreen[i], this.duration, this.time), 10) > 255) ? 'ff': ((parseInt(j.fxEasing(this.easing, this.startFontGreen[i], this.changeFontGreen[i], this.duration, this.time), 10).toString(16).length == 1) ? '0' + parseInt(j.fxEasing(this.easing, this.startFontGreen[i], this.changeFontGreen[i], this.duration, this.time), 10).toString(16) : parseInt(j.fxEasing(this.easing, this.startFontGreen[i], this.changeFontGreen[i], this.duration, this.time), 10).toString(16)));
this.$colorBlue = (parseInt(j.fxEasing(this.easing, this.startFontBlue[i], this.changeFontBlue[i], this.duration, this.time), 10) < 0) ? '00': ((parseInt(j.fxEasing(this.easing, this.startFontBlue[i], this.changeFontBlue[i], this.duration, this.time), 10) > 255) ? 'ff': ((parseInt(j.fxEasing(this.easing, this.startFontBlue[i], this.changeFontBlue[i], this.duration, this.time), 10).toString(16).length == 1) ? '0' + parseInt(j.fxEasing(this.easing, this.startFontBlue[i], this.changeFontBlue[i], this.duration, this.time), 10).toString(16) : parseInt(j.fxEasing(this.easing, this.startFontBlue[i], this.changeFontBlue[i], this.duration, this.time), 10).toString(16)));
this.obj.style.color = '#' + this.$colorRed + this.$colorGreen + this.$colorBlue;
};
// Set borderTopColor con fix per numeri negativi
if (this.borderTopColor[f] && this.borderTopColor[f] != 'null') {
this.$borderTopRed = (parseInt(j.fxEasing(this.easing, this.startBorderTopColorRed[i], this.changeBorderTopColorRed[i], this.duration, this.time), 10) < 0) ? '00': ((parseInt(j.fxEasing(this.easing, this.startBorderTopColorRed[i], this.changeBorderTopColorRed[i], this.duration, this.time), 10) > 255) ? 'ff': ((parseInt(j.fxEasing(this.easing, this.startBorderTopColorRed[i], this.changeBorderTopColorRed[i], this.duration, this.time), 10).toString(16).length == 1) ? '0' + parseInt(j.fxEasing(this.easing, this.startBorderTopColorRed[i], this.changeBorderTopColorRed[i], this.duration, this.time), 10).toString(16) : parseInt(j.fxEasing(this.easing, this.startBorderTopColorRed[i], this.changeBorderTopColorRed[i], this.duration, this.time), 10).toString(16)));
this.$borderTopGreen = (parseInt(j.fxEasing(this.easing, this.startBorderTopColorGreen[i], this.changeBorderTopColorGreen[i], this.duration, this.time), 10) < 0) ? '00': ((parseInt(j.fxEasing(this.easing, this.startBorderTopColorGreen[i], this.changeBorderTopColorGreen[i], this.duration, this.time), 10) > 255) ? 'ff': ((parseInt(j.fxEasing(this.easing, this.startBorderTopColorGreen[i], this.changeBorderTopColorGreen[i], this.duration, this.time), 10).toString(16).length == 1) ? '0' + parseInt(j.fxEasing(this.easing, this.startBorderTopColorGreen[i], this.changeBorderTopColorGreen[i], this.duration, this.time), 10).toString(16) : parseInt(j.fxEasing(this.easing, this.startBorderTopColorGreen[i], this.changeBorderTopColorGreen[i], this.duration, this.time), 10).toString(16)));
this.$borderTopBlue = (parseInt(j.fxEasing(this.easing, this.startBorderTopColorBlue[i], this.changeBorderTopColorBlue[i], this.duration, this.time), 10) < 0) ? '00': ((parseInt(j.fxEasing(this.easing, this.startBorderTopColorBlue[i], this.changeBorderTopColorBlue[i], this.duration, this.time), 10) > 255) ? 'ff': ((parseInt(j.fxEasing(this.easing, this.startBorderTopColorBlue[i], this.changeBorderTopColorBlue[i], this.duration, this.time), 10).toString(16).length == 1) ? '0' + parseInt(j.fxEasing(this.easing, this.startBorderTopColorBlue[i], this.changeBorderTopColorBlue[i], this.duration, this.time), 10).toString(16) : parseInt(j.fxEasing(this.easing, this.startBorderTopColorBlue[i], this.changeBorderTopColorBlue[i], this.duration, this.time), 10).toString(16)));
this.$borderTopRgb = '#' + this.$borderTopRed + this.$borderTopGreen + this.$borderTopBlue;
};
// Set borderRightColor con fix per numeri negativi
if (this.borderRightColor[f] && this.borderRightColor[f] != 'null') {
this.$borderRightRed = (parseInt(j.fxEasing(this.easing, this.startBorderRightColorRed[i], this.changeBorderRightColorRed[i], this.duration, this.time), 10) < 0) ? '00': ((parseInt(j.fxEasing(this.easing, this.startBorderRightColorRed[i], this.changeBorderRightColorRed[i], this.duration, this.time), 10) > 255) ? 'ff': ((parseInt(j.fxEasing(this.easing, this.startBorderRightColorRed[i], this.changeBorderRightColorRed[i], this.duration, this.time), 10).toString(16).length == 1) ? '0' + parseInt(j.fxEasing(this.easing, this.startBorderRightColorRed[i], this.changeBorderRightColorRed[i], this.duration, this.time), 10).toString(16) : parseInt(j.fxEasing(this.easing, this.startBorderRightColorRed[i], this.changeBorderRightColorRed[i], this.duration, this.time), 10).toString(16)));
this.$borderRightGreen = (parseInt(j.fxEasing(this.easing, this.startBorderRightColorGreen[i], this.changeBorderRightColorGreen[i], this.duration, this.time), 10) < 0) ? '00': ((parseInt(j.fxEasing(this.easing, this.startBorderRightColorGreen[i], this.changeBorderRightColorGreen[i], this.duration, this.time), 10) > 255) ? 'ff': ((parseInt(j.fxEasing(this.easing, this.startBorderRightColorGreen[i], this.changeBorderRightColorGreen[i], this.duration, this.time), 10).toString(16).length == 1) ? '0' + parseInt(j.fxEasing(this.easing, this.startBorderRightColorGreen[i], this.changeBorderRightColorGreen[i], this.duration, this.time), 10).toString(16) : parseInt(j.fxEasing(this.easing, this.startBorderRightColorGreen[i], this.changeBorderRightColorGreen[i], this.duration, this.time), 10).toString(16)));
this.$borderRightBlue = (parseInt(j.fxEasing(this.easing, this.startBorderRightColorBlue[i], this.changeBorderRightColorBlue[i], this.duration, this.time), 10) < 0) ? '00': ((parseInt(j.fxEasing(this.easing, this.startBorderRightColorBlue[i], this.changeBorderRightColorBlue[i], this.duration, this.time), 10) > 255) ? 'ff': ((parseInt(j.fxEasing(this.easing, this.startBorderRightColorBlue[i], this.changeBorderRightColorBlue[i], this.duration, this.time), 10).toString(16).length == 1) ? '0' + parseInt(j.fxEasing(this.easing, this.startBorderRightColorBlue[i], this.changeBorderRightColorBlue[i], this.duration, this.time), 10).toString(16) : parseInt(j.fxEasing(this.easing, this.startBorderRightColorBlue[i], this.changeBorderRightColorBlue[i], this.duration, this.time), 10).toString(16)));
this.$borderRightRgb = '#' + this.$borderRightRed + this.$borderRightGreen + this.$borderRightBlue;
};
// Set borderBottomColor con fix per numeri negativi
if (this.borderBottomColor[f] && this.borderBottomColor[f] != 'null') {
this.$borderBottomRed = (parseInt(j.fxEasing(this.easing, this.startBorderBottomColorRed[i], this.changeBorderBottomColorRed[i], this.duration, this.time), 10) < 0) ? '00': ((parseInt(j.fxEasing(this.easing, this.startBorderBottomColorRed[i], this.changeBorderBottomColorRed[i], this.duration, this.time), 10) > 255) ? 'ff': ((parseInt(j.fxEasing(this.easing, this.startBorderBottomColorRed[i], this.changeBorderBottomColorRed[i], this.duration, this.time), 10).toString(16).length == 1) ? '0' + parseInt(j.fxEasing(this.easing, this.startBorderBottomColorRed[i], this.changeBorderBottomColorRed[i], this.duration, this.time), 10).toString(16) : parseInt(j.fxEasing(this.easing, this.startBorderBottomColorRed[i], this.changeBorderBottomColorRed[i], this.duration, this.time), 10).toString(16)));
this.$borderBottomGreen = (parseInt(j.fxEasing(this.easing, this.startBorderBottomColorGreen[i], this.changeBorderBottomColorGreen[i], this.duration, this.time), 10) < 0) ? '00': ((parseInt(j.fxEasing(this.easing, this.startBorderBottomColorGreen[i], this.changeBorderBottomColorGreen[i], this.duration, this.time), 10) > 255) ? 'ff': ((parseInt(j.fxEasing(this.easing, this.startBorderBottomColorGreen[i], this.changeBorderBottomColorGreen[i], this.duration, this.time), 10).toString(16).length == 1) ? '0' + parseInt(j.fxEasing(this.easing, this.startBorderBottomColorGreen[i], this.changeBorderBottomColorGreen[i], this.duration, this.time), 10).toString(16) : parseInt(j.fxEasing(this.easing, this.startBorderBottomColorGreen[i], this.changeBorderBottomColorGreen[i], this.duration, this.time), 10).toString(16)));
this.$borderBottomBlue = (parseInt(j.fxEasing(this.easing, this.startBorderBottomColorBlue[i], this.changeBorderBottomColorBlue[i], this.duration, this.time), 10) < 0) ? '00': ((parseInt(j.fxEasing(this.easing, this.startBorderBottomColorBlue[i], this.changeBorderBottomColorBlue[i], this.duration, this.time), 10) > 255) ? 'ff': ((parseInt(j.fxEasing(this.easing, this.startBorderBottomColorBlue[i], this.changeBorderBottomColorBlue[i], this.duration, this.time), 10).toString(16).length == 1) ? '0' + parseInt(j.fxEasing(this.easing, this.startBorderBottomColorBlue[i], this.changeBorderBottomColorBlue[i], this.duration, this.time), 10).toString(16) : parseInt(j.fxEasing(this.easing, this.startBorderBottomColorBlue[i], this.changeBorderBottomColorBlue[i], this.duration, this.time), 10).toString(16)));
this.$borderBottomRgb = '#' + this.$borderBottomRed + this.$borderBottomGreen + this.$borderBottomBlue;
};
// Set borderLeftColor con fix per numeri negativi
if (this.borderLeftColor[f] && this.borderLeftColor[f] != 'null') {
this.$borderLeftRed = (parseInt(j.fxEasing(this.easing, this.startBorderLeftColorRed[i], this.changeBorderLeftColorRed[i], this.duration, this.time), 10) < 0) ? '00': ((parseInt(j.fxEasing(this.easing, this.startBorderLeftColorRed[i], this.changeBorderLeftColorRed[i], this.duration, this.time), 10) > 255) ? 'ff': ((parseInt(j.fxEasing(this.easing, this.startBorderLeftColorRed[i], this.changeBorderLeftColorRed[i], this.duration, this.time), 10).toString(16).length == 1) ? '0' + parseInt(j.fxEasing(this.easing, this.startBorderLeftColorRed[i], this.changeBorderLeftColorRed[i], this.duration, this.time), 10).toString(16) : parseInt(j.fxEasing(this.easing, this.startBorderLeftColorRed[i], this.changeBorderLeftColorRed[i], this.duration, this.time), 10).toString(16)));
this.$borderLeftGreen = (parseInt(j.fxEasing(this.easing, this.startBorderLeftColorGreen[i], this.changeBorderLeftColorGreen[i], this.duration, this.time), 10) < 0) ? '00': ((parseInt(j.fxEasing(this.easing, this.startBorderLeftColorGreen[i], this.changeBorderLeftColorGreen[i], this.duration, this.time), 10) > 255) ? 'ff': ((parseInt(j.fxEasing(this.easing, this.startBorderLeftColorGreen[i], this.changeBorderLeftColorGreen[i], this.duration, this.time), 10).toString(16).length == 1) ? '0' + parseInt(j.fxEasing(this.easing, this.startBorderLeftColorGreen[i], this.changeBorderLeftColorGreen[i], this.duration, this.time), 10).toString(16) : parseInt(j.fxEasing(this.easing, this.startBorderLeftColorGreen[i], this.changeBorderLeftColorGreen[i], this.duration, this.time), 10).toString(16)));
this.$borderLeftBlue = (parseInt(j.fxEasing(this.easing, this.startBorderLeftColorBlue[i], this.changeBorderLeftColorBlue[i], this.duration, this.time), 10) < 0) ? '00': ((parseInt(j.fxEasing(this.easing, this.startBorderLeftColorBlue[i], this.changeBorderLeftColorBlue[i], this.duration, this.time), 10) > 255) ? 'ff': ((parseInt(j.fxEasing(this.easing, this.startBorderLeftColorBlue[i], this.changeBorderLeftColorBlue[i], this.duration, this.time), 10).toString(16).length == 1) ? '0' + parseInt(j.fxEasing(this.easing, this.startBorderLeftColorBlue[i], this.changeBorderLeftColorBlue[i], this.duration, this.time), 10).toString(16) : parseInt(j.fxEasing(this.easing, this.startBorderLeftColorBlue[i], this.changeBorderLeftColorBlue[i], this.duration, this.time), 10).toString(16)));
this.$borderLeftRgb = '#' + this.$borderLeftRed + this.$borderLeftGreen + this.$borderLeftBlue;
};
// Set borders con fix per numeri negativi
if (!isNaN(this.changeBorderTop[i])) this.obj.style.borderTopWidth = ((j.fxEasing(this.easing, parseInt(this.startBorderTop[i], 10), parseInt(this.changeBorderTop[i], 10), this.duration, this.time) >= 0) ? j.fxEasing(this.easing, parseInt(this.startBorderTop[i], 10), parseInt(this.changeBorderTop[i], 10), this.duration, this.time) : 0) + 'px';
if (!isNaN(this.changeBorderRight[i])) this.obj.style.borderRightWidth = ((j.fxEasing(this.easing, parseInt(this.startBorderRight[i], 10), parseInt(this.changeBorderRight[i], 10), this.duration, this.time) >= 0) ? j.fxEasing(this.easing, parseInt(this.startBorderRight[i], 10), parseInt(this.changeBorderRight[i], 10), this.duration, this.time) : 0) + 'px';
if (!isNaN(this.changeBorderBottom[i])) this.obj.style.borderBottomWidth = ((j.fxEasing(this.easing, parseInt(this.startBorderBottom[i], 10), parseInt(this.changeBorderBottom[i], 10), this.duration, this.time) >= 0) ? j.fxEasing(this.easing, parseInt(this.startBorderBottom[i], 10), parseInt(this.changeBorderBottom[i], 10), this.duration, this.time) : 0) + 'px';
if (!isNaN(this.changeBorderLeft[i])) this.obj.style.borderLeftWidth = ((j.fxEasing(this.easing, parseInt(this.startBorderLeft[i], 10), parseInt(this.changeBorderLeft[i], 10), this.duration, this.time) >= 0) ? j.fxEasing(this.easing, parseInt(this.startBorderLeft[i], 10), parseInt(this.changeBorderLeft[i], 10), this.duration, this.time) : 0) + 'px';
// Setta i colori dei bordi
if (this.borderTopColor[f]) this.obj.style.borderTopColor = this.$borderTopRgb;
if (this.borderRightColor[f]) this.obj.style.borderRightColor = this.$borderRightRgb;
if (this.borderBottomColor[f]) this.obj.style.borderBottomColor = this.$borderBottomRgb;
if (this.borderLeftColor[f]) this.obj.style.borderLeftColor = this.$borderLeftRgb;
// Set padding con fix per numeri negativi
if (!isNaN(this.changePaddingTop[i])) this.obj.style.paddingTop = ((j.fxEasing(this.easing, parseInt(this.startPaddingTop[i], 10), parseInt(this.changePaddingTop[i], 10), this.duration, this.time) >= 0) ? j.fxEasing(this.easing, parseInt(this.startPaddingTop[i], 10), parseInt(this.changePaddingTop[i], 10), this.duration, this.time) : 0) + 'px';
if (!isNaN(this.changePaddingRight[i])) this.obj.style.paddingRight = ((j.fxEasing(this.easing, parseInt(this.startPaddingRight[i], 10), parseInt(this.changePaddingRight[i], 10), this.duration, this.time) >= 0) ? j.fxEasing(this.easing, parseInt(this.startPaddingRight[i], 10), parseInt(this.changePaddingRight[i], 10), this.duration, this.time) : 0) + 'px';
if (!isNaN(this.changePaddingBottom[i])) this.obj.style.paddingBottom = ((j.fxEasing(this.easing, parseInt(this.startPaddingBottom[i], 10), parseInt(this.changePaddingBottom[i], 10), this.duration, this.time) >= 0) ? j.fxEasing(this.easing, parseInt(this.startPaddingBottom[i], 10), parseInt(this.changePaddingBottom[i], 10), this.duration, this.time) : 0) + 'px';
if (!isNaN(this.changePaddingLeft[i])) this.obj.style.paddingLeft = ((j.fxEasing(this.easing, parseInt(this.startPaddingLeft[i], 10), parseInt(this.changePaddingLeft[i], 10), this.duration, this.time) >= 0) ? j.fxEasing(this.easing, parseInt(this.startPaddingLeft[i], 10), parseInt(this.changePaddingLeft[i], 10), this.duration, this.time) : 0) + 'px ';
// Set margin con fix per numeri negativi
if (!isNaN(this.changeMarginTop[i])) this.obj.style.marginTop = j.fxEasing(this.easing, parseInt(this.startMarginTop[i], 10), parseInt(this.changeMarginTop[i], 10), this.duration, this.time) + 'px';
if (!isNaN(this.changeMarginRight[i])) this.obj.style.marginRight = j.fxEasing(this.easing, parseInt(this.startMarginRight[i], 10), parseInt(this.changeMarginRight[i], 10), this.duration, this.time) + 'px';
if (!isNaN(this.changeMarginBottom[i])) this.obj.style.marginBottom = j.fxEasing(this.easing, parseInt(this.startMarginBottom[i], 10), parseInt(this.changeMarginBottom[i], 10), this.duration, this.time) + 'px';
if (!isNaN(this.changeMarginLeft[i])) this.obj.style.marginLeft = j.fxEasing(this.easing, parseInt(this.startMarginLeft[i], 10), parseInt(this.changeMarginLeft[i], 10), this.duration, this.time) + 'px';
// Set font-size con fix per numeri negativi
if (!isNaN(this.changeFontSize[i])) this.obj.style.fontSize = ((j.fxEasing(this.easing, parseInt(this.startFontSize[i], 10), parseInt(this.changeFontSize[i], 10), this.duration, this.time) >= 0) ? j.fxEasing(this.easing, parseInt(this.startFontSize[i], 10), parseInt(this.changeFontSize[i], 10), this.duration, this.time) : 0) + this.unit;
},
fxEasing: function(e, s, c, d, t) {
var er;
switch (e) {
case 'linear':
er = c * t / d + s;
break;
// al quadrato
case 'quadIn':
er = c * (t /= d) * t + s;
break;
case 'quadOut':
er = -c * (t /= d) * (t - 2) + s;
break;
case 'quadInOut':
if ((t /= d / 2) < 1) er = c / 2 * t * t + s;
er = -c / 2 * ((--t) * (t - 2) - 1) + s;
break;
// al cubo
case 'cubeIn':
er = c * Math.pow(t / d, 3) + s;
break;
case 'cubeOut':
er = c * (Math.pow(t / d - 1, 3) + 1) + s;
break;
case 'cubeInOut':
if ((t /= d / 2) < 1) er = c / 2 * Math.pow(t, 3) + s;
er = c / 2 * (Math.pow(t - 2, 3) + 2) + s;
break;
// alla quarta
case 'fourthIn':
er = c * (t /= d) * Math.pow(t, 3) + s;
break;
case 'fourthOut':
er = -c * ((t = t / d - 1) * Math.pow(t, 3) - 1) + s;
break;
case 'fourthInOut':
if ((t /= d / 2) < 1) er = c / 2 * Math.pow(t, 4) + s;
er = -c / 2 * ((t -= 2) * Math.pow(t, 3) - 2) + s;
break;
// alla quinta
case 'fifthIn':
er = c * (t /= d) * Math.pow(t, 4) + s;
break;
case 'fifthOut':
er = c * ((t = t / d - 1) * Math.pow(t, 4) + 1) + s;
break;
case 'fifthInOut':
if ((t /= d / 2) < 1) er = c / 2 * Math.pow(t, 5) + s;
er = c / 2 * ((t -= 2) * Math.pow(t, 4) + 2) + s;
break;
// al seno
case 'sineIn':
er = c * (1 - Math.cos(t / d * (Math.PI / 2))) + s;
break;
case 'sineOut':
er = c * Math.sin(t / d * (Math.PI / 2)) + s;
break;
case 'sineInOut':
er = -c / 2 * (Math.cos(Math.PI * t / d) - 1) + s;
break;
// esponenziale
case 'expoIn':
er = c * Math.pow(2, 10 * (t / d - 1)) + s;
break;
case 'expoOut':
er = (t == d) ? s + c: c * ( - Math.pow(2, -10 * t / d) + 1) + s;
break;
case 'expoInOut':
if (t == 0) er = s;
if (t == d) er = s + c;
if ((t /= d / 2) < 1) er = c / 2 * Math.pow(2, 10 * (t - 1)) + s;
er = c / 2 * ( - Math.pow(2, -10 * --t) + 2) + s;
break;
// circolare
case 'circularIn':
er = -c * (Math.sqrt(1 - (t /= d) * t) - 1) + s;
break;
case 'circularOut':
er = c * Math.sqrt(1 - (t = t / d - 1) * t) + s;
break;
case 'circularInOut':
if ((t /= d / 2) < 1) er = -c / 2 * (Math.sqrt(1 - Math.pow(t, 2)) - 1) + s;
er = c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + s;
break;
// elastico >> problemi con IE risolti sostituendo '(this.a < Math.abs(c))' con '(this.a <= Math.abs(c))'
case 'elasticIn':
this.s = 1.70158;
this.p = 0;
this.a = c;
if (t == 0) er = s;
if ((t /= d) == 1) er = s + c;
if (!this.p) this.p = d * .3;
if (this.a <= Math.abs(c)) {
this.a = c;
this.s = this.p / 4;
} else this.s = this.p / (2 * Math.PI) * Math.asin(c / this.a);
er = -(this.a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - this.s) * (2 * Math.PI) / this.p)) + s;
break;
case 'elasticOut':
this.s = 1.70158;
this.p = 0;
this.a = c;
if (t == 0) er = s;
if ((t /= d) == 1) er = s + c;
if (!this.p) this.p = d * .3;
if (this.a <= Math.abs(c)) {
this.a = c;
this.s = this.p / 4;
} else this.s = this.p / (2 * Math.PI) * Math.asin(c / this.a);
er = this.a * Math.pow(2, -10 * t) * Math.sin((t * d - this.s) * (2 * Math.PI) / this.p) + c + s;
break;
case 'elasticInOut':
this.s = 1.70158;
this.p = 0;
this.a = c;
if (t == 0) er = s;
if ((t /= d / 2) == 2) er = s + c;
if (!this.p) this.p = d * (.3 * 1.5);
if (this.a <= Math.abs(c)) {
this.a = c;
this.s = this.p / 4;
} else this.s = this.p / (2 * Math.PI) * Math.asin(c / this.a);
if (t < 1) er = -.5 * (this.a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - this.s) * (2 * Math.PI) / this.p)) + s;
er = this.a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - this.s) * (2 * Math.PI) / this.p) * .5 + c + s;
break;
// torna indietro
case 'backIn':
this.s = 1.70158;
er = c * (t /= d) * t * ((this.s + 1) * t - this.s) + s;
break;
case 'backOut':
this.s = 1.70158;
er = c * ((t = t / d - 1) * t * ((this.s + 1) * t + this.s) + 1) + s;
break;
case 'backInOut':
this.s = 1.70158;
if ((t /= d / 2) < 1) er = c / 2 * (Math.pow(t, 2) * (((this.s *= (1.525)) + 1) * t - this.s)) + s;
er = c / 2 * ((t -= 2) * t * (((this.s *= (1.525)) + 1) * t + this.s) + 2) + s;
break;
// rimbalzo
case 'bounceIn':
er = c - j.fxEasing('bounceOut', 0, c, d, d - t) + s;
break;
case 'bounceOut':
if ((t /= d) < (1 / 2.75)) {
er = c * (7.5625 * Math.pow(t, 2)) + s;
} else if (t < (2 / 2.75)) {
er = c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + s;
} else if (t < (2.5 / 2.75)) {
er = c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + s;
} else {
er = c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + s;
};
break;
case 'bounceInOut':
//e, s, c, d, t
if (t < d / 2) er = j.fxEasing('bounceIn', 0, c, d, t * 2) * .5 + s;
er = j.fxEasing('bounceOut', 0, c, d, t * 2 - d) * .5 + c * .5 + s;
break;
};
return parseInt(er, 10);
},
// API jool.drag
drag: function(obj) {
return new j.$drag(obj);
},
$drag: function(p) {
j.gps();
this.object = p.object.replace('#', '');
this.mover = (p.mover || p.object).replace('#', '');
this.startevent = p.startevent || 'mousedown';
this.endevent = p.endevent || 'mouseup';
this.top = (p.cage && p.cage[0] != 'null') ? p.cage[0] : -Infinity;
this.right = (p.cage && p.cage[1] != 'null') ? p.cage[1] : Infinity;
this.bottom = (p.cage && p.cage[2] != 'null') ? p.cage[2] : Infinity;
this.left = (p.cage && p.cage[3] != 'null') ? p.cage[3] : -Infinity;
this.onstart = p.onstart;
this.onmove = p.onmove;
this.onstop = p.onstop;
this.rtop = (p.resize && p.resize[0] != 'null') ? p.resize[0] : 0;
this.rright = (p.resize && p.resize[1] != 'null') ? p.resize[1] : 0;
this.rbottom = (p.resize && p.resize[2] != 'null') ? p.resize[2] : 0;
this.rleft = (p.resize && p.resize[3] != 'null') ? p.resize[3] : 0;
this.target = p.target;
this.successfully = this.$ = p.successfully;
this.unsuccessfully = this.n$ = p.unsuccessfully;
this.stop = j.stop;
this.dragGo = j.dragGo;
this.dragGo();
},
dragGo: function() {
var that = this;
if ($$(this.object)) {
window.clearTimeout(this.drTM);
if (that.top != -Infinity) that.top = parseInt(j.css($$(that.object), 'margin-top'), 10) + that.top;
if (that.right != Infinity) that.right = parseInt(j.css($$(that.object), 'margin-left'), 10) + parseInt(j.css($$(that.object), 'width'), 10) + that.right;
if (that.bottom != Infinity) that.bottom = parseInt(j.css($$(that.object), 'margin-top'), 10) + parseInt(j.css($$(that.object), 'height'), 10) + that.bottom;
if (that.left != -Infinity) that.left = parseInt(j.css($$(that.object), 'margin-left'), 10) + that.left;
this.go = function() {
// all'inizio del drag
// that.newObj = $$(that.object).cloneNode(true);
// document.body.appendChild(that.newObj);
(j.sniff('IE')) ? document.attachEvent('onmousemove', that.move) : document.addEventListener('mousemove', that.move, false);
(j.sniff('IE')) ? document.attachEvent('ondrag',
function() {
return;
}) : document.addEventListener('mousemove', that.move, false);
(j.sniff('IE')) ? document.attachEvent(('on' + that.endevent), that.release) : document.addEventListener(that.endevent, that.release, false);
if (that.onstart) { (typeof that.onstart == 'string') ? eval(that.onstart) : ((that.onstart.action) ? that.onstart.play() : that.onstart());
};
that.drag = 'null';
that.start = false;
};
this.move = function() {
// durante il drag
if (that.onmove) { (typeof that.onmove == 'string') ? eval(that.onmove) : ((that.onmove.action) ? that.onmove.play() : that.onmove());
};
if (that.start == false) {
this.startX = j.gps.x;
this.startY = j.gps.y;
this.startW = parseInt(j.css($$(that.object), 'width'), 10);
this.startH = parseInt(j.css($$(that.object), 'height'), 10);
this.x = j.gps.x - parseInt(j.css($$(that.object), 'margin-left'), 10);
this.y = j.gps.y - parseInt(j.css($$(that.object), 'margin-top'), 10);
that.start = true;
};
var ol = ot = null;
var op = $$(that.object).offsetParent;
while (op) {
ol += op.offsetLeft;
ot += op.offsetTop;
op = op.offsetParent;
};
this.leftPoint = parseInt(j.css($$(that.object), 'margin-left'), 10) + parseInt(j.css($$(that.object), 'left'), 10) + ol;
this.topPoint = parseInt(j.css($$(that.object), 'margin-top'), 10) + parseInt(j.css($$(that.object), 'top'), 10) + ot;
this.rightPoint = this.leftPoint + this.startW;
this.bottomPoint = this.topPoint + this.startH;
// Drag
if ((j.gps.x > (this.leftPoint + that.rleft) && j.gps.x < (this.rightPoint - that.rright) && j.gps.y > (this.topPoint + that.rtop) && j.gps.y < (this.bottomPoint - that.rbottom) && that.drag == 'null') || that.drag == 'drag') {
$$(that.object).style.cursor = 'move';
that.drag = 'drag';
that.vdrag = 'drag';
if ((j.gps.x - this.x) > that.left && ((j.gps.x - this.x) + this.startW) < that.right) $$(that.object).style.marginLeft = (j.gps.x - this.x) + 'px';
if ((j.gps.y - this.y) > that.top && ((j.gps.y - this.y) + parseInt(j.css($$(that.object), 'height'), 10)) < that.bottom) $$(that.object).style.marginTop = (j.gps.y - this.y) + 'px';
};
// Resize Left-Right
if ((j.gps.x > this.leftPoint && j.gps.x < (this.leftPoint + that.rleft) && that.drag == 'null') || that.drag == 'left') {
$$(that.object).style.cursor = 'w-resize';
that.drag = 'left';
$$(that.object).style.width = ((this.startW - (j.gps.x - this.startX)) >= 10) ? (this.startW - (j.gps.x - this.startX)) + 'px': '10px';
if ((j.gps.y > this.topPoint && j.gps.y < (this.topPoint + that.rtop)) || that.vdrag == 'lt') {
$$(that.object).style.cursor = 'nw-resize';
that.vdrag = 'lt';
$$(that.object).style.height = ((this.startH - (j.gps.y - this.startY)) >= 10) ? (this.startH - (j.gps.y - this.startY)) + 'px': '10px';
if ((this.startH - (j.gps.y - this.startY)) >= 10) $$(that.object).style.marginTop = (j.gps.y - this.y) + 'px';
};
if ((j.gps.y < this.bottomPoint && j.gps.y > (this.bottomPoint - that.rbottom)) || that.vdrag == 'lb') {
$$(that.object).style.cursor = 'sw-resize';
that.vdrag = 'lb';
$$(that.object).style.height = ((this.startH + (j.gps.y - this.startY)) > 10) ? (this.startH + (j.gps.y - this.startY)) + 'px': '10px';
};
if ((this.startW - (j.gps.x - this.startX)) >= 10) $$(that.object).style.marginLeft = (j.gps.x - this.x) + 'px';
};
if ((j.gps.x < this.rightPoint && j.gps.x > (this.rightPoint - that.rright) && that.drag == 'null') || that.drag == 'right') {
$$(that.object).style.cursor = 'e-resize';
that.drag = 'right';
$$(that.object).style.width = ((this.startW + (j.gps.x - this.startX)) > 10) ? (this.startW + (j.gps.x - this.startX)) + 'px': '10px';
if ((j.gps.y > this.topPoint && j.gps.y < (this.topPoint + that.rtop)) || that.vdrag == 'rt') {
$$(that.object).style.cursor = 'ne-resize';
that.vdrag = 'rt';
$$(that.object).style.height = ((this.startH - (j.gps.y - this.startY)) >= 10) ? (this.startH - (j.gps.y - this.startY)) + 'px': '10px';
if ((this.startH - (j.gps.y - this.startY)) >= 10) $$(that.object).style.marginTop = (j.gps.y - this.y) + 'px';
};
if ((j.gps.y < this.bottomPoint && j.gps.y > (this.bottomPoint - that.rbottom)) || that.vdrag == 'rb') {
$$(that.object).style.cursor = 'se-resize';
that.vdrag = 'rb';
$$(that.object).style.height = ((this.startH + (j.gps.y - this.startY)) > 10) ? (this.startH + (j.gps.y - this.startY)) + 'px': '10px';
};
};
// Resize Top-Bottom
if ((j.gps.y > this.topPoint && j.gps.y < (this.topPoint + that.rtop) && that.drag == 'null') || that.drag == 'top') {
$$(that.object).style.cursor = 'n-resize';
that.drag = 'top';
$$(that.object).style.height = ((this.startH - (j.gps.y - this.startY)) >= 10) ? (this.startH - (j.gps.y - this.startY)) + 'px': '10px';
if ((this.startH - (j.gps.y - this.startY)) >= 10) $$(that.object).style.marginTop = (j.gps.y - this.y) + 'px';
};
if ((j.gps.y < this.bottomPoint && j.gps.y > (this.bottomPoint - that.rbottom) && that.drag == 'null') || that.drag == 'bottom') {
$$(that.object).style.cursor = 's-resize';
that.drag = 'bottom';
$$(that.object).style.height = ((this.startH + (j.gps.y - this.startY)) > 10) ? (this.startH + (j.gps.y - this.startY)) + 'px': '10px';
};
that.lastX = j.gps.x;
that.lastY = j.gps.y;
if (that.startX != that.lastX) that.moved = true;
};
this.release = function() {
// alla fine del drag
that.start = false;
that.drag = 'null';
that.vdrag = 'null';
$$(that.object).style.cursor = 'move';
if (that.onstop) { (typeof that.onstop == 'string') ? eval(that.onstop) : ((that.onstop.action) ? that.onstop.play() : that.onstop());
};
(j.sniff('IE')) ? (document.detachEvent('onmousemove', that.move)) : document.removeEventListener('mousemove', that.move, false);
(j.sniff('IE')) ? document.detachEvent(('on' + that.endevent), that.release) : document.removeEventListener(that.endevent, that.release, false);
if (that.target && that.moved) {
if (that.lastX < $$(that.target).offsetLeft || that.lastX > ($$(that.target).offsetLeft + $$(that.target).offsetWidth) || that.lastY < $$(that.target).offsetTop || that.lastY > ($$(that.target).offsetTop + $$(that.target).offsetHeight)) {
if (that.unsuccessfully) {
that.$ = that.unsuccessfully;
if (that.n$) { (typeof that.n$ == 'string') ? eval(that.n$) : ((that.n$.action) ? that.n$.play() : that.n$());
};
};
} else {
if (that.successfully) {
that.$ = that.successfully;
if (that.$) { (typeof that.$ == 'string') ? eval(that.$) : ((that.$.action) ? that.$.play() : that.$());
};
};
};
} else if (!that.target && that.successfully) {
that.$ = that.successfully;
if (that.$) { (typeof that.$ == 'string') ? eval(that.$) : ((that.$.action) ? that.$.play() : that.$());
};
};
};
(j.sniff('IE')) ? $$(this.mover).attachEvent(('on' + this.startevent), this.go) : $$(this.mover).addEventListener(this.startevent, this.go, false);
(j.sniff('IE')) ? $$(this.object).attachEvent('onmouseover',
function() {
$$(that.object).style.cursor = 'move';
}) : $$(this.object).addEventListener('mouseover',
function() {
$$(that.object).style.cursor = 'move';
},
false);
} else if (!$$(this.object)) {
this.drTM = setTimeout(function() {
that.dragGo();
},
1);
};
},
// API jool.event
event: function(obj) {
return new j.$event(obj);
},
$event: function(p) {
this.object = p.object;
this.tag = p.tag;
this.dom = p.dom;
this.event = p.event;
this.remove = p.remove || false;
this.action = p.action;
this.capturing = p.capturing || false;
// not for IE
this.eventLoop = j.eventLoop;
this.eventLoop();
},
eventLoop: function() {
if (this.object) {
for (var x = 0; x < this.object.length; x++) {
this.obj = $$(((this.object[x]).toString()).replace('#', ''));
if (this.obj) {
if (this.remove == false) {
(j.sniff('IE')) ? this.obj.attachEvent('on' + this.event, this.action) : this.obj.addEventListener(this.event, this.action, this.capturing);
} else {
(j.sniff('IE')) ? this.obj.attachEvent('on' + this.event,
function(event) {
event.stopPropagation();
}) : this.obj.removeEventListener(this.event,
function(event) {
event.stopPropagation();
},
this.capturing);
}
clearTimeout(this.evTM);
} else if (!this.obj) {
var that = this;
this.evTM = setTimeout(function() {
that.eventLoop();
},
1);
};
};
return;
};
if (this.dom) {
this.doms = j.dom(this.dom);
if (this.doms.length > 0) {
for (var t in this.doms) {
(j.sniff('IE')) ? this.doms[t].attachEvent('on' + this.event, this.action) : this.doms[t].addEventListener(this.event, this.action, this.capturing);
};
clearTimeout(this.evTM);
return;
};
var that = this;
this.evTM = setTimeout(function() {
that.eventLoop();
},
1);
};
}
};
var j = jool;