annotate js/simpletabs_1.3.js @ 0:28391939478f

added first working version
author matthiasm
date Fri, 09 Jan 2015 19:08:54 +0000
parents
children
rev   line source
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);