
function Reiter(div, reiterleiste, callBack, zindex) {
  var a = div.getElementsByTagName('a')[0];
  var tarif;
  var klassNames;
  var klass;
  
  this.getTarif = function() {
	  return tarif;
  }
  
  this.showTarifTable = function() {
	  if ($('tarif_' + tarif)) {
	     $('tarif_' + tarif).style.display = '';
	  }  
  }

  this.clickHandler = function(event) {
    callBack.call(reiterleiste, tarif);
    this.aktiv(true);
    this.showTarifTable();
    if (event.preventDefault) {
      event.preventDefault();
    } else {
      event.returnValue = false;
    }
  }

  this.init = function() {
    a.addEventListener
      ? a.addEventListener('click', this.clickHandler.bindAsEventListener(this), false)
      : a.attachEvent('onclick', this.clickHandler.bindAsEventListener(this));

    tarif = a.id.substr(a.id.indexOf('_') + 1);
    klassNames = new Array();
    var c = div.className.split(' ');
    for (var i = 0; i < c.length; i++) {
      if (c[i] == 'rot') {
        klass = 'rot';
      } else if (c[i] == 'blau') {
        klass = 'blau';
      } else {
        klassNames.push(c[i]);
      }
    }
    div.style.zIndex = zindex;
  }

  this.aktiv = function(a) {
    if (a) {
      div.style.zIndex = 100;
      klass = 'blau';
      div.className = klassNames.join(' ') + ' ' + klass;
    } else {
      div.style.zIndex = zindex;
      klass = 'rot';
      div.className = klassNames.join(' ') + ' ' + klass;
    }
  }

  this.init();

}

var Tarifwechsel = {
reiterleiste : null,

reiter : null,

tabellen : null,

tarife2_tabelle : null,

tarife_wechselnd_div : null,

findeReiter : function() {
                var divs = this.reiterleiste.getElementsByTagName('div');
                var zindex = 0;
                for (var i = 0; i < divs.length; i++) {
                  if (divs[i].className.split(' ').contains('reiter')) {
                    zindex++;
                    this.reiter.push(new Reiter(divs[i], this, this.reiterClickCallback, zindex));
                  }
                }
              },

findeTabellen : function() {
                  var tabs = $('content').getElementsByTagName('table');
                  for (var i = 0; i < tabs.length; i++) {
                    if (tabs[i].className.split(' ').contains('tarife')) {
                      if (!tabs[i].className.split(' ').contains('tarife2')) {
                        this.tabellen.push(tabs[i]);
                      } else {
                        this.tarife2_tabelle = tabs[i];
                      }
                    }
                  }
                  
                  var divs = $('content').getElementsByTagName('div');
                  for (var i = 0; i < divs.length; i++) {
                    if (divs[i].className.split(' ').contains('tarife_wechselnd')) {
                        this.tarife_wechselnd_div = divs[i];
                        break;
                    }
                  }
                  
                },
                
hideTarifTables : function() {
                	for (var i = 0; i < this.tabellen.length; i++) {
                        this.tabellen[i].style.display = 'none';
                    }
                },

reiterClickCallback : function(tarif) {
                        for (var i = 0; i < this.reiter.length; i++) {
                          this.reiter[i].aktiv(false);
                        }
                        this.hideTarifTables();
                        this.highlightTarife2(tarif);
                      },
                      
                      /*
                       * Den Reiter eines Tarifs aktivieren, so als wäre er angeklickt worden.
                       */
activateReiter : function(tarif) {
                    	  var reiter = false;
                    	  for (var i = 0, l = this.reiter.length; i < l; i++) {
                    		  if (this.reiter[i].getTarif() == tarif) {
                    			  reiter = this.reiter[i];
                    			  break;
                    		  }
                    	  }
                    	  
                    	  if (reiter) {
                    		  this.reiterClickCallback(tarif);
                    		  reiter.showTarifTable();
                    		  reiter.aktiv(true);
                    	  }
                    	  
                      
                      },
                      
highlightTarife2 : function(tarif) {
                     var tds = this.tarife2_tabelle.getElementsByTagName('thead')[0].getElementsByTagName('td');
                     for (var i = 0; i < tds.length; i++) {
                       if (tds[i].className.split(' ').contains('tarif_' + tarif)) {
                         tds[i].className = tds[i].className + " active";
                       } else {
                         tds[i].className = tds[i].className.replace(/active/, "");
                       }
                     }


                     var trs = this.tarife2_tabelle.getElementsByTagName('tbody')[0].getElementsByTagName('tr');
                     for (var j = 0; j < trs.length; j++) {
	                     tds = trs[j].getElementsByTagName('td');
	                     for (var i = 0; i < tds.length; i++) {
	                       if (tds[i].className.split(' ').contains('tarif_' + tarif)) {
	                         tds[i].className = tds[i].className + " active_" + (i+1);
	                       } else {
	                         tds[i].className = tds[i].className.replace(/active_./, "");
	                       }
	                     }
					}
					                     
                     var span = this.tarife_wechselnd_div.getElementsByTagName('div');
                     for (var i = 0; i < span.length; i++) {
                       if (span[i].className.split(' ').contains('tarif_' + tarif)) {
                         // span[i].style.display = 'block';
                         span[i].style.display = '';
                       } else {
                         span[i].style.display = 'none';
                       }
                     }
                     
                   },

highlightTarife2Alt : function(tarif) {
                     var tds = this.tarife2_tabelle.getElementsByTagName('thead')[0].getElementsByTagName('td');
                     for (var i = 0; i < tds.length; i++) {
                       if (tds[i].className.split(' ').contains('tarif_' + tarif)) {
                         tds[i].className = tds[i].className + " active";
                       } else {
                         tds[i].className = tds[i].className.replace(/active/, "");
                       }
                     }
                     var span = this.tarife_wechselnd_div.getElementsByTagName('span');
                     for (var i = 0; i < span.length; i++) {
                       if (span[i].className.split(' ').contains('tarif_' + tarif)) {
                         // span[i].style.display = 'block';
                         span[i].style.display = '';
                       } else {
                         span[i].style.display = 'none';
                       }
                     }
                     
                   },

init : function(event) {
         if ($('reiterleiste')) {
           this.reiterleiste = $('reiterleiste');
           this.reiter = new Array();
           this.findeReiter();
           this.tabellen = new Array();
           this.findeTabellen();
         }
       }
}

window.addEventListener
  ? window.addEventListener('load', Tarifwechsel.init.bindAsEventListener(Tarifwechsel), false)
  : window.attachEvent('onload', Tarifwechsel.init.bindAsEventListener(Tarifwechsel));

