Liferay.Animate = function(id, fn, data) {
/* id - unique identifier for this process
 * fn - animation function
 * data - object that is passed to the animation function
 * data.delay - assign a number (in milliseconds) to this property
 *				to delay the start of the animation process
 */
var lib = Liferay.Animate;
if (!lib.q[id]) {
lib.q[id] = {"id": id, "fn": fn, "data": data};
}
if (!lib.timer) {
lib.start();
}
};
Liferay.Animate.extendNativeFunctionObject({
q: {},
timer: 0,
process: function() {
var processed = false;
for (var i in this.q) {
var item = this.q[i];
if (item) {
var rt = item.fn(item.data);
if (rt == false) {
this.q[i] = null;
}
processed = true;
}
}
if (!processed) {
this.stop();
}
},
start: function() {
var lib = Liferay.Animate;
if (!lib.timer) {
Liferay.Animate.process();
Liferay.Animate.timer = setInterval("Liferay.Animate.process()", 30);
}
},
stop: function() {
clearInterval(Liferay.Animate.timer);
Liferay.Animate.timer = 0;
}
});