// Skripte für walter-oberste.de
// Version: 24.02.2006

/* GLOBALS */
var anim;
var anim_timer;
var counter =  2;
var anzahl  =  6;
var steps   =  10;
var fade    = true;

/****************************************** animate */
function animate() {
	
	if( anim_timer != null) 
		clearTimeout(anim_timer);

	if(fade) {		steps--;	}
	else 	{		steps++;	}
	if( steps<1 || steps>9) fade = !fade;
		
	if( steps<1) { // Bild tauschen
		anim.src="images/animiert/anim"+counter+".jpg";
		counter++;
		if(counter >anzahl) counter = 1;
		anim_timer=setTimeout("animate()",120);
	}
	else { // Filter heller
		if( anim && anim.style) { 
			if( anim.style.filter) {
				anim.style.filter = "alpha(opacity=" + (steps*10) + ")";
			} else {
				if( anim.style.MozOpacity != null)
					anim.style.MozOpacity = steps/10;
			}
		}
				
		if(steps == 10) {
			anim_timer=setTimeout("animate()", 3500);
		} else {
			anim_timer=setTimeout("animate()", 120);
		}
	}

}

/****************************************** setBigPic disable/enable */
function fillDiaHash() {
	diahash.set( "trocken1kl", "g_trocken1.jpg");
	diahash.set( "trocken2kl", "g_trocken2.jpg");
	diahash.set( "trocken3kl", "g_trocken3.jpg");
	diahash.set( "trocken4kl", "g_trocken4.jpg");
	diahash.set( "trocken5kl", "g_trocken5.jpg");
	diahash.set( "trocken6kl", "g_trocken6.jpg");
	diahash.set( "trocken8kl", "g_trocken8.jpg");
	diahash.set( "trocken20kl", "g_trocken20.jpg");
	diahash.set( "trocken30kl", "g_trocken30.jpg");
	diahash.set( "steinhaufen2kl", "g_steinhaufen2.jpg");
	
	diahash.set( "verblend1kl", "g_verblend1.jpg");
	diahash.set( "verblend2kl", "g_verblend2.jpg");
	diahash.set( "verblend4kl", "g_verblend4.jpg");
	diahash.set( "abdeck1kl", "g_abdeck1.jpg");
	diahash.set( "abdeck2kl", "g_abdeck2.jpg");
	
	diahash.set( "palisade2kl", "g_palisade2.jpg");
	diahash.set( "palisade3kl", "g_palisade3.jpg");
	diahash.set( "palisade4kl", "g_palisade4.jpg");
	diahash.set( "palisade6kl", "g_palisade6.jpg");
	diahash.set( "palisade10kl", "g_palisade10.jpg");
	
	diahash.set( "poly1kl", "g_poly1.jpg");
	diahash.set( "poly2kl", "g_poly2.jpg");
	diahash.set( "poly3kl", "g_poly3.jpg");
	diahash.set( "poly4kl", "g_poly4.jpg");
	diahash.set( "bahn1kl", "g_bahn1.jpg");
	diahash.set( "bahn2kl", "g_bahn2.jpg");
	diahash.set( "tosca1kl", "g_tosca1.jpg");
	diahash.set( "boden10kl", "g_boden10.jpg");
	diahash.set( "bodenbel1kl", "g_bodenbel1.jpg");
	diahash.set( "gruenes3kl", "g_gruenes3.jpg");
	
	diahash.set( "pflas1kl", "g_pflas1.jpg");
	diahash.set( "pflas2kl", "g_pflas2.jpg");
	diahash.set( "pflas4kl", "g_pflas4.jpg");
	diahash.set( "pflas5kl", "g_pflas5.jpg");
	
	diahash.set( "trepp1kl", "g_trepp1.jpg");
	diahash.set( "trepp2kl", "g_trepp2.jpg");
	diahash.set( "trepp3kl", "g_trepp3.jpg");
	diahash.set( "trepp4kl", "g_trepp4.jpg");
	diahash.set( "trepp5kl", "g_trepp5.jpg");
	diahash.set( "trepp6kl", "g_trepp6.jpg");
	diahash.set( "trepp9kl", "g_trepp9.jpg");
	diahash.set( "fbank2kl", "g_fbank2.jpg");
	
	diahash.set( "fels1kl", "g_fels1.jpg");
	diahash.set( "fels3kl", "g_fels3.jpg");
	diahash.set( "fels4kl", "g_fels4.jpg");
	diahash.set( "fels5kl", "g_fels5.jpg");
	diahash.set( "fels6kl", "g_fels6.jpg");
	diahash.set( "fels14kl", "g_fels14.jpg");
	
	diahash.set( "teich1kl", "g_teich1.jpg");
	diahash.set( "teich2kl", "g_teich2.jpg");
	diahash.set( "teich4kl", "g_teich4.jpg");
	diahash.set( "teich7kl", "g_teich7.jpg");
	diahash.set( "teich14kl", "g_teich14.jpg");

	diahash.set( "schuett1kl", "g_schuett1.jpg");
	diahash.set( "schuett2kl", "g_schuett2.jpg");
	diahash.set( "schuett3kl", "g_schuett3.jpg");
	
	diahash.set( "grab1kl", "g_grab1.jpg");
	diahash.set( "grab2kl", "g_grab2.jpg");
	diahash.set( "grab3kl", "g_grab3.jpg");
	diahash.set( "grab5kl", "g_grab5.jpg");
	
	diahash.set( "divers0kl", "g_divers0.jpg");
	diahash.set( "divers1kl", "g_divers1.jpg");
	diahash.set( "divers2kl", "g_divers2.jpg");
	diahash.set( "divers4kl", "g_divers4.jpg");
	diahash.set( "divers5kl", "g_divers5.jpg");
	diahash.set( "divers8kl", "g_divers8.jpg");
	diahash.set( "divers9kl", "g_divers9.jpg");
	diahash.set( "divers71kl", "g_divers71.jpg");
	diahash.set( "gabionen1kl", "g_gabionen1.jpg");
}

function fillAboutHash() {
	abouthash.set( "wir0kl", "g_wir0.jpg");
	abouthash.set( "wir1kl", "g_wir1.jpg");
	abouthash.set( "wir2kl", "g_wir2.jpg");
	abouthash.set( "wir3kl", "g_wir3.jpg");
	abouthash.set( "wir4kl", "g_wir4.jpg");
	abouthash.set( "schild_wo_kg_kl", "schild_wo_kg.jpg");
	abouthash.set( "index1a_kl", "g_index1a.jpg");
	abouthash.set( "index1b_kl", "g_index1b.jpg");

}

function setBigPic( elemID) {
	var targy = document.getElementById( 'prodLay');
	var liste = diahash.keys();
	
	for( i=0; i < liste.length; i++) {
		var obj = document.getElementById( liste[i]);
		if( obj == null) continue;
		if( liste[i] == elemID) {
			disOrEnable( liste[i], false);
			targy.src = bigpicpath + diahash.get( elemID);
		} else {
			disOrEnable( liste[i], true);
		}
	}
}

/* Funktional dasselbe wie setBigPic.
Es geht nur darum, nicht alle Bilder im selben Ordner zu halten und
nicht alle Hashes in der selben Liste.
?? Das geht auch eleganter, wenn wir mal Zeit haben! 
*/
function setAboutPic( elemID) {
	var targy = document.getElementById( 'aboutBig');
	var liste = abouthash.keys();
	
	for( i=0; i < liste.length; i++) {
		var obj = document.getElementById( liste[i]);
		if( obj == null) continue;
		if( liste[i] == elemID) {
			disOrEnable( liste[i], false);
			targy.src = aboutpath + abouthash.get( elemID);
		} else {
			disOrEnable( liste[i], true);
		}
	}
}

function disOrEnable( elemID, enably) {
	var obj = document.getElementById(elemID);
	var opac = 50;
	if( enably == true) opac = 100;
	
	if( obj.style.filter) {
		obj.style.filter="alpha(opacity="+ opac +")";
	} else {
		if( obj.style.MozOpacity) {
			obj.style.MozOpacity =  ( opac/100);
		}
	}
}

/****************************************** MenuControl */
function MenuControl( haesh) {
	this.menuHash = new Array();
	this.keys = new Array();
	if( haesh.getClass == 'Hash') {
		this.menuHash = haesh;
		this.keys = haesh.keys();
	}

	this.menu_timer = null;
	
	//////////// Method display
	this.display = function( elemId) {
		// Timer löschen (Ausblenden abbrechen) 
		if( this.menu_timer !=null) {
			clearTimeout( this.menu_timer);
			this.menu_timer = null;
		}
		
		// Blende alle Ebenen aus, außer der aktuell gewählten 
		for( i=0; i < this.keys.length; i++) {
			var itam = document.getElementById( this.menuHash.get( this.keys[i] ) );
			
			if( itam == null) continue;
			
			if( this.keys[i] == elemId) {
				var sichtbar = itam.style.display=='block'; // s.u.
				itam.style.display = 'block';
	
				// Fading der Ebene, aber nur, wenn noch nicht sichtbar, da sonst ein Flackern zu sehen ist
				if(!sichtbar) {
					this.fadeMenu(this.menuHash.get( this.keys[i] ));
				}
				//itam.style.visibility = "visible";
			}
			else {
				itam.style.display = 'none';
				//itam.style.visibility = "hidden";
			}
		}
		
		if( inArray( this.keys, elemId) ) {
			this.menu_timer = setTimeout("MCObj.display('')", 3000);
		}
	}
	/**
	 * Fader-Funktion für Menü
	 * @author D. Deertz
	 * @param id	Die ID (NICHT das Objekt) der zu fadenden Ebene
	*/
	this.fadeMenu = function(id) {
		var styleText;
		if(document.all) {
			document.getElementById( id ).style.filter = "alpha(opacity=0)";
		}
		else {
			document.getElementById( id ).style.MozOpacity="0";
		}
		for(var j=1;j<=10;j++) {
			if(document.all) {
				styleText = "filter ='alpha(opacity="+(j*10)+")'";
			}
			else {
				styleText = "MozOpacity=" + j/10;
			}
			setTimeout("document.getElementById('"+ id +"' ).style."+ styleText ,40*j);
		}
	}
	
}

/****************************************** inArray */
function inArray( arry, elem) {
	for( var cand in arry) {
		if( String( arry[cand]) == String( elem) ) {
			return true;
		}
	}
	return false;
}

/****************************************** Hash */
function Hash()
{
	this.arr = new Array();
	this.getClass = 'Hash';
	this.elems = 0;
	
	this.set = function( name, value) {
		this.arr[name] = value;
		++this.elems;
		return this.get( name);
	}
	
	this.get = function( name) {
		return this.arr[name];
	}
	
	// methodname delete() is forbidden in JS
	this.kill = function( name) {
		var tmpArr = new Array();
		var count = false;
		for( var key in this.arr) {
			if( String( key) == String( name) ) {
				count = true;
			} else {
				tmpArr[key] =  this.arr[key];
			}
		}
		if( count)
			this.arr = tmpArr;
		
		return count;
	}
	
	this.keys = function() {
		var tmpArr = new Array();
		for( var key in this.arr) {
			tmpArr.push( key);
		}
		return tmpArr;
	}
	
	this.exists = function( name) {
		return inAssoc( this.arr, name);
	}
	
}

/****************************************** checkEmpty */
/** Prüfe Feld auf Leere - weicht ab von anderen ähnlichen Funktionen!
	@param id die ID des Textelementes
 */
function checkEmpty(id) {
	var src = document.getElementById(id);
	if(src == null) return true; //prüfe keine nichtexistenten Felder
	var inhalt = src.value;
	inhalt = inhalt.replace(/\s/,"");
	if (inhalt.length == 0)
	{	
		src.focus();
		return false;
	}
	return true;
}

/****************************************** DD_openWindow */
function DD_openWindow(url, breite, hoehe) {
	var MyWindow = null;
	MyWindow = open (url, "Win", "toolbar=0,location=0,scrollbars=0, resizable=1,width="+breite+",height="+hoehe);
	MyWindow.focus();
}

/*
function showPic (source,bild,ebene) {
	if(bild==null) bild = "leer";  //Defaultname
	if(ebene==null) ebene="Layer1"; //Defaultname
	MM_swapImage(bild,'','images/leer.gif',1); //nötig???
	MM_swapImage(bild,'',source,1);
	DD_setLayerPosition(ebene,0, 50, 70, 1)
	MM_showHideLayers(ebene,'','show');
	return false;
}
*/
/****************************************** Macromedia  ******************************************/
/*
function MM_showHideLayers() { //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
    obj.visibility=v; }
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_dragLayer(objName,x,hL,hT,hW,hH,toFront,dropBack,cU,cD,cL,cR,targL,targT,tol,dropJS,et,dragJS) {
//v4.01, AUS DW MX
  //Copyright 1998 Macromedia, Inc. All rights reserved.
  var i,j,aLayer,retVal,curDrag=null,curLeft,curTop,IE=document.all,NS4=document.layers;
  var NS6=(!IE&&document.getElementById), NS=(NS4||NS6); if (!IE && !NS) return false;
  retVal = true; if(IE && event) event.returnValue = true;
  if (MM_dragLayer.arguments.length > 1) {
    curDrag = MM_findObj(objName); if (!curDrag) return false;
    if (!document.allLayers) { document.allLayers = new Array();
      with (document) if (NS4) { for (i=0; i<layers.length; i++) allLayers[i]=layers[i];
        for (i=0; i<allLayers.length; i++) if (allLayers[i].document && allLayers[i].document.layers)
          with (allLayers[i].document) for (j=0; j<layers.length; j++) allLayers[allLayers.length]=layers[j];
      } else {
        if (NS6) { var spns = getElementsByTagName("span"); var all = getElementsByTagName("div"); 
          for (i=0;i<spns.length;i++) if (spns[i].style&&spns[i].style.position) allLayers[allLayers.length]=spns[i];}
        for (i=0;i<all.length;i++) if (all[i].style&&all[i].style.position) allLayers[allLayers.length]=all[i]; 
    } }
    curDrag.MM_dragOk=true; curDrag.MM_targL=targL; curDrag.MM_targT=targT;
    curDrag.MM_tol=Math.pow(tol,2); curDrag.MM_hLeft=hL; curDrag.MM_hTop=hT;
    curDrag.MM_hWidth=hW; curDrag.MM_hHeight=hH; curDrag.MM_toFront=toFront;
    curDrag.MM_dropBack=dropBack; curDrag.MM_dropJS=dropJS;
    curDrag.MM_everyTime=et; curDrag.MM_dragJS=dragJS;
    curDrag.MM_oldZ = (NS4)?curDrag.zIndex:curDrag.style.zIndex;
    curLeft= (NS4)?curDrag.left:(NS6)?parseInt(curDrag.style.left):curDrag.style.pixelLeft; 
    if (String(curLeft)=="NaN") curLeft=0; curDrag.MM_startL = curLeft;
    curTop = (NS4)?curDrag.top:(NS6)?parseInt(curDrag.style.top):curDrag.style.pixelTop; 
    if (String(curTop)=="NaN") curTop=0; curDrag.MM_startT = curTop;
    curDrag.MM_bL=(cL<0)?null:curLeft-cL; curDrag.MM_bT=(cU<0)?null:curTop-cU;
    curDrag.MM_bR=(cR<0)?null:curLeft+cR; curDrag.MM_bB=(cD<0)?null:curTop+cD;
    curDrag.MM_LEFTRIGHT=0; curDrag.MM_UPDOWN=0; curDrag.MM_SNAPPED=false; //use in your JS!
    document.onmousedown = MM_dragLayer; document.onmouseup = MM_dragLayer;
    if (NS) document.captureEvents(Event.MOUSEDOWN|Event.MOUSEUP);
  } else {
    var theEvent = ((NS)?objName.type:event.type);
    if (theEvent == 'mousedown') {
      var mouseX = (NS)?objName.pageX : event.clientX + document.body.scrollLeft;
      var mouseY = (NS)?objName.pageY : event.clientY + document.body.scrollTop;
      var maxDragZ=null; document.MM_maxZ = 0;
      for (i=0; i<document.allLayers.length; i++) { aLayer = document.allLayers[i];
        var aLayerZ = (NS4)?aLayer.zIndex:parseInt(aLayer.style.zIndex);
        if (aLayerZ > document.MM_maxZ) document.MM_maxZ = aLayerZ;
        var isVisible = (((NS4)?aLayer.visibility:aLayer.style.visibility).indexOf('hid') == -1);
        if (aLayer.MM_dragOk != null && isVisible) with (aLayer) {
          var parentL=0; var parentT=0;
          if (NS6) { parentLayer = aLayer.parentNode;
            while (parentLayer != null && parentLayer.style.position) {             
              parentL += parseInt(parentLayer.offsetLeft); parentT += parseInt(parentLayer.offsetTop);
              parentLayer = parentLayer.parentNode;
          } } else if (IE) { parentLayer = aLayer.parentElement;       
            while (parentLayer != null && parentLayer.style.position) {
              parentL += parentLayer.offsetLeft; parentT += parentLayer.offsetTop;
              parentLayer = parentLayer.parentElement; } }
          var tmpX=mouseX-(((NS4)?pageX:((NS6)?parseInt(style.left):style.pixelLeft)+parentL)+MM_hLeft);
          var tmpY=mouseY-(((NS4)?pageY:((NS6)?parseInt(style.top):style.pixelTop) +parentT)+MM_hTop);
          if (String(tmpX)=="NaN") tmpX=0; if (String(tmpY)=="NaN") tmpY=0;
          var tmpW = MM_hWidth;  if (tmpW <= 0) tmpW += ((NS4)?clip.width :offsetWidth);
          var tmpH = MM_hHeight; if (tmpH <= 0) tmpH += ((NS4)?clip.height:offsetHeight);
          if ((0 <= tmpX && tmpX < tmpW && 0 <= tmpY && tmpY < tmpH) && (maxDragZ == null
              || maxDragZ <= aLayerZ)) { curDrag = aLayer; maxDragZ = aLayerZ; } } }
      if (curDrag) {
        document.onmousemove = MM_dragLayer; if (NS4) document.captureEvents(Event.MOUSEMOVE);
        curLeft = (NS4)?curDrag.left:(NS6)?parseInt(curDrag.style.left):curDrag.style.pixelLeft;
        curTop = (NS4)?curDrag.top:(NS6)?parseInt(curDrag.style.top):curDrag.style.pixelTop;
        if (String(curLeft)=="NaN") curLeft=0; if (String(curTop)=="NaN") curTop=0;
        MM_oldX = mouseX - curLeft; MM_oldY = mouseY - curTop;
        document.MM_curDrag = curDrag;  curDrag.MM_SNAPPED=false;
        if(curDrag.MM_toFront) {
          eval('curDrag.'+((NS4)?'':'style.')+'zIndex=document.MM_maxZ+1');
          if (!curDrag.MM_dropBack) document.MM_maxZ++; }
        retVal = false; if(!NS4&&!NS6) event.returnValue = false;
    } } else if (theEvent == 'mousemove') {
      if (document.MM_curDrag) with (document.MM_curDrag) {
        var mouseX = (NS)?objName.pageX : event.clientX + document.body.scrollLeft;
        var mouseY = (NS)?objName.pageY : event.clientY + document.body.scrollTop;
        newLeft = mouseX-MM_oldX; newTop  = mouseY-MM_oldY;
        if (MM_bL!=null) newLeft = Math.max(newLeft,MM_bL);
        if (MM_bR!=null) newLeft = Math.min(newLeft,MM_bR);
        if (MM_bT!=null) newTop  = Math.max(newTop ,MM_bT);
        if (MM_bB!=null) newTop  = Math.min(newTop ,MM_bB);
        MM_LEFTRIGHT = newLeft-MM_startL; MM_UPDOWN = newTop-MM_startT;
        if (NS4) {left = newLeft; top = newTop;}
        else if (NS6){style.left = newLeft; style.top = newTop;}
        else {style.pixelLeft = newLeft; style.pixelTop = newTop;}
        if (MM_dragJS) eval(MM_dragJS);
        retVal = false; if(!NS) event.returnValue = false;
    } } else if (theEvent == 'mouseup') {
      document.onmousemove = null;
      if (NS) document.releaseEvents(Event.MOUSEMOVE);
      if (NS) document.captureEvents(Event.MOUSEDOWN); //for mac NS
      if (document.MM_curDrag) with (document.MM_curDrag) {
        if (typeof MM_targL =='number' && typeof MM_targT == 'number' &&
            (Math.pow(MM_targL-((NS4)?left:(NS6)?parseInt(style.left):style.pixelLeft),2)+
             Math.pow(MM_targT-((NS4)?top:(NS6)?parseInt(style.top):style.pixelTop),2))<=MM_tol) {
          if (NS4) {left = MM_targL; top = MM_targT;}
          else if (NS6) {style.left = MM_targL; style.top = MM_targT;}
          else {style.pixelLeft = MM_targL; style.pixelTop = MM_targT;}
          MM_SNAPPED = true; MM_LEFTRIGHT = MM_startL-MM_targL; MM_UPDOWN = MM_startT-MM_targT; }
        if (MM_everyTime || MM_SNAPPED) eval(MM_dropJS);
        if(MM_dropBack) {if (NS4) zIndex = MM_oldZ; else style.zIndex = MM_oldZ;}
        retVal = false; if(!NS) event.returnValue = false; }
      document.MM_curDrag = null;
    }
    if (NS) document.routeEvent(objName);
  } return retVal;
}
*/
