X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plekit%2Flinetabs%2Flinetabs.js;h=f14021de8a9800af63ddc75359bf4459e6e785a1;hb=f49b5e7c315a037d1c3cca249cacb6564f13f57b;hp=5e89f0f631d90881e144863b6a2bc334f312d2c5;hpb=878ce4154f4619a5d07c780bf1f76dfd46771df4;p=plewww.git
diff --git a/plekit/linetabs/linetabs.js b/plekit/linetabs/linetabs.js
index 5e89f0f..f14021d 100644
--- a/plekit/linetabs/linetabs.js
+++ b/plekit/linetabs/linetabs.js
@@ -1,7 +1,7 @@
/*
$Id$
- Animated miniTabs by frequency decoder (http://www.frequency-decoder.com/)
+ Animated linetabs by frequency decoder (http://www.frequency-decoder.com/)
Based on an idea by Rob L Glazebrook (http://www.rootarcana.com/test/smartmini/) itself
derived from the original idea of Stephen Clark (http://www.sgclark.com/sandbox/minislide/)
@@ -14,7 +14,7 @@
*/
/* class */
-function minitabs () {
+function linetabs () {
this.currentTab = 0;
this.activeTab = 0;
this.destX = 0;
@@ -24,16 +24,17 @@ function minitabs () {
this.c = 0;
this.d = 20;
this.animInterval = null;
+ this.elem_div_linetabs = null;
this.slideObj = null;
this.aHeight = 0;
}
-minitabs.prototype.init = function (div) {
+linetabs.prototype.init = function (div) {
this.ul = div.down('ul');
/* the array of
's */
this.li_s = this.ul.select('li');
/* the array of active 's - without any hidden one */
- this.input_s = this.ul.select('input.minitabs-submit');
+ this.input_s = this.ul.select('input.linetabs-submit');
/* attach event handlers */
this.li_s.each ( function (li) {
@@ -47,12 +48,12 @@ minitabs.prototype.init = function (div) {
elem = elem.previousSibling;
if (elem.tagName && elem.tagName == "LI") pos++;
}
- minitabs_namespace.the_minitabs(elem).initSlide(pos,true);
+ linetabs_namespace.the_linetabs(elem).initSlide(pos,true);
} )
} );
this.ul.observe('mouseout', function (event) {
- var mt = minitabs_namespace.the_minitabs(event.element());
+ var mt = linetabs_namespace.the_linetabs(event.element());
mt.initSlide(mt.currentTab,true);
mt.setActive (mt.activeTab,false);
});
@@ -65,7 +66,7 @@ minitabs.prototype.init = function (div) {
/* create slice object */
this.slideObj = this.ul.parentNode.appendChild(document.createElement("div"));
this.slideObj.appendChild(document.createTextNode(String.fromCharCode(160)));
- this.slideObj.id = "minitabs-sliding";
+ this.slideObj.id = "linetabs-sliding";
/* position it */
this.setSlidingTop();
@@ -79,7 +80,7 @@ minitabs.prototype.init = function (div) {
};
-minitabs.prototype.initSlide = function (pos, force) {
+linetabs.prototype.initSlide = function (pos, force) {
if(!force && pos == this.activeTab) return;
this.setActive (this.activeTab,false);
@@ -88,15 +89,15 @@ minitabs.prototype.initSlide = function (pos, force) {
this.initAnim();
};
-minitabs.prototype.setActive = function (pos,active) {
- var input=this.li_s[pos].select('input.minitabs-submit')[0];
+linetabs.prototype.setActive = function (pos,active) {
+ var input=this.li_s[pos].select('input.linetabs-submit')[0];
if (active)
input.addClassName('active');
else
input.removeClassName('active');
};
-minitabs.prototype.setSlidingTop = function () {
+linetabs.prototype.setSlidingTop = function () {
var delta=0;
/* up 5px for firefox */
/*window.console.log('agent=' + navigator.userAgent);*/
@@ -105,9 +106,9 @@ minitabs.prototype.setSlidingTop = function () {
+ this.input_s[this.activeTab].offsetTop + delta ) + "px";
};
-minitabs.prototype.initAnim = function() {
+linetabs.prototype.initAnim = function() {
/* search for the input with type != hidden */
- var input=this.li_s[this.activeTab].select('input.minitabs-submit')[0];
+ var input=this.li_s[this.activeTab].select('input.linetabs-submit')[0];
this.destX = parseInt(this.li_s[this.activeTab].offsetLeft + input.offsetLeft
+ this.ul.offsetLeft);
this.destW = parseInt(input.offsetWidth);
@@ -121,7 +122,7 @@ minitabs.prototype.initAnim = function() {
this.setSlidingTop();
};
-minitabs.prototype.slideIt = function() {
+linetabs.prototype.slideIt = function() {
// Has the browser text size changed?
var active_li = this.li_s[this.activeTab];
@@ -144,12 +145,12 @@ minitabs.prototype.slideIt = function() {
}
};
-minitabs.prototype.animate = function(t,b,c,d) {
+linetabs.prototype.animate = function(t,b,c,d) {
if ((t/=d/2) < 1) return c/2*t*t + b;
return -c/2 * ((--t)*(t-2) - 1) + b;
};
-minitabs.prototype.submit = function (message) {
+linetabs.prototype.submit = function (message) {
/* save activeTab before confirmation; some browsers - firefox - send mouseout during confirm .. */
var submitTab = this.activeTab;
/* ask for confirmation if message is not empty */
@@ -161,48 +162,62 @@ minitabs.prototype.submit = function (message) {
}
// globals
-var minitabs_namespace = {
+var linetabs_namespace = {
init: function () {
- $$('div.minitabs').each (function (div) {
+ // just give it a little time to load everything.
+ setTimeout('linetabs_namespace.lazyInit()', 1000);
+ },
+
+ lazyInit: function() {
+ linetabs_namespace.elem_div_linetabs = $$('div.linetabs');
+
+ Event.observe('linetabs',
+ 'mouseover',
+ function() {
+ linetabs_namespace.elem_div_linetabs = $$('div.linetabs');
+ });
+
+ linetabs_namespace.elem_div_linetabs.each (function (div) {
/* create instance and attach it to the