/* BW Bildergalerie V 0.5 */

var g = {
	imgArr: [],
	descArr: [],
	lbImgs: [],
	thumbImgs: [],
	index: [],
	pPos: 0,
	zl: 0,
	rubrik: '',	
	isIE6: false,
	// baseUrl: "http://bwpreview.selbstdenker.com",	
	// baseUrl: "http://www.bestwestern.de",	
	baseUrl: "",	
	
	init: function() {		
		if ($('port')) {
			g.isIE6 = !window.opera && (navigator.userAgent.indexOf('MSIE') != -1) && !window.XMLHttpRequest;

			g.index['hotel'] = 0;
			
			if (typeof(imageUrlArray_hotel) != "undefined")
				g.imgArr = imageUrlArray_hotel;
			g.index['zimmer'] = g.imgArr.length;
			
			if (typeof(imageUrlArray_zimmer) != "undefined")
				g.imgArr = g.imgArr.concat(imageUrlArray_zimmer);
			g.index['gastronomie'] = g.imgArr.length;
			
			if (typeof(imageUrlArray_gastronomie) != "undefined")
				g.imgArr = g.imgArr.concat(imageUrlArray_gastronomie);
			g.index['tagung'] = g.imgArr.length;
			
			if (typeof(imageUrlArray_tagung) != "undefined")
				g.imgArr = g.imgArr.concat(imageUrlArray_tagung);
			g.index['umfeld'] = g.imgArr.length;
			
			if (typeof(imageUrlArray_umfeld) != "undefined")
				g.imgArr = g.imgArr.concat(imageUrlArray_umfeld);
			
			if (typeof(descArray_hotel) != "undefined")
				g.descArr = descArray_hotel;
				
			if (typeof(descArray_zimmer) != "undefined")
				g.descArr = g.descArr.concat(descArray_zimmer); 
				
			if (typeof(descArray_gastronomie) != "undefined")
				g.descArr = g.descArr.concat(descArray_gastronomie);
				
			if (typeof(descArray_tagung) != "undefined")
				g.descArr = g.descArr.concat(descArray_tagung);
				
			if (typeof(descArray_umfeld) != "undefined")
				g.descArr = g.descArr.concat(descArray_umfeld);
			
			g.port = $('port');
			g.zoomer = $('zoomer');
			
			g.preloadImages();
			
			g.rubrik = (typeof(loadgallery) != "undefined" ? loadgallery : ''); 
			g.navigation();		
			g.displayGallery();
		}
	},
	
	load: function(r, event) {
		// Menupunkt der Navi selektieren
		if (r == '') {
  		g.rubrik = "hotel";
			$('gallerynav').select('li.first')[0].addClassName('selected');
	  }
		else {
			g.rubrik = r;
			$('gallerynav').select('li').each(function(item) {
				if (item.select('a')[0].readAttribute('title') != null) {
					var ref = item.select('a')[0].readAttribute('title').toLowerCase();
					if (ref.indexOf(g.rubrik) != -1) {
						item.addClassName('selected');
					}
				}
			});
		}

		
		// Wenn es noch keine Preview gibt, dann wird diese angelegt
		if (!$('prevlist')) {
	  	var pUL = document.createElement('ul');
	  	pUL.id = "prevlist";
	  	g.prevlist = pUL;
									
	  	g.thumbImgs.each(function(thumb, index){			
			
				// Link anlegen
				var pLink = document.createElement('a');
				pLink.setAttribute("title", g.descArr[index]);	
				
				// Event auf Preview Link legen
				g.loadPreviewLink(pLink, index);
												
				var pDIV = document.createElement('div'); // umschliessendes DIV
				pDIV.className = "tc";				
				
				var pLI = document.createElement('li'); // LI für die Liste
				
				// und alles in die UL einhängen
				pLink.appendChild(thumb);				
				pDIV.appendChild(pLink);
				pLI.appendChild(pDIV);
				pUL.appendChild(pLI);			
			});
			
			if (g.port.select('ul').length > 0) {
				g.port.removeChild(port.childNodes[0]);
			}			
			g.port.appendChild(pUL); // UL in den Viewport Container setzen
			
			g.loadPrevLeftRight(); // link - rechts blättern
			g.prev3.addClassName("deact");
			if (g.imgArr.length <= 3) {
				g.next3.addClassName("deact");
			}
			else {
				if (g.next3.hasClassName("deact")) g.next3.removeClassName("deact");
			}			
		}
		
		// Preview je nach gewählter Rubrik hin und her bewegen
		var iZiel = g.index[g.rubrik];
		var newPos = -((iZiel - 1) * 108);		
	  if (newPos < g.pPos) {			
			g.movePreviewBy(-(g.pPos - newPos), event); // Bewegung nach links - negativer Wert
		}
		else {			
			g.movePreviewBy((newPos - g.pPos), event); // Bewegung nach rechts - positiver Wert
		}		
		
		// Div für Lightbox erzeugen
		if ($('lightboxDiv')) {
			$('lbc').removeChild($('lightboxDiv'));
		}
		
		g.createLightBoxDiv(iZiel);
		
		// erstes Bild der Rubrik anzeigen außer beim erstenmal
		if(g.zl != 0) {
			g.showMediumImg(iZiel);
		}
		g.zl = 1;
		g.prevlist.select('a').each(function(l) {
			if (l.hasClassName) l.removeClassName("selected");
		});
		g.prevlist.select('a')[iZiel].addClassName("selected");
	},
	
	loadPreviewLink: function(pLink, index) {
		Event.observe(pLink, 'click', function(event) {							
			g.showMediumImg(index); // mittleres Bild anzeigen
			
			// ausgewähltes Img mit einem Rahmen versehen
			g.port.select('a').each(function(lnk){
				lnk.removeClassName("selected");
			});
			
			pLink.addClassName("selected");
			pLink.blur();
			
			var diff = event.pointerX() - g.port.cumulativeOffset().left;
			if (diff < 108) { // linkes Bild angeklickt
				g.movePreviewBy(108, event);
			}
			else if (diff > 216) { // rechtes Bild angeklickt
				g.movePreviewBy(-108, event);
			}			
		});
	},
	
	// Bild der Einzelbildvorschau anzeigen
  showMediumImg: function(i) {	
		var desc = g.descArr[i];
		
		var allItems = $$('#lightboxDiv a');				
		allItems.each(function(lnk, index) {
			var img = lnk.select('img')[0];	
			if (typeof(img) != "undefined") {
				lnk.removeChild(img);
			}
		});
		
		var currentItem = allItems[i];		
		var vImg = g.lbImgs[i];		
		
		if (currentItem.select('img').length > 0) {
			currentItem.removeChild(currentItem.select('img')[0]);
		}
		currentItem.appendChild(vImg);
		currentItem.appendChild(g.zoomer);
		
		var caption = $('imgcaption'); // Bilduntertitel
		if (caption.childNodes.length > 0) {
			caption.removeChild(caption.childNodes[0]);
		}	

		if (desc != "") {
			var descText = document.createTextNode(desc);
			caption.appendChild(descText);
		}			
		g.loadImgLeftRight(i); // Navigation anfügen
	},
	
	// Navigation der Einzelvorschau < vorheriges - nächstes Bild >
	loadImgLeftRight: function(i) {
		g.prevImg = $('previmg');
		g.nextImg = $('nextimg');	
		var lastIndex = i - 1;
		var nextIndex = i + 1;
	
		if (i == 0) {
			g.prevImg.href = "#"; 
			g.prevImg.addClassName('deact');
		}
		else if (i > 0) {
			g.prevImg.href = "javascript:g.showMediumImg(" + lastIndex + ")";
			g.prevImg.removeClassName('deact');
		}
	
		if (i == g.imgArr.length-1) {
			g.nextImg.href = "#";
			g.nextImg.addClassName('deact');
		}	
		else if (i < g.imgArr.length-1) {
			g.nextImg.href = "javascript:g.showMediumImg(" + nextIndex + ")";
			g.nextImg.removeClassName('deact');
		}	
	
		g.prevImg.observe('focus', function(event) {
			g.prevImg.blur();
		});
		g.nextImg.observe('focus', function(event) {
			g.nextImg.blur();
		});
	},
	
	// Preview Navigation < links - rechts >
  loadPrevLeftRight: function() {
		g.prev3 = $("prev3");
		g.next3 = $("next3");
		
		g.prev3.stopObserving('click');
		g.next3.stopObserving('click');
		
		g.prev3.observe('focus', function(event) {
			g.prev3.blur();
		});	
		g.next3.observe('focus', function(event) {
			g.next3.blur();
		});	
		g.prev3.observe('click', function(event) {
			g.movePreviewBy(324, event);
		});	
		g.next3.observe('click', function(event) {
			g.movePreviewBy(-324, event);
		});
	},
	
	// Bilderleiste der Thumbnail-Vorschau bewegen
  movePreviewBy: function(val, event) {	
		if (event) g.cancelEvents();		
		
		var posL = g.pPos;	
		var l = g.imgArr.length * 108 - 324; 	// Länge der Bilderreihe	
	
		if (val < 0 && (posL + val) < -l) { // negativer Wert = Bewegung nach links
			val = -(l + posL);
		}	
		else  if (val > -posL)  val = -posL;
		
		new Effect.MoveBy(g.prevlist, 0, val);	
		g.pPos = g.pPos + val;
		
		// < links - rechts > Pfeile bei Position 0 und l ausblenden
		if (g.prevlist.positionedOffset().left + val == 0) {
			g.prev3.addClassName("deact");
		}
		else {
			g.prev3.removeClassName("deact");
		}
		if (g.prevlist.positionedOffset().left + val == -l) {
	  	g.next3.addClassName("deact");
	  }
		else {
			if (g.imgArr.length > 3) {
				g.next3.removeClassName("deact");
			}
		}		
		if (event) g.activateEvents();		
	},
	
	cancelEvents: function() {
		g.prev3.stopObserving('click');
		g.next3.stopObserving('click');
		g.port.select('a').each(function(lnk){
			lnk.stopObserving('click');
		});
		
		$('gallerynav').select('a').each(function(lk){
			lk.stopObserving('click');
		});		
	},
	
	activateEvents: function() {
		var timeout_ID = window.setTimeout(function() {
			g.loadPrevLeftRight();
			g.port.select('a').each(function(lnk, index){
				g.loadPreviewLink(lnk, index);
			});
			g.navigation();
		}, 1000);
	},
	
	navigation: function() {
		var allItems = $('gallerynav').select('li');
		allItems.each(function(li) {
			var navlink = li.select('a')[0];
			var ref = navlink.readAttribute('title');
			if (ref != null && ref.indexOf("Bildergalerie") != -1) {
				var parts = ref.split(" ");				
				var rubrik = parts[parts.length-1].toLowerCase();			
				navlink.observe('click', function(event){					
					g.load(rubrik, event);
					allItems.each(function(ll){
						if(ll.hasClassName('selected')) {
							ll.removeClassName('selected');
						}
					});	
					navlink.blur();
					li.addClassName('selected');
				});
			}
		});
	}, 
	
	createLightBoxDiv: function(i) {		
		var lbc = $('lbc');		
		
		var lightboxDiv = document.createElement("div");
		lightboxDiv.setAttribute('id','lightboxDiv');			
		
		g.imgArr.each(function(url, index){
			
			// Link anlegen
			var vLink = document.createElement('a');
			vLink.href = g.baseUrl + url.replace(/web271/g, "web757");
			vLink.setAttribute("title", g.descArr[index]);
			
			var zoomspan = lbc.select('span.zoom')[0];
			
			var nodes  = $A(vLink.getElementsByTagName('span')).map(Element.extend);
			if (nodes.length > 0) {
				nodes.each(function(sp) {
					vLink.removeChild(sp);
				});
			}		
			vLink.setAttribute("rel", "lightbox[all]");
			lightboxDiv.appendChild(vLink);		
		});
		
		$('lbc').appendChild(lightboxDiv);
		// Fix fuer IE 8
		if (typeof(myLightbox) == "undefined") {
			myLightbox = new Lightbox();
		}		
		myLightbox.updateImageList();
	},
	
	preloadImages: function() {					
  	g.imgArr.each(function(url, index){		
			g.lbImgs[index] = new Image();
			g.thumbImgs[index] = new Image();
			
			g.lbImgs[index].src = g.baseUrl + url;			
			g.thumbImgs[index].src = g.baseUrl + url.replace(/web271/g, "web100");
			
			g.lbImgs[index].setAttribute("alt", g.descArr[index]);
			g.thumbImgs[index].setAttribute("alt", g.descArr[index]);
			
			// hier Funktion zum Skalieren der Bilder für IE6 einbauen
			if(g.isIE6) {
				g.scaleImage.defer(g.lbImgs[index], 271);
				g.scaleImage.defer(g.thumbImgs[index], 100);
			}			
		});		
  },
	
	displayGallery: function() {		
		g.load(g.rubrik);
		
		if ($('noscriptimg')) {				
			$('lbc').removeChild($('lbc').select('a')[0]);
		}			
		g.showMediumImg(g.index[g.rubrik]);
		document.getElementsByClassName('gallery_preview')[0].style.display = 'block';
	},
	
	scaleImage : function(img, max) {
		var orig_width = img.width;
		var orig_height = img.height;		
		
		if(orig_width > max) {
			img.width = max;
			img.height = orig_height * max / orig_width;
		}
		if(img.height > max) {
			img.height = max;
			img.width = img.width * max / img.height;
		}
	}	
}

Event.observe(window, 'load', g.init, true);


