
function test()
	     { if ( istLeer('formular','name',(location.href.match(/deu/))?'Bitte geben Sie Ihren Namen an!':'Please fill in your Last Name!') ) return false;
		   if ( istLeer('formular','vorname',(location.href.match(/deu/))?'Bitte geben Sie Ihren Vornamen an!':'Please fill in your First Name!') ) return false;		   
		   if ( istKeineEmail('formular','email',(location.href.match(/deu/))?'Bitte geben Sie eine korrekte Email an!':'Please fill in an accurate E-mail adress!') ) return false;
		   if ( istKeineTelefonnummer('formular','telefon',(location.href.match(/deu/))?'Bitte geben Sie eine plausible Telefonnummer an!':'Please fill in an accurate phone number!') ) return false;
		   if ( istLeer('formular','betreff',(location.href.match(/deu/))?'Bitte geben Sie Ihren Betreff an!':'Please fill in your subject!') ) return false;
		   if ( istLeer('formular','mitteilung',(location.href.match(/deu/))?'Bitte formulieren Sie Ihr Anliegen!':'Please fill in your masssage!') ) return false;		   		   		
		   return true;
		 }

function test_ita()
	     { if ( istLeer('formular','name','Inserite il vostro cognome!') ) return false;
		   if ( istLeer('formular','vorname','Inserite il vostro nome!') ) return false;		   
		   if ( istKeineEmail('formular','email','Inserite un indirizzo Email corretto!') ) return false;
		   if ( istKeineTelefonnummer('formular','telefon','Inserite il vostro numero di telefono!') ) return false;
		   if ( istLeer('formular','betreff','Inserite l&acute;oggetto!') ) return false;
		   if ( istLeer('formular','mitteilung','Inserite un messaggio!') ) return false;		   		   		
		   return true;
		 }
		 
function test_fra()
	     { if ( istLeer('formular','name','Veuillez indiquer votre Nom!') ) return false;
		   if ( istLeer('formular','vorname','Veuillez indiquer votre Nom!!') ) return false;		   
		   if ( istKeineEmail('formular','email','Veuillez indiquer précisément votre adresse email!') ) return false;
		   if ( istKeineTelefonnummer('formular','telefon','Veuillez indiquer précisément votre n° de téléphone!') ) return false;
		   if ( istLeer('formular','betreff','Veuillez indiquer le sujet!') ) return false;
		   if ( istLeer('formular','mitteilung','Veuillez renseigner votre message!') ) return false;		   		   		
		   return true;
		 }
		 
var contents = new Object();
var basisurl = null;

// berechnet eine Zahl zwischen 1 und 100.000 fuer jede uebergebene komplette URL
// dabei werden alternierend die ASCII Werte der Buchstaben addiert und modulo 100.000 berechnet
// der Hashwert soll zur Identifikation der URL dienen, MD5 waere komplizierter zu programmierne gewesen
function getHash( url )
  { var hashval = 0;
    var faktor = 1;
    for ( var i = 0; i < url.length; i++ )
      { hashval += (url.charCodeAt(i) - 31)*faktor;
	    hashval %= 1048576;
	    if ( ++faktor == 4 ) faktor = 1;
	  }
	return 'h' + hashval;   
  }
			
// uebernimmt eine URL, laedt sie mit AJAX wie die jQuery-Methode $().load()
// dabei wird zuerste der Hash berechnet, geprft ob die URL bereits im
// Cache steht, und am Ende das Ergebnis in den ueber into uebergebenen Selektor
// eingefuegt, am Ende wird die ready-Funktion aufgerufen
function myload( url, into, readyfn )
  { // ggfs Selektor abtrennen
    var off = url.indexOf(" ");
    if ( off >= 0 ) 
	  { var selector = url.slice(off, url.length);
		url = url.slice(0, off);
	  }
	// Hashwert der puren URL bestimmen  
	var hashval = getHash(url);
    // falls keine ready-Funktion uebergeben wurde, eine leere Funktion erzeugen
    readyfn = readyfn || function(){};

    var contenttext = null; 
	// falls ich diese URL schon mal geholt habe, holle ich diese aus dem Cache (contents)
	if ( contents[hashval] ) 
      { // den Contenttext mit Hilfe des Selectora auslesen
	    contenttext = (selector) ? $(contents[hashval]).find(selector) : contents[hashval];
	    // falls ein Ziel uebergeben wurde, den Content einfuellen 
	    if ( into != null ) $(into).html(contenttext);
	    readyfn();
	  }
	else // sonst - das erste mal
	  { // in ein leeres DIV den INhalt mit der klassischen load-Funktion laden
	    $('<div/>').load(url + ' #wrapper > *',function() // wenn fertig
		                         { // den Inhalt im Cache speichern
								   contents[hashval]=$(this).html();
								   // den Contenttext mit Hilfe des Selectora auslesen
	                               contenttext = (selector) ? $(contents[hashval]).find(selector) : contents[hashval];
								   // falls ein Ziel angegeben, den Inhalt dort ablegen 
								   if ( into != null ) $(into).html(contenttext);
								   // ready-Funktion in diesem Context aufrufen
								   readyfn();
								 }
					    );
	  }  
	return contenttext; 
  }
  
function sp_tomiddle( id, duration )
  { // beim IE am Ende die Breite der Infobox anpassen
    // whrend der Animation geht der Rechte Rand floeten
    // alles andere sieht noch beschissener aus, das die Verkleinerung der infobox
    // alles andere ueberholt 
    if ( $.browser.msie && parseInt($.browser.version) == 6 )
      { if ( $('#'+id+' .infobox').css('width') == '33px' )
          { $('#'+id+' .infobox').animate( {width:'206px'} , duration );
            $('#'+id).animate( {width:'226px'} , duration );
          }
        else  
          $('#'+id).animate( {width:'226px'} , duration, null, // in 2 sec die Breite auf 226px veraendern
                          function(){$('#'+id+' .infobox').css('width','206px');}); 
      }                   
    else   
    $('#'+id).animate( {width:'226px'} , duration ); // in 2 sec die Breite auf 226px veraendern
    $('#'+id+' .aufzubutton').attr('title',((location.href.match('\/deu\/'))?'maximieren':'maximize'));
	$('#'+id+' .linkespalte').fadeIn(duration*.8);		
	$('#'+id+' .rechtespalte').fadeOut(duration*.8);		
 	$('#'+id+' .maximizer').fadeOut(duration*.8,function(){$(this).hide()});
	$('#'+id+' .cursor').attr('style','cursor:default');
	$('#'+id+' .wiederherstellen').attr('title','');		
 }

function sp_tomax( id, duration )
  { // fuer den IE6 die Breite der Infobox schnell anpassen
    // und die rechte Spalte einfaeden, dann erst den Teaser breit machen
    if ( $.browser.msie && parseInt($.browser.version) == 6 )
      { $('#'+id+' .infobox').animate( {width:'550px'} , duration/2 );
        $('#'+id+' .rechtespalte').fadeIn(duration);
      }
    $('#'+id).animate( {width:'572px'} , duration ); // in 2 sec die Breite auf 572px veraendern
	$('#'+id+' .aufzubutton').attr('title',((location.href.match('\/deu\/'))?'wiederherstellen':'restore'));
 	$('#'+id+' .linkespalte').fadeIn(duration*.8);
    // bei allen anderen Browsern reicht es das FadeIn der rechten Spalte hier zu starten
    if ( ! $.browser.msie || parseInt($.browser.version) != 6 )
	  $('#'+id+' .rechtespalte').fadeIn(duration*.8);
 	$('#'+id+' .maximizer').fadeOut(duration*.8,function(){$(this).hide()});		
  }
  
function sp_tomin( id, duration )
  { if ( $.browser.msie && parseInt($.browser.version) == 6 )
    $('#'+id+' .infobox').animate( {width:'33px'} , duration );
 	$('#'+id).animate( {width:'53px'} , duration ); // in 2 sec die Breite auf 53px veraendern
    $('#'+id+' .aufzubutton').attr('title',((location.href.match('\/deu\/'))?'maximieren':'maximize'));
 	$('#'+id+' .linkespalte').fadeOut(duration*.8);
	$('#'+id+' .rechtespalte').fadeOut(duration*.8);		
 	$('#'+id+' .maximizer').fadeIn(duration*.8,function(){$(this).show()});
	$('#'+id+' .cursor').attr('style','cursor:pointer');
	$('#'+id+' .wiederherstellen').attr('title',((location.href.match('\/deu\/'))?'wiederherstellen':'restore'));
  }

function min_others( parentid, duration )
  { var ids         = new Array('teaser1','teaser2','teaser3');
    // erst starten des kleinmachens der anderen
    for ( var i = 0; i < ids.length; i++  ) 
      if ( parentid != ids[i] ) sp_tomin(ids[i],duration);
    // dann den neuen groß machen
    sp_tomax(parentid,duration);     
  }  

function maximieren( url, parentid, duration, readyfn )
  { var selector    = ( parentid == 'referenz_teaser') ? '#' + parentid + ' .obenspalte' : '#' + parentid + ' .rechtespalte div';
    myload(url + ' ' + selector + ' > *', // die URL laden
	       selector,                      // Ziel wo es hin soll	  
           // wenn fertig dann folgende Funktion      
           function()
             { $('#' + parentid).attr('url',url); // url merken  
			   // Sprachlinks umsetzen
			   $('a.englisch').attr('href',$(contents[getHash(url)]).find('a.englisch').attr('href'));
			   $('a.deutsch').attr('href',$(contents[getHash(url)]).find('a.deutsch').attr('href'));
			   $('a.italienisch').attr('href',$(contents[getHash(url)]).find('a.italienisch').attr('href'));
			   $('a.franz').attr('href',$(contents[getHash(url)]).find('a.franz').attr('href'));
			   // Titel umsetzen
			   document.title = $(contents[getHash(url)]).find('h1.title').html();
			   readyfn(parentid,duration);   
             });
  }

function click_openinfo() // onclick Ereigniss definieren
  { var parentid    = $(this).parents('div[id]').attr('id');
    var parentwidth = $('#'+parentid).css('width');
	
    var url         = this.attributes['href'].nodeValue;
    var selector    = ( parentid == 'referenz_teaser') ? '#' + parentid + ' .obenspalte' : '#' + parentid + ' .rechtespalte div';
    var duration    = 1730;

    if ( parentwidth == '572px' || parentwidth == '670px' ) // inhalt wechseln
      { if ( url == $('#' + parentid).attr('url') ) return false; // falls schon zu sehen nichts tun

	    // erst mal im Cache (Hash Val) laden
	    myload(url + ' ' + selector + ' > *',null,
		       function(){ // wenn fertig
                          $(selector).fadeOut(duration*.5, // erst schnell outfaden
		                    function(){ // wenn ausgefadet
							   maximieren(url,parentid,duration, // maximieren, kann die URL jetzt aus dem Cache verwenden
							     function(){ // wenn maximiert einfaden
								    $(selector).fadeIn(duration*.5); }); }); }); 
		if ( parentid == 'referenz_teaser' )
		  { $('.openinfo').removeClass('activ'); 
            $(this).addClass('activ').blur(); 
          }
									
      }
    else // maximierenmodus
      maximieren(url,parentid,duration,min_others);  
	  
	this.blur();
    return false;	   
  }
    
function click_aufzu() // onclick Ereigniss definieren
  { var parentid    = $(this).parents('div[id]').attr('id');
    var parentwidth = $('#'+parentid).css('width');	
	
    var ids         = new Array('teaser1','teaser2','teaser3');
    var duration    = 1730;
       
    if ( parentwidth == '572px' ) // minimierenmodus
      { // auf ueberblicksseite setzen
	    $('a.englisch').attr('href',$(contents[getHash(basisurl)]).find('a.englisch').attr('href'));
	    $('a.deutsch').attr('href',$(contents[getHash(basisurl)]).find('a.deutsch').attr('href'));
		$('a.italienisch').attr('href',$(contents[getHash(basisurl)]).find('a.italienisch').attr('href'));
		$('a.franz').attr('href',$(contents[getHash(basisurl)]).find('a.franz').attr('href'));
		// Titel umsetzen
		document.title = $(contents[getHash(basisurl)]).find('h1.title').html();
	    for ( var i = 0; i < ids.length; i++  ) 
	      sp_tomiddle(ids[i],duration);
	  }	  
    else // maximierenmodus
	  maximieren(this.attributes['href'].nodeValue,parentid,duration,min_others);
    
    this.blur();
	return false;      
  }
 
function click_wiederherstellen() // onclick Ereigniss definieren
  { var parentid    = $(this).parents('div[id]').attr('id');
	var parentwidth = $('#'+parentid).css('width');
	var ids         = new Array('teaser1','teaser2','teaser3');
    var duration   = 1730;
		 		 
	for ( var i = 0; i < ids.length; i++  ) 
		sp_tomiddle(ids[i],duration);
    
	this.blur();
	return false;	   
   } 
  	
// vorbereiten der unsichtbaren Linken Spalten in den Unterseiten also 
// #teaser1 .linkespalte, #teaser2 .linkespalte usw. 	
function prepareLinks( selector, basisurl )
  { $(selector).fadeOut(0, // die linke spalte ausfaden
                        function(){ //wenn fertig die rechte Spalte ebenfalls outfaden,. sonst sieht man den senkrechten Trenner
						            $(selector.replace('linke','rechte')).fadeOut(0);
									// dann den Content der linken Spalte holen
	                                myload( basisurl + ' ' + selector + ' > *',
		                                    selector,
											function(){ // wenn fertig die Javascriptfunktionen an die Links binden
											            $(selector +' .openinfo').click(click_openinfo);
														$(selector +' .aufzubutton').click(click_aufzu); 
														$(selector +' .wiederherstellen').click(click_wiederherstellen); });});
  }  

// onload
$(function()
   {  
	 // fuer alle mit der Klasse aufzubutton
     $('.aufzubutton').click(click_aufzu);
     $('.openinfo').click(click_openinfo);
	 $('.wiederherstellen').click(click_wiederherstellen);

	 var ids = new Array('teaser1','teaser2','teaser3');
	 	
     for ( var i=0; i < ids.length; i++ )
	 
	   // den Link bei der offenen auf die eigene Seite umsetzen
	   if ( $('#' + ids[i]).css('width') == '572px' )
	     { basisurl = $('#' + ids[i] + ' .aufzubutton').attr('href'); // link zur Uebersichtsseite in basisiurl speichern
		   $('#' + ids[i] + ' .aufzubutton').attr('href',location.href); // link auf die eigenen Seite umsetzen
		 } 
    
	// Falls auf einer Unterseite, d.h. eins ist von Anfang an offen	 
	 if ( basisurl )	 
	   { // dann die fehlenden linken Spalten nachholen
         for ( var i=0; i < ids.length; i++ )
	       if ( $('#' + ids[i]).css('width') != '572px' )
		     // fehlende linke Spalten holen und fadeOut  
		     prepareLinks('#' + ids[i] + ' .linkespalte',basisurl);
	   }
	 else basisurl = location.href;  
   } // Ende der onload Funktion
 );
 
 
  
