matthiasm@0
|
1 /**
|
matthiasm@0
|
2 * @version 1.3
|
matthiasm@0
|
3 * @package SimpleTabs
|
matthiasm@0
|
4 * @author Fotis Evangelou - http://nuevvo.com/labs/simpletabs
|
matthiasm@0
|
5 * @copyright Copyright (c) 2009-2011 Fotis Evangelou / Nuevvo Webware Ltd. All rights reserved.
|
matthiasm@0
|
6 * @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
|
matthiasm@0
|
7 */
|
matthiasm@0
|
8
|
matthiasm@0
|
9 // Main SimpleTabs function
|
matthiasm@0
|
10 var kmrSimpleTabs = {
|
matthiasm@0
|
11
|
matthiasm@0
|
12 sbContainerClass: "simpleTabs",
|
matthiasm@0
|
13 sbNavClass: "simpleTabsNavigation",
|
matthiasm@0
|
14 sbContentClass: "simpleTabsContent",
|
matthiasm@0
|
15 sbCurrentNavClass: "current",
|
matthiasm@0
|
16 sbCurrentTabClass: "currentTab",
|
matthiasm@0
|
17 sbIdPrefix: "tabber",
|
matthiasm@0
|
18
|
matthiasm@0
|
19 init: function(){
|
matthiasm@0
|
20 if(!document.getElementsByTagName) return false;
|
matthiasm@0
|
21 if(!document.getElementById) return false;
|
matthiasm@0
|
22
|
matthiasm@0
|
23 var containerDiv = document.getElementsByTagName("div");
|
matthiasm@0
|
24
|
matthiasm@0
|
25 for(var i=0; i<containerDiv.length; i++){
|
matthiasm@0
|
26 if (containerDiv[i].className == kmrSimpleTabs.sbContainerClass) {
|
matthiasm@0
|
27
|
matthiasm@0
|
28 // assign a unique ID for this tab block and then grab it
|
matthiasm@0
|
29 containerDiv[i].setAttribute("id",kmrSimpleTabs.sbIdPrefix+[i]);
|
matthiasm@0
|
30 var containerDivId = containerDiv[i].getAttribute("id");
|
matthiasm@0
|
31
|
matthiasm@0
|
32 // Navigation
|
matthiasm@0
|
33 var ul = containerDiv[i].getElementsByTagName("ul");
|
matthiasm@0
|
34
|
matthiasm@0
|
35 for(var j=0; j<ul.length; j++){
|
matthiasm@0
|
36 if (ul[j].className == kmrSimpleTabs.sbNavClass) {
|
matthiasm@0
|
37
|
matthiasm@0
|
38 var a = ul[j].getElementsByTagName("a");
|
matthiasm@0
|
39 for(var k=0; k<a.length; k++){
|
matthiasm@0
|
40 a[k].setAttribute("id",containerDivId+"_a_"+k);
|
matthiasm@0
|
41 // get current
|
matthiasm@0
|
42 if(kmrSimpleTabs.readCookie('simpleTabsCookie')){
|
matthiasm@0
|
43 var cookieElements = kmrSimpleTabs.readCookie('simpleTabsCookie').split("_");
|
matthiasm@0
|
44 var curTabCont = cookieElements[1];
|
matthiasm@0
|
45 var curAnchor = cookieElements[2];
|
matthiasm@0
|
46 if(a[k].parentNode.parentNode.parentNode.getAttribute("id")==kmrSimpleTabs.sbIdPrefix+curTabCont){
|
matthiasm@0
|
47 if(a[k].getAttribute("id")==kmrSimpleTabs.sbIdPrefix+curTabCont+"_a_"+curAnchor){
|
matthiasm@0
|
48 a[k].className = kmrSimpleTabs.sbCurrentNavClass;
|
matthiasm@0
|
49 } else {
|
matthiasm@0
|
50 a[k].className = "";
|
matthiasm@0
|
51 }
|
matthiasm@0
|
52 } else {
|
matthiasm@0
|
53 a[0].className = kmrSimpleTabs.sbCurrentNavClass;
|
matthiasm@0
|
54 }
|
matthiasm@0
|
55 } else {
|
matthiasm@0
|
56 a[0].className = kmrSimpleTabs.sbCurrentNavClass;
|
matthiasm@0
|
57 }
|
matthiasm@0
|
58
|
matthiasm@0
|
59 a[k].onclick = function(){
|
matthiasm@0
|
60 kmrSimpleTabs.setCurrent(this,'simpleTabsCookie');
|
matthiasm@0
|
61 return false;
|
matthiasm@0
|
62 }
|
matthiasm@0
|
63 }
|
matthiasm@0
|
64 }
|
matthiasm@0
|
65 }
|
matthiasm@0
|
66
|
matthiasm@0
|
67 // Tab Content
|
matthiasm@0
|
68 var div = containerDiv[i].getElementsByTagName("div");
|
matthiasm@0
|
69 var countDivs = 0;
|
matthiasm@0
|
70 for(var l=0; l<div.length; l++){
|
matthiasm@0
|
71 if (div[l].className == kmrSimpleTabs.sbContentClass) {
|
matthiasm@0
|
72 div[l].setAttribute("id",containerDivId+"_div_"+[countDivs]);
|
matthiasm@0
|
73 if(kmrSimpleTabs.readCookie('simpleTabsCookie')){
|
matthiasm@0
|
74 var cookieElements = kmrSimpleTabs.readCookie('simpleTabsCookie').split("_");
|
matthiasm@0
|
75 var curTabCont = cookieElements[1];
|
matthiasm@0
|
76 var curAnchor = cookieElements[2];
|
matthiasm@0
|
77 if(div[l].parentNode.getAttribute("id")==kmrSimpleTabs.sbIdPrefix+curTabCont){
|
matthiasm@0
|
78 if(div[l].getAttribute("id")==kmrSimpleTabs.sbIdPrefix+curTabCont+"_div_"+curAnchor){
|
matthiasm@0
|
79 div[l].className = kmrSimpleTabs.sbContentClass+" "+kmrSimpleTabs.sbCurrentTabClass;
|
matthiasm@0
|
80 } else {
|
matthiasm@0
|
81 div[l].className = kmrSimpleTabs.sbContentClass;
|
matthiasm@0
|
82 }
|
matthiasm@0
|
83 } else {
|
matthiasm@0
|
84 div[0].className = kmrSimpleTabs.sbContentClass+" "+kmrSimpleTabs.sbCurrentTabClass;
|
matthiasm@0
|
85 }
|
matthiasm@0
|
86 } else {
|
matthiasm@0
|
87 div[0].className = kmrSimpleTabs.sbContentClass+" "+kmrSimpleTabs.sbCurrentTabClass;
|
matthiasm@0
|
88 }
|
matthiasm@0
|
89 countDivs++;
|
matthiasm@0
|
90 }
|
matthiasm@0
|
91 }
|
matthiasm@0
|
92
|
matthiasm@0
|
93 // End navigation and content block handling
|
matthiasm@0
|
94 }
|
matthiasm@0
|
95 }
|
matthiasm@0
|
96 },
|
matthiasm@0
|
97
|
matthiasm@0
|
98 // Function to set the current tab
|
matthiasm@0
|
99 setCurrent: function(elm,cookie){
|
matthiasm@0
|
100
|
matthiasm@0
|
101 this.eraseCookie(cookie);
|
matthiasm@0
|
102
|
matthiasm@0
|
103 //get container ID
|
matthiasm@0
|
104 var thisContainerID = elm.parentNode.parentNode.parentNode.getAttribute("id");
|
matthiasm@0
|
105
|
matthiasm@0
|
106 // get current anchor position
|
matthiasm@0
|
107 var regExpAnchor = thisContainerID+"_a_";
|
matthiasm@0
|
108 var thisLinkPosition = elm.getAttribute("id").replace(regExpAnchor,"");
|
matthiasm@0
|
109
|
matthiasm@0
|
110 // change to clicked anchor
|
matthiasm@0
|
111 var otherLinks = elm.parentNode.parentNode.getElementsByTagName("a");
|
matthiasm@0
|
112 for(var n=0; n<otherLinks.length; n++){
|
matthiasm@0
|
113 otherLinks[n].className = "";
|
matthiasm@0
|
114 }
|
matthiasm@0
|
115 elm.className = kmrSimpleTabs.sbCurrentNavClass;
|
matthiasm@0
|
116
|
matthiasm@0
|
117 // change to associated div
|
matthiasm@0
|
118 var otherDivs = document.getElementById(thisContainerID).getElementsByTagName("div");
|
matthiasm@0
|
119 var RegExpForContentClass = new RegExp(kmrSimpleTabs.sbContentClass);
|
matthiasm@0
|
120 for(var i=0; i<otherDivs.length; i++){
|
matthiasm@0
|
121 if ( RegExpForContentClass.test(otherDivs[i].className) ) {
|
matthiasm@0
|
122 otherDivs[i].className = kmrSimpleTabs.sbContentClass;
|
matthiasm@0
|
123 }
|
matthiasm@0
|
124 }
|
matthiasm@0
|
125 document.getElementById(thisContainerID+"_div_"+thisLinkPosition).className = kmrSimpleTabs.sbContentClass+" "+kmrSimpleTabs.sbCurrentTabClass;
|
matthiasm@0
|
126
|
matthiasm@0
|
127 // get Tabs container ID
|
matthiasm@0
|
128 var RegExpForPrefix = new RegExp(kmrSimpleTabs.sbIdPrefix);
|
matthiasm@0
|
129 var thisContainerPosition = thisContainerID.replace(RegExpForPrefix,"");
|
matthiasm@0
|
130
|
matthiasm@0
|
131 // set cookie
|
matthiasm@0
|
132 this.createCookie(cookie,'simpleTabsCookie_'+thisContainerPosition+'_'+thisLinkPosition,1);
|
matthiasm@0
|
133 },
|
matthiasm@0
|
134
|
matthiasm@0
|
135 // Cookies
|
matthiasm@0
|
136 createCookie: function(name,value,days) {
|
matthiasm@0
|
137 if (days) {
|
matthiasm@0
|
138 var date = new Date();
|
matthiasm@0
|
139 date.setTime(date.getTime()+(days*24*60*60*1000));
|
matthiasm@0
|
140 var expires = "; expires="+date.toGMTString();
|
matthiasm@0
|
141 }
|
matthiasm@0
|
142 else var expires = "";
|
matthiasm@0
|
143 document.cookie = name+"="+value+expires+"; path=/";
|
matthiasm@0
|
144 },
|
matthiasm@0
|
145
|
matthiasm@0
|
146 readCookie: function(name) {
|
matthiasm@0
|
147 var nameEQ = name + "=";
|
matthiasm@0
|
148 var ca = document.cookie.split(';');
|
matthiasm@0
|
149 for(var i=0;i < ca.length;i++) {
|
matthiasm@0
|
150 var c = ca[i];
|
matthiasm@0
|
151 while (c.charAt(0)==' ') c = c.substring(1,c.length);
|
matthiasm@0
|
152 if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
|
matthiasm@0
|
153 }
|
matthiasm@0
|
154 return null;
|
matthiasm@0
|
155 },
|
matthiasm@0
|
156
|
matthiasm@0
|
157 eraseCookie: function(name) {
|
matthiasm@0
|
158 this.createCookie(name,"",-1);
|
matthiasm@0
|
159 },
|
matthiasm@0
|
160
|
matthiasm@0
|
161 // Loader
|
matthiasm@0
|
162 addLoadEvent: function(func) {
|
matthiasm@0
|
163 var oldonload = window.onload;
|
matthiasm@0
|
164 if (typeof window.onload != 'function') {
|
matthiasm@0
|
165 window.onload = func;
|
matthiasm@0
|
166 } else {
|
matthiasm@0
|
167 window.onload = function() {
|
matthiasm@0
|
168 if (oldonload) {
|
matthiasm@0
|
169 oldonload();
|
matthiasm@0
|
170 }
|
matthiasm@0
|
171 func();
|
matthiasm@0
|
172 }
|
matthiasm@0
|
173 }
|
matthiasm@0
|
174 }
|
matthiasm@0
|
175
|
matthiasm@0
|
176 // END
|
matthiasm@0
|
177 };
|
matthiasm@0
|
178
|
matthiasm@0
|
179 // Load SimpleTabs
|
matthiasm@0
|
180 kmrSimpleTabs.addLoadEvent(kmrSimpleTabs.init);
|