150 lines
4.5 KiB
JavaScript
150 lines
4.5 KiB
JavaScript
|
// <script>
|
|||
|
/* Bereiche
|
|||
|
*
|
|||
|
* @version 2.2
|
|||
|
* @author Matthias Viehweger <kronn@kronn.de>
|
|||
|
*/
|
|||
|
var Bereiche = {
|
|||
|
count: 0,
|
|||
|
fieldlist: new Array(),
|
|||
|
helpfield: '',
|
|||
|
init: function() {
|
|||
|
// auf Funktionen pr<70>fen
|
|||
|
if (!document.getElementsByTagName) return;
|
|||
|
if (!document.getElementById) return;
|
|||
|
|
|||
|
// alle Unterhilfetexte verstecken.
|
|||
|
Bereiche.helpfield = $('adminhelp');
|
|||
|
Bereiche.hideAllHelp();
|
|||
|
|
|||
|
// alle Felder finden und verstecken
|
|||
|
var fields = document.getElementsByTagName('fieldset');
|
|||
|
for (var i = 0; i < fields.length; i++ ) {
|
|||
|
// individuell einstellbare Textbereiche anzeigen oder verstecken
|
|||
|
if ( Element.hasClassName(fields[i], 'bereich_indiv') ) {
|
|||
|
if ( !Element.hasClassName(fields[i], 'unsichtbar') && !Element.hasClassName(fields[i], 'sichtbar') ) {
|
|||
|
Bereiche.show(fields[i]);
|
|||
|
}
|
|||
|
base.addEvent(fields[i].firstChild, 'click', Bereiche.toggleIndiv, false);
|
|||
|
// statische Textbereiche anzeigen
|
|||
|
} else if ( Element.hasClassName(fields[i], 'bereich_static') ) {
|
|||
|
Bereiche.show(fields[i]);
|
|||
|
Element.addClassName(fields[i], 'spalte2');
|
|||
|
}
|
|||
|
|
|||
|
if ( Element.hasClassName(fields[i], 'bereich_static') || Element.hasClassName(fields[i], 'bereich_indiv') ) continue;
|
|||
|
|
|||
|
if ( fields[i].id != '' ) {
|
|||
|
Bereiche.hide(fields[i]);
|
|||
|
base.addEvent(fields[i].firstChild, 'click', Bereiche.getToggle, false);
|
|||
|
Bereiche.fieldlist.push(fields[i]);
|
|||
|
}
|
|||
|
}
|
|||
|
Bereiche.count = Bereiche.count + Bereiche.fieldlist.length;
|
|||
|
// ggf. ausgewähltes Feld anzeigen
|
|||
|
var chosen = window.location.hash;
|
|||
|
if( chosen.length > 1 ) {
|
|||
|
window.scrollTo(0,0);
|
|||
|
chosen = document.getElementById(chosen.substr(1,chosen.length));
|
|||
|
Bereiche.show(chosen);
|
|||
|
} else if( Bereiche.fieldlist.length > 0 ) {
|
|||
|
Bereiche.show(Bereiche.fieldlist[0]);
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
getToggle: function(e) {
|
|||
|
var target = window.event ? window.event.srcElement : e ? e.target : null;
|
|||
|
if (!target) return;
|
|||
|
|
|||
|
target = target.parentNode;
|
|||
|
Bereiche.doToggle(target);
|
|||
|
},
|
|||
|
toggle: function(targetid) {
|
|||
|
target = $(targetid);
|
|||
|
Bereiche.doToggle(target);
|
|||
|
},
|
|||
|
doToggle: function(target) {
|
|||
|
// wenn sichtbar, dann verstecken und Funktion verlassen
|
|||
|
if ( Element.hasClassName(target, 'sichtbar') ) {
|
|||
|
Bereiche.hide(target);
|
|||
|
Bereiche.count--;
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
// ggf. offene Bereiche verstecken
|
|||
|
if ( Bereiche.count >= 1 ) {
|
|||
|
for( var i = 0; i < Bereiche.fieldlist.length; i++ ) {
|
|||
|
if ( Element.hasClassName(Bereiche.fieldlist[i], 'unsichtbar') ) continue;
|
|||
|
|
|||
|
Bereiche.hide( Bereiche.fieldlist[i] );
|
|||
|
Bereiche.count--;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// gewählten Bereich zeigen
|
|||
|
Bereiche.show(target);
|
|||
|
Bereiche.count++;
|
|||
|
},
|
|||
|
toggleIndiv: function(e) {
|
|||
|
var target = window.event ? window.event.srcElement : e ? e.target : null;
|
|||
|
if (!target) return;
|
|||
|
target = target.parentNode;
|
|||
|
// verstecken oder anzeigen
|
|||
|
if ( !Element.hasClassName(target, 'sichtbar') ) {
|
|||
|
Bereiche.show(target);
|
|||
|
} else {
|
|||
|
Bereiche.hide(target);
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
hide: function(field) {
|
|||
|
if ( Element.hasClassName(field, 'sichtbar') ) {
|
|||
|
Element.removeClassName(field, 'sichtbar');
|
|||
|
}
|
|||
|
Element.addClassName(field, 'unsichtbar');
|
|||
|
|
|||
|
// evtl. Hilfetexte verstecken
|
|||
|
// Bereiche.hideAllHelp();
|
|||
|
},
|
|||
|
show: function(field) {
|
|||
|
if ( Element.hasClassName(field, 'unsichtbar') ) {
|
|||
|
Element.removeClassName(field, 'unsichtbar');
|
|||
|
}
|
|||
|
Element.addClassName(field, 'sichtbar');
|
|||
|
|
|||
|
// passende Hilfe anzeigen
|
|||
|
Bereiche.showHelp(field.id);
|
|||
|
},
|
|||
|
|
|||
|
showHelp: function(helpid) {
|
|||
|
var returnval = false;
|
|||
|
if ( !Bereiche.helpfield ) return returnval;
|
|||
|
Bereiche.hideAllHelp();
|
|||
|
// nur einen bestimmten Text im Feld "hilfe" anzeigen
|
|||
|
var helpfields = Bereiche.helpfield.getElementsByTagName('div');
|
|||
|
for (var i = 0; i < helpfields.length; i++) {
|
|||
|
if ( helpfields[i].className == 'hidden' &&
|
|||
|
(' ' + helpfields[i].getAttribute('rel') + ' ').indexOf(' '+helpid+' ') != -1 ) {
|
|||
|
helpfields[i].className = '';
|
|||
|
new Effect.Appear(helpfields[i]);
|
|||
|
returnval = true;
|
|||
|
}
|
|||
|
}
|
|||
|
return returnval;
|
|||
|
},
|
|||
|
hideAllHelp: function() {
|
|||
|
// alle Hilfetexte verstecken
|
|||
|
if ( !Bereiche.helpfield ) return;
|
|||
|
var helpfields = Bereiche.helpfield.getElementsByTagName('div');
|
|||
|
for ( var i = 0; i < helpfields.length; i++ ) {
|
|||
|
if ( helpfields[i].className == '' ) helpfields[i].className = 'hidden';
|
|||
|
}
|
|||
|
var helpheadings = Bereiche.helpfield.getElementsByTagName('h4');
|
|||
|
for ( var i = 0; i < helpheadings.length; i++ ) {
|
|||
|
if ( helpheadings[i].className == '' ) helpheadings[i].style.display = 'none';
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
base.addEvent(window, 'load', Bereiche.init, false);
|
|||
|
if( window.location.hash != '' ) { window.scrollTo(0,0) }
|