var NS4=0, IE4=0, ver4=0, isMac=0, sTrans=0;
var lastRollOver = new Array();
var d1=document;
var opac=0;
var mOpac=0;
var sTimer=0;
var fadeObj;
var scrTimer=0;
var speed=5;

ver = navigator.appVersion ;
DOM = document.getElementById ? 1 : 0; 
IE5 = ((ver.indexOf("MSIE 5")>-1) && DOM) ? 1 : 0; 
IE4 = (document.all) ? 1 : 0; 
NS5 = (DOM && parseInt(ver) >= 5) ? 1 : 0; 
NS4 = (document.layers && !DOM) ? 1 : 0; 
ver4 = (IE5 || IE4 || NS4 || NS5) ? 1 : 0;
OP = ((document.getElementById) && (navigator.userAgent.indexOf('Opera') != -1)) ? true : false

isMac = (navigator.appVersion.indexOf("Mac") != -1) ? 1 : 0;
sTrans = (NS4 || (IE4 && isMac)) ? 0 : 1;

if (NS4) {
	origWidth = innerWidth;
    origHeight = innerHeight;
}

function reDo() {
	if (innerWidth != origWidth || innerHeight != origHeight) {
		location.reload();
	}
}

if (NS4) onresize = reDo;

function blurHandler(e) {
	this.blur();
}

function doBlur() {
	for (i=0; i<document.links.length; i++) {
		target=eval("document.links[i]");
		target.onfocus=blurHandler;
	}
}

function loadImages() {
	var d=document;
    if (d.images) {
		if (!d.imageList) {
			d.imageList = new Array();
		}
		var i,j = d.imageList.length;
		a = loadImages.arguments;
		for (i=0; i<a.length; i++) {
			fnd = 0;
			for (k=0; k < d1.imageList.length; k++) {
				if (d1.imageList[k].src.indexOf(a[i]) > -1) {
					fnd = 1;
				}
			}

			if (fnd == 0) {
				d1.imageList[j]=new Image;
				d1.imageList[j++].src=a[i];
			}
		}
	}
	
	doBlur();
}

function changeInput(name, newSrc) {
	if (document.getElementById(name))
		document.getElementById(name).src = newSrc;
}


function exchangeImage(Img, NewSrc, DoRestore) {
	var d=document;
	if (d.images) {
		var theImage = FindImage(d, Img, 0)
		if (theImage) {
			if (!theImage.oldSrc) {
				theImage.oldSrc = theImage.src;
			}
			theImage.src = NewSrc;
			var cnt = lastRollOver.length;
			if ((DoRestore) && (cnt > 0)) {
				for (var i=0; i<cnt; i++) {
					var rImg = lastRollOver.pop();
					if (rImg != Img) {
						swapImageRestore(rImg);
					}
				}
			}
			cnt = lastRollOver.length;
			var fnd = false;
			for (var i=0; i<cnt; i++) {
				if (lastRollOver[i] == Img) {
					fnd = true;
					break;
				}
			}
			if (!fnd) {
				lastRollOver.push(Img);
			}
		}
	}
}

function restoreImage() {
	var d=document;
	
	var cnt = lastRollOver.length;
	for (var i=0; i<cnt; i++) {
		var rImg = lastRollOver.pop();
		if (d.lastClick) {
			if (rImg != d.lastClick) {
				swapImageRestore(rImg);
			}
		} else {
			swapImageRestore(rImg);
		}
	}
}

function clickImage() {
    var d=document;
	if (d.lastClick) {
		if (lastRollOver[lastRollOver.length-1] != d.lastClick) {
			swapImageRestore(d.lastClick);
		}
	}
	d.lastClick=lastRollOver[lastRollOver.length-1];
}


function swapImageRestore(Img) {
	var d=document;
	if (d.images) {
		var theImage = FindImage(d, Img, 0);
		if (theImage) {
			if (theImage.oldSrc) {
				theImage.src = theImage.oldSrc;
			}
		}
	}
}

function FindImage(doc, name, j) {
	var theImage = false;
	if (doc.images) {
		theImage = doc.images[name];
	}
	if (theImage) {
		return theImage;
	}
	if (doc.layers) {
		for (j = 0; j < doc.layers.length; j++) {
			theImage = FindImage(doc.layers[j].document, name, 0);
			if (theImage) {
				return (theImage);
			}
		}
	}
    return 0;
}

function doScroll(layerName, q) {
	var myLayer = getObj(layerName);
	if (ver4) {
		if (parseInt(speed) > 0) {
			if (parseInt(d1.curY) < 0) {
				d1.curY = parseInt(d1.curY + speed * q);
			} else {
				d1.lastScroll = 0;
			}
		} else {
	
			if (parseInt(d1.curY) > (parseInt(d1.endY) * -1) + 150) {
				d1.curY = parseInt(d1.curY + speed * q);
			} else {
				d1.lastScroll = 0;
			}
		}

		if (!d1.lastScroll) {
			stopScroll();
			return false;
//		} else {
//			scrTimer = setTimeout("doScroll('" + layerName + "', " + q + ")", 50);
		}
		myLayer.top = d1.curY + "px";
	}		
	return true;
}

function scrollLayer(layerName, how, fast, divName) {
	var myLayer = getObj(layerName);
	if (ver4) {
		if (d1.lastScroll) {
			return false;
		}
		d1.lastScroll = myLayer;
		d1.curY = parseInt(myLayer.top);
		if (divName) {
			if (divName == "cx") {
				d1.endY = 600;
			} else {

				for (i=0; i<document.anchors.length; i++) {
					if (document.anchors[i].name == divName) {
						pos = findPos(document.anchors[i]);
						d1.endY = pos[1] + 410 - d1.curY;
					}
				}
			}
		} else {
			d1.endY = getHeight(layerName);
		}
		
		q = 1;
		if (fast)
			q = 4;
		
		if (how == 'up') {
			speed = (speed < 0) ? speed * -1 : speed;
		} else {
			speed = (speed > 0) ? speed * -1 : speed;
		}
		scrTimer = setInterval("doScroll('" + layerName + "', " + q + ")", 50);
//		clearTimeout(scrTimer);
//		scrTimer = setTimeout("doScroll('" + layerName + "', " + q + ")", 50);
	}
	return true;
}

function stopScroll() {
	d1.lastScroll = 0;
	clearTimeout(scrTimer);
}
	
function getObj(name, parentObj) {
	if (parentObj == null) {
		parentObj = document;
	}
	if (document.getElementById) {
		return document.getElementById(name).style;
	} else if (document.all) {
		return document.all[name].style;
	} else if (document.layers) {
		if (!parentObj.layers[name]) {
			for (var i=0; i<parentObj.layers; i++) {
				return getObj(name, parentObj.layers[i]);
			}
		} else {
			return document.layers[name];
		}
	} else {
		return false;
	}
}

function getLayer(name) {
	if (document.getElementById) {
		return document.getElementById(name);
	} else if (document.all) {
		return document.all[name];
	} else if (document.layers) {
		if (!document.layers[name]) {
			for (var l=0; l<document.layers.count; l++) {
				if (document.layers[l].document.layers[name]) {
					return document.layers[l].document.layers[name];
				} else {
					for (var ll=0; ll<document.layers[l].document.layers.count; ll++) {
				
						if (document.layers[l].document.layers[ll].document.layers[name]) {
							return document.layers[l].document.layers[ll].document.layers[name];
						}
					}
				}
			}
		} else {
			return document.layers[name];
		}
	} else {
		return false;
	}
}

function setTop(layerObj) {
	if ( IE4 || NS5 || IE5 ) {
		layerObj.top = d1.curY + "px";
	} else {
		layerObj.clip.top = d1.curY;
	}
}

function getHeight(layerName) {
	layerObj = getLayer(layerName);
	if ( IE4 || NS5 || IE5 ) {
		var h = parseInt(layerObj.offsetHeight);
	} else if ( NS4 ) {
		var h = layerObj.height;
	}
	return h;
}

function checkScroll(buttonLayer, layerName) {
	if (getHeight(layerName) < 350) {
		hideLayer(buttonLayer);
	}
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop;
		}
	}
	return [curleft,curtop];
}


var scrollObj = {
	dragObj: false,
	layerObj: false,
	mouseOffset: false,
	boundsT: false,
	boundsB: false,
	layerT: false,
	layerH: false,
	scrollQ: false,
	curY: false,
	active: false,
	speed: 5,
	scrTimer: false,
	
	init: function(scrBack, scrLayer, dragBar, scrUp, scrDown) {
		scrBounds = getLayer(scrBack);
		this.dragObj = getLayer(dragBar);
		bUp = getLayer(scrUp);
		bDown = getLayer(scrDown);

		this.boundsT = this.dragObj.offsetTop;
		var boundsH = this.getHeight(scrBounds) - this.getHeight(this.dragObj);
	  
		this.boundsB = this.boundsT + boundsH;
		scrBounds.onmousedown = scrollObj.jump;

		bUp.onmousedown = scrollObj.scrollUp;
		bDown.onmousedown = scrollObj.scrollDown;
		
		this.layerObj = getLayer(scrLayer);
		var layerPos = this.getPosition(this.layerObj);
		this.layerT = this.layerObj.offsetTop;
		this.layerH = this.getHeight(this.layerObj);
		
		this.scrollQ = this.layerH / boundsH;
		
		
		document.onmousemove = scrollObj.mouseMove;
		document.onmouseup   = scrollObj.mouseUp;
		this.dragObj.onmousedown   = scrollObj.mouseDown;
		
		/** Initialization code. 
 		* If you use your own event management code, change it as required.
		*/
		if (window.addEventListener)
	        /** DOMMouseScroll is for mozilla. */
    	    window.addEventListener('DOMMouseScroll', scrollObj.wheel, false);
		/** IE/Opera. */
		window.onmousewheel = document.onmousewheel = scrollObj.wheel;
	},
	

/** Event handler for mouse wheel event.
 */
	wheel: function(event) {
        var delta = 0;
        if (!event) /* For IE. */
                event = window.event;
        if (event.wheelDelta) { /* IE/Opera. */
                delta = event.wheelDelta/120;
                /** In Opera 9, delta differs in sign as compared to IE.
                 */
                if (window.opera)
					delta = -delta;
        } else if (event.detail) { /** Mozilla case. */
                /** In Mozilla, sign of delta is different than in IE.
                 * Also, delta is multiple of 3.
                 */
                delta = -event.detail/3;
        }
        /** If delta is nonzero, handle it.
         * Basically, delta is now positive if wheel was scrolled up,
         * and negative, if wheel was scrolled down.
         */

        if (delta != 0) {
			scrollObj.active = true;
			scrollObj.curY = scrollObj.layerObj.offsetTop;
            scrollObj.doScroll(delta*20);
		}
        /** Prevent default actions caused by mouse wheel.
         * That might be ugly, but we handle scrolls somehow
         * anyway, so don't bother here..
         */
        if (event.preventDefault)
                event.preventDefault();
		event.returnValue = false;
	},


	getMouseOffset: function(target, ev) {
		ev = ev || window.event;
		var docPos    = this.getPosition(target);
		var mousePos  = this.mouseCoords(ev);
		return {x:mousePos.x - target.offsetLeft, y:mousePos.y - target.offsetTop};
	},

	mouseCoords: function(ev){
		if(ev.pageX || ev.pageY){
			return {x:ev.pageX, y:ev.pageY};
		}
		return {
			x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
			y:ev.clientY + document.body.scrollTop  - document.body.clientTop
		};
	},

	getPosition: function(e) {
		var left = 0;
		var top  = 0;

		while (e.offsetParent) {
			left += e.offsetLeft;
			top  += e.offsetTop;
			e     = e.offsetParent;
		}

		left += e.offsetLeft;
		top  += e.offsetTop;

		return {x:left, y:top};
	},

	getHeight: function(obj) {
		if ( IE4 || NS5 || IE5 ) {
			var h = parseInt(obj.offsetHeight);
		} else if ( NS4 ) {
			var h = obj.height;
		}
		return h;
	},

	mouseMove: function(ev) {
		ev           = ev || window.event;
		var mousePos = scrollObj.mouseCoords(ev);

		if (scrollObj.mouseOffset) {
			var newY = Math.max(scrollObj.boundsT, Math.min(scrollObj.boundsB, mousePos.y - scrollObj.mouseOffset.y));
			scrollObj.dragObj.style.position = 'absolute';
			scrollObj.dragObj.style.top = newY+'px';
			var diffY = newY - scrollObj.boundsT;
			layerY = 0 - scrollObj.scrollQ * diffY;
			scrollObj.layerObj.style.position = 'relative';
			scrollObj.layerObj.style.top = layerY+'px';
			
			return false;
		}
	},
	
	mouseUp: function() {
		scrollObj.mouseOffset = false;
		scrollObj.stopScroll();
	},

	mouseDown: function(ev) {
		if (!scrollObj.mouseOffset)
			scrollObj.mouseOffset = scrollObj.getMouseOffset(scrollObj.dragObj, ev);
		return false;
	},
	
	scrollUp: function(ev) {
		scrollObj.scrollLayer('up');
	},
		
	scrollDown: function(ev) {
		scrollObj.scrollLayer('down');
	},
	
	jump: function(ev) {
		ev           = ev || window.event;
		var mousePos  = scrollObj.mouseCoords(ev);
		var dragPos = scrollObj.getPosition(scrollObj.dragObj);
		
		var newY = 0;
		if (mousePos.y > (dragPos.y + scrollObj.getHeight(scrollObj.dragObj)))
			newY = -50;
		else if (mousePos.y < dragPos.y)
			newY = 50;
		if (newY != 0) {
			scrollObj.active = true;
			scrollObj.curY = scrollObj.layerObj.offsetTop;
			scrollObj.doScroll(newY);
		}
			
	},
	
	scrollLayer: function(how) {
		if (scrollObj.active) return false;
		
		scrollObj.active = true;
		scrollObj.curY = this.layerObj.offsetTop;
			
		if (how == 'up') {
			speed = (scrollObj.speed < 0) ? scrollObj.speed * -1 : scrollObj.speed;
		} else {
			speed = (scrollObj.speed > 0) ? scrollObj.speed * -1 : scrollObj.speed;
		}
		scrollObj.scrTimer = setInterval("scrollObj.doScroll(speed)", 50);
		return true;
	},
	
	doScroll: function(q) {
		var newY = Math.min(scrollObj.layerT, Math.max(scrollObj.layerH*-1, scrollObj.curY + q));
		if (scrollObj.curY + q != newY)
			scrollObj.active = false;
		
		scrollObj.curY = newY;
		scrollObj.layerObj.style.top = (scrollObj.curY-scrollObj.layerT)+'px';
		var newY = Math.max(scrollObj.boundsT, Math.min(scrollObj.boundsB, scrollObj.boundsT - (scrollObj.curY-scrollObj.layerT) / scrollObj.scrollQ));
		scrollObj.dragObj.style.top = newY+'px';
		if (!scrollObj.active) {
			scrollObj.stopScroll();
			return false;
		} else return true;
	},
	
	stopScroll: function() {
		scrollObj.active = false;
		clearTimeout(scrollObj.scrTimer);
	}
}

function eventLoader() {
	loadImages('fileadmin/templates/images/pfeil_oben_f2.jpg','fileadmin/templates/images/pfeil_unten_f2.jpg');
	scrollObj.init('scrollbar', 'cnt', 'sb-fader', 'sb-top', 'sb-bottom');
}

function doIntroAni(ix) {
	ix++;
	if (ix == 1)
		fadeIntroText();
	if (ix < 10)
		setTimeout('doIntroAni('+ix+')', 1000);
}

function getMovie(movieName) {
  var isIE = navigator.appName.indexOf("Microsoft") != -1;
  return (isIE) ? window[movieName] : document[movieName];
}


function canStart(mov) {
  fMovie = getMovie("anibig");
  if (fMovie) {
    fMovie.canStart("yes");
  }
}

function doStart(jFrame) {
  fMovie = getMovie("anismall");
  if (fMovie) {
    fMovie.doStart(jFrame);
  }
}

function showPrintPreview(lang) {
	this.lang = lang;
	var printWindow = window.open("fileadmin/templates/print_preview.html", "PrintPreview", "width=800,height=600");
	printWindow.focus();
}

function fadeIntroText() {
  //var flashBig = document.getElementById("flash-introbig");
  //if (flashBig)
  //   flashBig.style.display = "none";

  fadeObj = document.getElementById("introHeader");
     
  if (fadeObj) {
     doBlend(0);
   }
}

function doBlend(stp) {
	opac += 4;
	opac = (opac >= 100) ? 100 : opac;
	maxColor = 'E1';
	minColor = '66';

	cq = ((parseInt('0x'+maxColor) - parseInt('0x'+minColor)) / 100);
    	maxC = parseInt('0x'+maxColor);
     nxtC = parseInt(maxC - (opac * cq));
	fColor = nxtC.toString(16);

     fadeObj.style.color = '#'+fColor+fColor+fColor; 
	/*	
     		
	if (opac > 99) {
          stp++;          
          if (stp == 20) {
               fadeObj = document.getElementById("introText");
               fadeObj.style.display = "block";
               opac = 0;
          }
     }
	*/

	if (fadeObj.style.display = "none")
     	fadeObj.style.display = "block";
     	
     if (opac < 100) {
          nxt = "doBlend("+stp+")";
          window.setTimeout(nxt, 50);
	} else if (stp == 0) {
		fadeMenuText(1);
	}
	return true;
}

function fadeMenuText(Ix) {
	mObj = document.getElementById("menuTxt" + Ix);
	if (!mObj) return false;
	mOpac += 4;
	mOpac = (mOpac >= 100) ? 100 : mOpac;
	if (typeof mObj.style.opacity != 'undefined') {
		mObj.style.opacity = (mOpac / 100);
	} else if (typeof mObj.style.filter != 'undefined') {
    		mObj.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity='+mOpac+')';
	} else if (mObj.style.MozOpacity != null) {
		mObj.style.MozOpacity = (mOpac / 100);
	}
     if (mObj.style.display = "none")
     	mObj.style.display = "block";
	if (mOpac > 99) {
		mOpac = 0;
		Ix++;
		mObj = document.getElementById("menuTxt"+Ix);
		
     }
     if (Ix < 5) {
     	window.setTimeout('fadeMenuText('+Ix+')', 50);
     } else {
     	fadeObj = document.getElementById("introText");
          opac = 0;
          window.setTimeout('doBlend(1)', 50);
     }
     	
}

function createMarker(point,html) {
     var marker = new GMarker(point);
     GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(html);
     });
     return marker;
}

function showGoogleMap(lang) {
    if (GBrowserIsCompatible()) { 
      // Display the map, with some controls and set the initial location 
      var map = new GMap2(document.getElementById("map"));
      map.addControl(new GLargeMapControl());
      map.addControl(new GMapTypeControl());
      map.setCenter(new GLatLng(53.19247,8.50314),8);
      var getDir = (lang=='de') ? 'Route berechnen' : 'Get Directions';

      //var point = new GLatLng(53.19247,8.50314);
      var point = new GLatLng(53.192189,8.502742);
      var html = '<img src="fileadmin/templates/images/aljo-logo.jpg" border="0" width="92" height="60" /><br /><br/>';
      html += '<div style="width:250px;"><strong>Aljo Aluminium-Bau Jonuscheit GmbH</strong><br />';
      html += 'Gewerbestr. 2<br />27804 Berne<br />Germany<br />ph.: +49 (0)4406 - 44-0<br />';
      html += 'www.aljo.de<br/><br/>';      
      html += '<a href="http://maps.google.com/maps?f=q&source=s_q&hl='+lang+'&geocode=&q=Aljo+Gewerbestr.+2,+27804+Berne,+Germany&sll=52.093008,10.568848&sspn=10.605251,25.993652&ie=UTF8&ei=n7jTSe_xL4bAogPstIm9CA&cd=2&cid=53192622,8503349,3621690711183614253&li=lmd&z=14&iwloc=A&iwstate1=dir" target="_blank">'+getDir+'</a>';
      html += '</div>';
      
      var marker = createMarker(point,html);
      map.addOverlay(marker);
      marker.openInfoWindow(html);
    }
}


function showStartMenu(bTitles, bLinks, doAnimate) {
	var hasRequestedVersion = DetectFlashVer(8, 0, 0);
	var sStr = '';
	if (doAnimate)
		sStr = 'style="display:none"';
		
	// Check to see if the version meets the requirements for playback
	if (hasRequestedVersion) {
		for (i=0; i<bTitles.length; i++) {
			document.write('<div id="menuTxt'+(i+1)+'" '+sStr+' class="flash-menu">');
			AC_FL_RunContent(
				'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0',
				'width', '440',
				'height', '65',
				'src', 'fileadmin/templates/flash/home_button',
				'quality', 'high',
				'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
				'align', 'middle',
				'play', 'true',
				'loop', 'true',
				'scale', 'showall',
				'wmode', 'transparent',
				'devicefont', 'false',
				'id', 'menu'+i,
				'bgcolor', '#CCCCCC',
				'name', 'menu'+i,
				'menu', 'true',
				'allowFullScreen', 'false',
				'allowScriptAccess','always',
				'movie', 'fileadmin/templates/flash/home_button',
				'salign', '',
				'FlashVars', 'mtxt='+bTitles[i]+'&clickTag='+bLinks[i]
			); //end AC code
			document.write('</div>');
		}
	} else {
		for (i=0; i<bTitles.length; i++) {
			fName = bLinks[i].substr(0, bLinks[i].indexOf('.'));
			document.write('<div id="menuTxt'+(i+1)+'" '+sStr+' class="flash-menu">');
			document.write('<a href="'+bLinks[i]+'"><img src="fileadmin/templates/images/'+fName+'.jpg" alt="'+bTitles[i]+'" border="0" /></a>');
			document.write('</div>');
		}
	}	
}


