[ Index ] |
|
Code source de eGroupWare 1.2.106-2 |
1 /** 2 * Tabs class for handling HTML/CSS tabs 3 * 4 * Copyright (C) 2003 Dipl.-Inform. Kai Hofmann and probusiness AG 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 19 * 20 * Contact information: 21 * Dipl.-Inform. Kai Hofmann 22 * Arberger Heerstr. 92 23 * 28307 Bremen 24 * Germany 25 * 26 * 27 * probusiness AG 28 * Expo-Plaza-Nr. 1 29 * 30539 Hannover 30 * Germany 31 * 32 * 33 * @version 1.0 34 * @author hofmann@hofmann-int.de 35 * 36 * @argument nrTabs Number of Tabs to handle 37 * @argument activeCSSclass CSS class name for active tabs (display:inline) 38 * @argument inactiveCSSclass CSS class name for inactive tabs (display:none) 39 * @argument HTMLtabID HTML ID name prefix that would be used with the tab number as tab name. 40 * @argument HTMLtabcontentID HTML ID prefix for the tab content used with the tab number 41 * @argument HTMLtabselectorID HTML ID prefix for a selectbox used to switch between the tabs 42 * @argument HTMLtabradioID HTML ID prefix for radio button input fields used to switch between the tabs 43 * @argument tabPageKey URL parameter name to use for setting/getting the actual tab 44 */ 45 function Tabs(nrTabs,activeCSSclass,inactiveCSSclass,HTMLtabID,HTMLtabcontentID,HTMLtabselectorID,HTMLtabradioID,tabPageKey) 46 { 47 this.nrTabs = nrTabs; 48 this.activeCSSclass = activeCSSclass; 49 this.inactiveCSSclass = inactiveCSSclass; 50 this.HTMLtabID = HTMLtabID; 51 this.HTMLtabcontentID = HTMLtabcontentID; 52 this.HTMLtabselectorID = HTMLtabselectorID; 53 this.HTMLtabradioID = HTMLtabradioID; 54 this.tabPageKey = tabPageKey; 55 56 if (typeof(_tabs_prototype_called) == 'undefined') 57 { 58 _tabs_prototype_called = true; 59 Tabs.prototype.setActive = setActive; 60 Tabs.prototype.setInactive = setInactive; 61 Tabs.prototype.isActive = isActive; 62 Tabs.prototype.getActive = getActive; 63 Tabs.prototype.disableAll = disableAll; 64 Tabs.prototype.display = display; 65 Tabs.prototype.changeToActive = changeToActive; 66 Tabs.prototype.init = init; 67 } 68 69 70 /** 71 * Set tab as active 72 * 73 * @argument tabnr The tab number (1-nrTabs) of the tab that should be active 74 */ 75 function setActive(tabnr) 76 { 77 if ((tabnr > 0) && (tabnr <= this.nrTabs)) 78 { 79 if(document.getElementById(this.HTMLtabID + tabnr)) 80 document.getElementById(this.HTMLtabID + tabnr).className = this.activeCSSclass; 81 if(document.getElementById(this.HTMLtabcontentID + tabnr)) 82 document.getElementById(this.HTMLtabcontentID + tabnr).className = this.activeCSSclass; 83 84 if(document.getElementById(this.HTMLtabselectorID)) 85 document.getElementById(this.HTMLtabselectorID).selectedIndex = tabnr-1; 86 if(document.getElementById(this.HTMLtabradioID + tabnr)) 87 document.getElementById(this.HTMLtabradioID + tabnr).checked = true; 88 } 89 } 90 91 92 93 /** 94 * Set tab as inactive 95 * 96 * @argument tabnr The tab number (1-nrTabs) of the tab that should be inactive 97 */ 98 function setInactive(tabnr) 99 { 100 if ((tabnr > 0) && (tabnr <= this.nrTabs)) 101 { 102 if(document.getElementById(this.HTMLtabID + tabnr)) 103 document.getElementById(this.HTMLtabID + tabnr).className = this.inactiveCSSclass; 104 if(document.getElementById(this.HTMLtabcontentID + tabnr)) 105 document.getElementById(this.HTMLtabcontentID + tabnr).className = this.inactiveCSSclass; 106 } 107 } 108 109 110 /** 111 * Test if tab is active 112 * 113 * @argument tabnr The tab number (1-nrTabs) of the tab that should be tested 114 * @returns boolean - true if tab is active, false otherwise 115 */ 116 function isActive(tabnr) 117 { 118 return(document.getElementById(HTMLtabID + tabnr).className == this.activeCSSclass); 119 } 120 121 122 /** 123 * Get the active tab number 124 * 125 * @returns Tab (1-nrTabs) that is currently active or 0 if non is active. 126 */ 127 function getActive() 128 { 129 for (i = 1; i <= this.nrTabs; ++i) 130 { 131 if (this.isActive(i)) 132 { 133 return(i); 134 } 135 } 136 return(0); 137 } 138 139 140 /** 141 * Disable all tabs 142 */ 143 function disableAll() 144 { 145 for (i = 1; i <= this.nrTabs; ++i) 146 { 147 this.setInactive(i); 148 } 149 } 150 151 152 /** 153 * Disable all tabs and then display the tab number given 154 * 155 * @argument tabnr Tab number to display 156 */ 157 function display(tabnr) 158 { 159 for (i = 1; i <= this.nrTabs; ++i) 160 { 161 if (i == tabnr) 162 this.setActive(tabnr); 163 else 164 this.setInactive(i); 165 } 166 } 167 168 169 /** 170 * Loop over all tabs - switch off currently active tabs and display the new tab 171 * 172 * @argument tabnr Tab number to display 173 */ 174 function changeToActive(tabnr) 175 { 176 for (i = 1; i <= this.nrTabs; ++i) 177 { 178 if (i == tabnr) 179 { 180 if (!this.isActive(i)) 181 { 182 this.setActive(i); 183 } 184 } 185 else 186 { 187 if (this.isActive(i)) 188 { 189 this.setInactive(i); 190 } 191 } 192 } 193 } 194 195 196 /** 197 * Determine active tab from url parameter or selector and display it. 198 */ 199 function init() 200 { 201 var tab = 0; 202 // this line is not working in IE 6 203 //var regexp = new RegExp('(^|&)' + this.tabPageKey + '=[0-9]{1,2}'); 204 var regexp = new RegExp(this.tabPageKey + '=[0-9]{1,2}'); 205 var urlparams = window.location.search; 206 var urlparamstart = urlparams.search(regexp); 207 208 // getting the active tab from the tabPageKey (url/get-var) if set 209 if (this.tabPageKey && urlparamstart > -1) 210 { 211 urlparamstart = urlparamstart + ((urlparams[urlparamstart] == '&') ? 1 : 0); 212 var urlparam = urlparams.substr(urlparamstart,urlparams.length - urlparamstart); 213 var pos = urlparam.indexOf("&"); 214 if (pos > -1) 215 { 216 urlparam = urlparam.substr(0,pos); 217 } 218 pos = urlparam.indexOf("="); 219 if (pos > -1) 220 { 221 var urlparamvalue = urlparam.substr(pos + 1,urlparam.length - (pos + 1)); 222 tab = urlparamvalue; 223 } 224 } 225 else 226 { 227 // getting the active tab from the selector if set 228 // the check for != '' is needed for Konqueror 229 if(document.getElementById(this.HTMLtabselectorID) && this.HTMLtabselectorID != '') 230 tab = document.getElementById(this.HTMLtabselectorID).selectedIndex+1; 231 else 232 tab = 1; 233 } 234 if ((tab <= 0) || (tab > this.nrTabs)) 235 { 236 tab = 1; 237 } 238 this.display(tab); 239 } 240 }
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Feb 25 17:20:01 2007 | par Balluche grâce à PHPXref 0.7 |