/**
 * @author MURA
 * @copyright insyma AG
 * @projectDescription insyma JavaScript Library Image Module
 * @version 1.0
 */
insymaProd = {
	props:{
		wrapID: "insymaWrap",
		overlayID: "insymaOverlayP",
		galleryContainerID: "insymaImageP",
		outerContainerID: "outerContainerP",
		preloaderID:"preloaderP",
		imageID: "insymaCurrImageP",
		imageControlID: "imageControlP",
		controlPrevID: "controlPrevP",
		controlNextID: "controlNextP",
		controlPlayID: "controlPlayP",
		controlCloseID: "controlCloseP",
		imageInfoID: "imageInfoP",
		imageLeftInfoID: "imageLeftInfoP",
		imageAltTextID: "imageAltTextP",
		imageAltAddTextID: "imageAltAddTextP",
		imageNrID: "imageNrP",
		
		// OnLoad Variablen im QueryString
		onLoadUrlVar: "insymaImageP",
		onLoadThanksVar: "insymaThanksP",
		
		PagingContainerClass:"pagingP",
		nextPageClass:"aNextP",
		prevPageClass:"aPrevP",
		thumbContainerClass:"insymaProdThumbs",
		
		playingClass: "playing",
		hideClass: "hide",
		invisClass: "invis",
		activeClass: "active",
		noOverlayClass: "noOverlay",
		
		bodyScrollPosition: "",
		tempAnchorLength: 0,
		
		// Eigenschaften Weiterleitungsfunktion
		fwDefaultMailer: "http://www.contentupdate.net/bibliothek/form/insymaImageMailer.aspx",
		fwMailSenderID: "fwSender",
		fwDefaultMailSender: "insyma@contentupdate.net",
		fwLinkID: "insymaFwLink",
		fwFormID: "insymaFwForm",
		fwRedirectID: "fwRedirect",
		fwImageUrlID: "fwImageUrl",
		fwSenderNameID: "fwSenderName",
		fwSenderNameValID: "fwSenderNameVal",
		fwSenderMailID: "fwSenderMail",
		fwSenderNameMailID: "fwSenderMailVal",
		fwRecipientMailID: "fwRecipientMail",
		fwRecipientMailValID: "fwRecipientMailVal",
		fwCommentID: "fwComment",
		fwThanksID: "fwThanks",
		fwValidateID: "fwValidation",
		fwSubjectID: "fwSubject",
		fwMessageID: "fwMessage",
		fwConfirmSubjectID: "fwConfirmSubject",
		fwConfirmMessageID: "fwConfirmMessage"
	},
	init:function() {
		var thumbCon = insymaUtil.elmByClass("div", insymaProd.props.thumbContainerClass);
		if (thumbCon.length > 0) {
			insymaProd.paging.init();
			insymaProd.gallery.init();
		}
	},
	// Alles für die Thumbnails
	paging:{
		init:function() {
			this.createControls();
		},
		// Setzt Seite
		setPage:function(pageIdx) {
			var thumbConIdx = parseInt(pageIdx.split("-")[0]);
			var pageIdx = parseInt(pageIdx.split("-")[1]);
			var thumbCon = insymaUtil.elmByClass("div", insymaProd.props.thumbContainerClass)[thumbConIdx];
			var thumbItem = thumbCon.getElementsByTagName("li");
			
			var start = pageIdx * insymaProdConfig.itemCount;
			var end = ((pageIdx + 1) * insymaProdConfig.itemCount) - 1;
			for(var i = 0;i<thumbItem.length; i++){
				if(i >= start && i <= end){
					insymaUtil.cssjs("remove",thumbItem[i],insymaProd.props.hideClass);
				}else {
					insymaUtil.cssjs("add",thumbItem[i],insymaProd.props.hideClass);
				}
			}
		},
		// Returns Array of ImageAnchors
		getImageAnchors:function(parentObj){
				var tempAnchors = parentObj.getElementsByTagName("a");
				var anchors = [];
				for (var x = 0; x < tempAnchors.length; x++) {
					if (typeof(tempAnchors[x].getAttribute("href")) != 'undefined' && tempAnchors[x].getAttribute("href") != null) {
						if (tempAnchors[x].getAttribute("href").indexOf(".jpg") > 0 || tempAnchors[x].getAttribute("href").indexOf(".jpeg") > 0 || tempAnchors[x].getAttribute("href").indexOf(".png") > 0 || tempAnchors[x].getAttribute("href").indexOf(".gif") > 0) {
							anchors.push(tempAnchors[x]);
						}
					}
				}
				return anchors;
		},		
		// Zeigt nächste oder vorherige Seite
		changePage:function(controlLink,direction){
			var thumbCon = insymaUtil.elmByClass("div", insymaProd.props.thumbContainerClass);
			for (var i = 0; i < thumbCon.length; i++) {
				if (controlLink.parentNode.parentNode == thumbCon[i]){
					var pageCounter = thumbCon[i].getElementsByTagName("span")[0];
					var pageIdx = parseInt(insymaPageIdxArr[i].split("-")[1]);
					var newPageIdx;
					var curCount;
					if (direction == 1){
						if((pageIdx + 1) < insymaTotalPageArr[i]) {
							newPageIdx = i+"-"+(pageIdx + 1);
							this.setPage(newPageIdx);
							curCount = insymaProdConfig.pagingLabel + " " + (pageIdx + 2) + " " + insymaProdConfig.pagingSeparatorLabel + " " + insymaTotalPageArr[i];
						}
						else {
							newPageIdx = i+"-0";
							this.setPage(newPageIdx);
							curCount = insymaProdConfig.pagingLabel + " 1 " + insymaProdConfig.pagingSeparatorLabel + " " + insymaTotalPageArr[i];
						}
					} else {
						if((pageIdx - 1) >= 0) {
							newPageIdx = i+"-"+(pageIdx - 1);
							this.setPage(newPageIdx);
							curCount = insymaProdConfig.pagingLabel + " " + (pageIdx) + " " + insymaProdConfig.pagingSeparatorLabel + " " + insymaTotalPageArr[i];
						}
						else {
							newPageIdx = i+"-"+(insymaTotalPageArr[i] - 1);
							this.setPage(newPageIdx);
							curCount = insymaProdConfig.pagingLabel + " " + (insymaTotalPageArr[i]) + " " + insymaProdConfig.pagingSeparatorLabel + " " + insymaTotalPageArr[i];
						}
					}
					insymaUtil.setText(pageCounter, curCount);
					insymaPageIdxArr[i] = newPageIdx;
				}
			}
		},
		// Erstellt Elemente für das Paging
		createControls:function(){
			insymaPageIdxArr = [];
			insymaTotalPageArr = [];
			insymaTotalImgs = 0;
			var thumbCon = insymaUtil.elmByClass("div", insymaProd.props.thumbContainerClass);
			for (var i = 0; i < thumbCon.length; i++) {
				var itemCount = (insymaProdConfig.itemCount!=0 && insymaProdConfig.itemCount!="")?insymaProdConfig.itemCount:5000;
				var thumblist = thumbCon[i].getElementsByTagName("ul")[0];
				if (itemCount != 5000) {
					var pagingCon = insymaUtil.createElm("p", {className: insymaProd.props.PagingContainerClass}, "", thumbCon[i]);
				}
				var anchors = insymaProd.paging.getImageAnchors(thumbCon[i]);
								
				for(var y = 0;y<anchors.length;y++){
					insymaUtil.setAttr(anchors[y],{idx: i+"-"+y});
					anchors[y].onclick = function(){insymaProd.gallery.onLinkClick(this); return false;};
					insymaTotalImgs += 1;
				}
				
				if (anchors.length > itemCount && typeof(pagingCon)!='undefined') {
					var aPrev = insymaUtil.createElm("a", {className: insymaProd.props.prevPageClass, href: "#"}, insymaProdConfig.prevPageLabel, pagingCon);
					aPrev.onclick = function(){insymaProd.paging.changePage(this,-1); return false;};
					var pageCounter = insymaUtil.createElm("span", false, false, pagingCon);
					var aNext = insymaUtil.createElm("a", {className: insymaProd.props.nextPageClass, href: "#"}, insymaProdConfig.nextPageLabel, pagingCon);
					aNext.onclick = function(){insymaProd.paging.changePage(this,1); return false;};
					
					//insymaTotalImgs = anchors.length;
					
					if((insymaTotalImgs % itemCount) > 0 && (insymaTotalImgs > itemCount)) {
						insymaTotalPage = parseInt(insymaTotalImgs / itemCount) + 1;
					}
					else if((insymaTotalImgs % itemCount) == 0 && (insymaTotalImgs > itemCount)) {
						insymaTotalPage = parseInt(insymaTotalImgs / itemCount);
					}
					else {
						insymaTotalPage = 1;
					}
					
					if (typeof(thumblist) != 'undefined') {
						thumbCon[i].appendChild(thumblist);
					}
					
					insymaUtil.setText(pageCounter, insymaProdConfig.pagingLabel + " 1 " + insymaProdConfig.pagingSeparatorLabel + " " + insymaTotalPage);
					insymaTotalPageArr.push(insymaTotalPage);
					insymaPageIdxArr.push(i+"-0");
					this.setPage(i+"-0");
				}
			}
		}
	},
	// Alles für die Bildanzeige
	gallery: {
		init:function(){
			this.createGal();
		},
		// Wird ausgeführt wenn auf Thumb geklickt wird
		onLinkClick:function(objLink){
			var thumbConIdx = parseInt(objLink.getAttribute("idx").split("-")[0]);
			var imgIdx = parseInt(objLink.getAttribute("idx").split("-")[1]);
			var thumbCon = insymaUtil.elmByClass("div", insymaProd.props.thumbContainerClass)[thumbConIdx];
			var image = document.getElementById(insymaProd.props.imageID);
			var anchors = insymaProd.paging.getImageAnchors(thumbCon);
			insymaProd.props.tempAnchorLength = anchors.length;
			this.loadImg(objLink);
			
			if (!insymaProdConfig.showInAlternateImgContainer) {				
				if (insymaProd.props.tempAnchorLength == 1) {
					if (insymaProdConfig.enableOverlaySigleImg) {
						this.setOverlay(true);
						if (insymaProdConfig.disableScrolling) {
							window.scrollTo(0, 0);
						}
					} else {
						insymaUtil.cssjs("add", insymaGalleryCon2, insymaProd.props.noOverlayClass);
					}
				} else {
					this.setOverlay(true);
					if (insymaProdConfig.disableScrolling) {
						window.scrollTo(0, 0);
					}
				}
				insymaUtil.cssjs("remove", insymaGalleryCon2, insymaProd.props.hideClass);
				
				// Blendet Image-Control-Links und ImageCounter aus, wenn nur ein Bild in Galerie ist
				var controlPlay = document.getElementById(insymaProd.props.controlPlayID);
				var controlNext = document.getElementById(insymaProd.props.controlNextID);
				var controlPrev = document.getElementById(insymaProd.props.controlPrevID);
				var imageNr = document.getElementById(insymaProd.props.imageNrID);
				if (insymaProdConfig.enableControls != false) {
					if (insymaProd.props.tempAnchorLength == 1) {
						if (insymaProdConfig.enableSlideShow) {
							insymaUtil.cssjs("add", controlPlay, insymaProd.props.hideClass);
						}
						insymaUtil.cssjs("add", controlNext, insymaProd.props.hideClass);
						insymaUtil.cssjs("add", controlPrev, insymaProd.props.hideClass);
						if (insymaProdConfig.enableCounter != false) {
							insymaUtil.cssjs("add", imageNr, insymaProd.props.hideClass);
						}
					}
					else {
						if (insymaProdConfig.enableSlideShow) {
							insymaUtil.cssjs("remove", controlPlay, insymaProd.props.hideClass);
						}
						insymaUtil.cssjs("remove", controlNext, insymaProd.props.hideClass);
						insymaUtil.cssjs("remove", controlPrev, insymaProd.props.hideClass);
						if (insymaProdConfig.enableCounter != false) {
							insymaUtil.cssjs("remove", imageNr, insymaProd.props.hideClass);
						}
					}
				}
				
				// Fügt Event für Tastatur-Bedienung hinzu
				document.onkeydown = insymaProd.gallery.setKeyListener;
			}
		},
		// Lädt Bild und zeigt es an
		loadImg:function(objLink){
			insymaProd.props.bodyScrollPosition = document.documentElement.scrollTop;
			insymaProd.gallery.posOuterContainer(0, 0);
			var PreLoading = new Image();
			var image = document.getElementById(insymaProd.props.imageID);
			var outerCon = document.getElementById(insymaProd.props.outerContainerID);
			var imageAltText = document.getElementById(insymaProd.props.imageAltTextID);
			if (insymaProdConfig.showAlternativeText) {
				var imageAltAddText = document.getElementById(insymaProd.props.imageAltAddTextID);
			}
			var imageNr = document.getElementById(insymaProd.props.imageNrID);
			this.setLoading(true);
			PreLoading.onload = function(){
				image.src = objLink.getAttribute("href");
				if (!insymaProdConfig.showInAlternateImgContainer) {
					insymaProd.gallery.resizeOuterContainer(PreLoading.width, PreLoading.height);
				}
				if (insymaProdConfig.setImgHeightOnContentElementIDs != "") {
					insymaProd.gallery.resizeContentElements(PreLoading.height);
				}
				insymaUtil.setAttr(image, {idx: objLink.getAttribute("idx")});
				image.alt = objLink.getElementsByTagName("img")[0].alt;
				if (!insymaProdConfig.showInAlternateImgContainer) {
					if (!insymaProdConfig.showAlternativeText) {
						insymaUtil.setText(imageAltText, image.alt);
					} else {
						insymaUtil.setText(imageAltText, objLink.getElementsByTagName("img")[0].title);	
						insymaUtil.setText(imageAltAddText, objLink.getElementsByTagName("img")[0].getAttribute('longdesc').replace("<br/>","\n"));	
					}
					insymaProd.gallery.imageCounter(objLink);
				}
				insymaProd.gallery.setLoading(false);
			};
			PreLoading.src = objLink.getAttribute("href");
			
			// ActiveClass setzen
			if(insymaProdConfig.setActiveClass) {
				var currLi = objLink.parentNode;
				if (typeof(currLi) != 'undefined' && currLi.nodeName.toLowerCase() == 'li') {
					for (var i = 0; i < currLi.parentNode.getElementsByTagName("li").length; i++) {
						insymaUtil.cssjs("remove", currLi.parentNode.getElementsByTagName("li")[i], insymaProd.props.activeClass);
					}
					insymaUtil.cssjs("add", currLi, insymaProd.props.activeClass);
				}
			}
			
			// Hidden FormFields "Redirect" und ImageUrl" abfüllen
			if (insymaProdConfig.enableImageForward) {
				var fwRedirect = document.getElementById(insymaProd.props.fwRedirectID);
				var fwImageUrl = document.getElementById(insymaProd.props.fwImageUrlID);
								
				if (insymaUtil.getQuerystring(insymaProd.props.onLoadThanksVar)) {
					var tempString = insymaUtil.setQuerystring(insymaProd.props.onLoadUrlVar, objLink.getAttribute("idx"));
					fwRedirect.value = insymaUtil.setQuerystring(insymaProd.props.onLoadUrlVar, objLink.getAttribute("idx"));
					fwImageUrl.value = tempString.replace("&" + insymaProd.props.onLoadThanksVar, "");
				} else {
					var tempString = insymaUtil.setQuerystring(insymaProd.props.onLoadUrlVar, objLink.getAttribute("idx"));
					fwRedirect.value = tempString.split("#")[0] + "&" + insymaProd.props.onLoadThanksVar;
					fwImageUrl.value = insymaUtil.setQuerystring(insymaProd.props.onLoadUrlVar, objLink.getAttribute("idx"));
				}
				
				var fwThanks = document.getElementById(insymaProd.props.fwThanksID);
				var fwLink = document.getElementById(insymaProd.props.fwLinkID);
				insymaUtil.cssjs("add", fwThanks, insymaProd.props.hideClass);
				insymaUtil.cssjs("remove", fwLink, insymaProd.props.hideClass);
			}
		},
		// Zeigt nächstes oder vorheriges Bild
		showImg:function(direction){
			var currIdx = document.getElementById(insymaProd.props.imageID).getAttribute("idx");
			var thumbConIdx = parseInt(currIdx.split("-")[0]);
			var imgIdx = parseInt(currIdx.split("-")[1]);
			var thumbCon = insymaUtil.elmByClass("div", insymaProd.props.thumbContainerClass)[thumbConIdx];
			var anchors = insymaProd.paging.getImageAnchors(thumbCon);
					
			if (direction == 1) {
				try {
					this.loadImg(anchors[imgIdx+1]);
				}
				catch(e) {
					this.loadImg(anchors[0]);
				}
			}else {
				try {
					this.loadImg(anchors[imgIdx-1]);
				}
				catch(e) {
					this.loadImg(anchors[anchors.length-1]);
				}
			}
			return false;
		},
		// Skaliert Image Container
		resizeOuterContainer:function(width, height){
			var browser=navigator.appName;
			var newWidth = 163;
			if (width > 163) {
				newWidth = width;	
			}			
			var newHeight = height + 90;
			var arrayPageSize = insymaUtil.getPageSize();
			var outerCon = document.getElementById(insymaProd.props.outerContainerID);
			outerCon.style.width = newWidth+"px";
			if (browser=="Microsoft Internet Explorer") {
				outerCon.style.height = newHeight+"px";
			} else {
				outerCon.style.height = "auto";
			}
			insymaProd.gallery.posOuterContainer(width, height);
			
			if (insymaProdConfig.disableScrolling && arrayPageSize[3]>newHeight && !(!insymaProdConfig.enableOverlaySigleImg && insymaProd.props.tempAnchorLength == 1)) {
				this.setScroll(true);
				insymaProd.gallery.resizeOverlay(3);
			} else {
				//window.scrollTo(0,0);
				insymaProd.gallery.resizeOverlay(1);
			}
		},
		// Positioniert Image Container
		posOuterContainer:function(width, height){			
			var newWidth = 1;
			var newHeight = 1;
			var arrayPageSize = insymaUtil.getPageSize();
			var outerCon = document.getElementById(insymaProd.props.outerContainerID);
			var scrollPos = 0;
			if (width == 0 && height == 0) {
				if (outerCon.style.width != "") {
					newWidth = parseInt(outerCon.style.width.replace("px", ""));
					newHeight = parseInt(outerCon.style.height.replace("px", ""));
				}
			} else {
				newWidth = width;
				newHeight = height + 90;
			}
			if (!insymaProdConfig.disableScrolling || (!insymaProdConfig.enableOverlaySigleImg && insymaProd.props.tempAnchorLength == 1)) {
				scrollPos = parseInt(insymaProd.props.bodyScrollPosition);
			}
			//HINU Erkennung Google Chrome zur korrekten Fensterposition und Neuberechnung der Vertikalen 
			var isWebkit = navigator.userAgent.indexOf("AppleWebKit") > -1;
			if (isWebkit == true)
			{
				scroll_y = 0;
				 if (typeof( window.pageYOffset ) == 'number') { // Netscape
				  scroll_y = window.pageYOffset; scroll_x = window.pageXOffset;
				 }
				 else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) { // DOM
				  scroll_y = document.body.scrollTop; scroll_x = document.body.scrollLeft;
				 }
				 else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) { // IE6
				  scroll_y = document.documentElement.scrollTop; scroll_x = document.documentElement.scrollLeft;
				 }
				 scrollPos = scroll_y;
			}
			//Ende HINU
			
			
			if((newHeight / 2) > (arrayPageSize[3] / 2)) {
				var top = ( (arrayPageSize[3] / 2) -20 ) - scrollPos;
			}
			else {
				var top = (newHeight / 2) - scrollPos;
			}
			if (top < 0) {
				insymaGalleryCon2.style.marginTop = (top * -1) + 'px';
			} else {
				insymaGalleryCon2.style.marginTop = '-' + top + 'px';
			}
			//alert("TOP" + top);
			insymaGalleryCon2.style.left = '0px';
		},
		// Skaliert ContentElements
		resizeContentElements:function(height){
			var newHeight = height;
			var ContentElements = [];
			if(insymaProdConfig.setImgHeightOnContentElementIDs.indexOf(";") != -1) {
				ContentElements = insymaProdConfig.setImgHeightOnContentElementIDs.replace(" ", "").split(";");
			} else {
				ContentElements.push(insymaProdConfig.setImgHeightOnContentElementIDs);
			}
			for(var i = 0;i<ContentElements.length; i++) {
				if(ContentElements[i].indexOf("(") != -1) {
					var contentElm = document.getElementById(ContentElements[i].split("(")[0]);
					var addHeight = ContentElements[i].split("(")[1].replace(")", "");
					if (addHeight.indexOf("-") != -1) {
						contentElm.style.height = (newHeight - parseInt(addHeight.replace("-", ""))) + "px";
					} else {
						contentElm.style.height = (newHeight + parseInt(addHeight.replace("+", ""))) + "px";
					}
				} else {
					var contentElm = document.getElementById(ContentElements[i]);
					contentElm.style.height = newHeight + "px";
				}
			}
		},
		// Setzt Bild-Nr
		imageCounter:function(objLink) {
			if (insymaProdConfig.enableCounter != false) {
				var imgNr = document.getElementById(insymaProd.props.imageNrID);
				var currIdx = document.getElementById(insymaProd.props.imageID).getAttribute("idx");
				var thumbConIdx = parseInt(currIdx.split("-")[0]);
				var imgIdx = parseInt(currIdx.split("-")[1]) + 1;
				var thumbCon = insymaUtil.elmByClass("div", insymaProd.props.thumbContainerClass)[thumbConIdx];
				var anchors = insymaProd.paging.getImageAnchors(thumbCon);
				
				var curCount = insymaProdConfig.countLabel + " " + imgIdx + " " + insymaProdConfig.countSeperatorLabel + " " + anchors.length;
				
				insymaUtil.setText(imgNr, curCount);
			}
		},
		// Schaltet Scrolling ein oder aus
		setScroll:function(bool, height) {
			if (bool) {
				insymaWrap.style.position = "relative";
				if (height) {
					insymaWrap.style.height = height + "px";
				} else {
					insymaWrap.style.height = insymaUtil.getPageSize()[3] + "px";
				}
				insymaWrap.style.overflow = "hidden";
			}
			else {
				insymaWrap.style.position = "static";
				insymaWrap.style.height = "auto";
				insymaWrap.style.overflow = "auto";
			}
		},
		// Zeigt oder versteckt Overlay
		setOverlay:function(bool){
			if (insymaProdConfig.enableOverlay) {
				insymaUtil.cssjs("remove", insymaGalleryCon2, insymaProd.props.noOverlayClass);
				if (bool) {
					insymaUtil.cssjs("remove", insymaOverlay2, insymaProd.props.hideClass);
					this.resizeOverlay(1);
					
					if (insymaProdConfig.disableScrolling) {
						insymaUtil.addEvent(window, 'resize', function(){insymaProd.gallery.resizeOverlay(3)}, false);
						insymaUtil.addEvent(window, 'scroll', function(){insymaProd.gallery.resizeOverlay(1)}, false);
					} else {
						insymaUtil.addEvent(window, 'resize', function(){insymaProd.gallery.resizeOverlay(1)}, false);
						insymaUtil.addEvent(window, 'scroll', function(){insymaProd.gallery.resizeOverlay(1)}, false);
					}
					
				}
				else {
					insymaUtil.cssjs("add", insymaOverlay2, insymaProd.props.hideClass);
				}
			} else {
				insymaUtil.cssjs("add", insymaGalleryCon2, insymaProd.props.noOverlayClass);
			}
		},
		// Skaliert Overlay
		resizeOverlay:function(nr){
			insymaOverlay2.style.height = insymaUtil.getPageSize()[nr]+"px";
			insymaOverlay2.style.width = "100%";
		},
		// Zeigt oder versteckt das Bild, BildInfo und Preloader
		setLoading:function(bool){
			var image = document.getElementById(insymaProd.props.imageID);
			if (!insymaProdConfig.showInAlternateImgContainer) {
				var imageInfo = document.getElementById(insymaProd.props.imageInfoID);
				if (bool) {
					if(!insymaProdConfig.showImgDuringLoading) {
						insymaUtil.cssjs("add", image, insymaProd.props.invisClass);						
					}
					insymaUtil.cssjs("add", imageInfo, insymaProd.props.invisClass);
					insymaUtil.cssjs("remove", insymaPreLoader, insymaProd.props.hideClass);
				}
				else {
					insymaUtil.cssjs("remove", image, insymaProd.props.invisClass);
					insymaUtil.cssjs("remove", imageInfo, insymaProd.props.invisClass);
					insymaUtil.cssjs("add", insymaPreLoader, insymaProd.props.hideClass);
				}
			} else {
				if (bool) {
					if(!insymaProdConfig.showImgDuringLoading) {
						insymaUtil.cssjs("add", image, insymaProd.props.invisClass);				
					}
					insymaUtil.cssjs("remove", insymaPreLoader, insymaProd.props.hideClass);
				}
				else {
					insymaUtil.cssjs("remove", image, insymaProd.props.invisClass);
					insymaUtil.cssjs("add", insymaPreLoader, insymaProd.props.hideClass);
				}
			}
		},
		// Startet oder beendet SlideShow
		setSlideShow:function(bool, objLink) {
			if (insymaProdConfig.enableSlideShow) {
				var controlCloseSpan = objLink.getElementsByTagName("span")[0];
				if (bool) {
					insymaUtil.setText(controlCloseSpan, insymaProdConfig.controlPauseLabel);
					insymaUtil.cssjs("add",objLink, insymaProd.props.playingClass);
					objLink.onclick = function() {insymaProd.gallery.setSlideShow(false, this); return false;};
					insymaSlideShowInterval = window.setInterval('insymaProd.gallery.showImg(1)', insymaProdConfig.showDelay);
				}
				else {
					window.clearInterval(insymaSlideShowInterval);
					insymaUtil.setText(controlCloseSpan, insymaProdConfig.controlPlayLabel);
					insymaUtil.cssjs("remove",objLink, insymaProd.props.playingClass);
					objLink.onclick = function() {insymaProd.gallery.setSlideShow(true, this); return false;};
				}
			}
		},
		// Schliesst die Galerie
		closeGal:function() {
			var objLink = document.getElementById(insymaProd.props.imageControlID).getElementsByTagName("a")[1];
			var thumbCon = insymaUtil.elmByClass("div", insymaProd.props.thumbContainerClass);
			insymaUtil.cssjs("add", insymaPreLoader,insymaProd.props.hideClass);
			insymaUtil.cssjs("add", insymaOverlay2,insymaProd.props.hideClass);
			insymaUtil.cssjs("add", insymaGalleryCon2,insymaProd.props.hideClass);
			this.setOverlay(false);
			
			if(typeof(insymaSlideShowInterval) != 'undefined') {
				this.setSlideShow(false, objLink);
			}
			document.onkeydown = function(){};
			
			if(insymaProdConfig.disableScrolling) {
				this.setScroll(false);
			}
						
			// ActiveClass entfernen
			if (insymaProdConfig.setActiveClass) {
				for (var i = 0; i < thumbCon.length; i++) {
					for (var y = 0; y < thumbCon[i].getElementsByTagName("li").length; y++) {
						insymaUtil.cssjs("remove", thumbCon[i].getElementsByTagName("li")[y], insymaProd.props.activeClass);
					}
				}
			}
			
			if (!insymaProdConfig.showInAlternateImgContainer) {
				window.scrollTo(0, insymaProd.props.bodyScrollPosition);
			}
			if(insymaProdConfig.enableImageForward) {
				var fwFormContainer = document.getElementById(insymaProd.props.fwFormID);
				insymaUtil.cssjs("add", fwFormContainer, insymaProd.props.hideClass, "");
			}
		},
		// Fügt ein Event für Tastatur-Bedienung hinzu
		setKeyListener:function (evt) {
		    evt = (evt) ? evt : ((window.event) ? event : null);
		    if (evt) {
		        switch (evt.keyCode) {
					case 37:
		            	insymaProd.gallery.showImg(-1);
                		break;
					case 39:
		            	insymaProd.gallery.showImg(1);
                		break;
					case 27:
						insymaProd.gallery.closeGal();
						break;
					case 32:
						var objLink = document.getElementById(insymaProd.props.imageControlID).getElementsByTagName("a")[1];
						(insymaUtil.cssjs("check", objLink, insymaProd.props.playingClass))?insymaProd.gallery.setSlideShow(false, objLink):insymaProd.gallery.setSlideShow(true, objLink);
						break;
		        }
		    }
		},
		// Start Gallery OnLoad
		startOnLoad:function(){
			var thumbConIdx = 0;
			var imgIdx = 0;
			var showImg = false;
			var thumbCon = insymaUtil.elmByClass("div", insymaProd.props.thumbContainerClass);
			var fwThanks = document.getElementById(insymaProd.props.fwThanksID);
			var fwLink = document.getElementById(insymaProd.props.fwLinkID);
			if(insymaUtil.getQuerystring(insymaProd.props.onLoadUrlVar) != false) {
				if(insymaUtil.getQuerystring(insymaProd.props.onLoadUrlVar) != true) {
					thumbConIdx = parseInt(insymaUtil.getQuerystring(insymaProd.props.onLoadUrlVar).split('-')[0]);
					imgIdx = parseInt(insymaUtil.getQuerystring(insymaProd.props.onLoadUrlVar).split('-')[1]);
				}
				showImg = true;
			}			
			for (var i = 0; i < thumbCon.length; i++) {
				var anchors = insymaProd.paging.getImageAnchors(thumbCon[i]);
				if (showImg) {
					if(i == thumbConIdx) {
						if (typeof(anchors[imgIdx]) != 'undefined') {
							insymaProd.gallery.onLinkClick(anchors[imgIdx]);
						} else if (insymaUtil.getQuerystring(insymaProd.props.onLoadUrlVar) == true){
							if (anchors.length != 0) {
								insymaProd.gallery.onLinkClick(anchors[0]);
							}
						}
					}
				} else if (insymaProdConfig.showFirstImgOnLoad) {
					if (anchors.length != 0) {
						insymaProd.gallery.onLinkClick(anchors[0]);
					}
				}
			}
			if (insymaProdConfig.enableImageForward) {
				if (insymaUtil.getQuerystring(insymaProd.props.onLoadThanksVar)) {
					insymaUtil.cssjs("remove", fwThanks, insymaProd.props.hideClass);
					insymaUtil.cssjs("add", fwLink, insymaProd.props.hideClass);
				}
			}
		},
		// Weiterleitungsformular Validierung
		validateForm:function() {
			var fwValidate = document.getElementById(insymaProd.props.fwValidateID);			
			var fwSenderNameInput = document.getElementById(insymaProd.props.fwSenderNameID);
			var fwSenderMailInput = document.getElementById(insymaProd.props.fwSenderMailID);
			var fwRecipientMailInput = document.getElementById(insymaProd.props.fwRecipientMailID);
			var valid = true;
			while (fwValidate.childNodes[0]){
			    fwValidate.removeChild(fwValidate.childNodes[0]);
		  	}
			if (fwSenderNameInput.value == "") {
				valid = false;
				insymaUtil.createElm("li",{}, insymaProdConfig.fwSenderValidate, fwValidate);
			}
			if (fwSenderMailInput.value == "") {
				valid = false;
				insymaUtil.createElm("li",false, insymaProdConfig.fwSenderMailValidate, fwValidate);
			} else if (!insymaProd.gallery.validateEmail(fwSenderMailInput)) {
				valid = false;
				insymaUtil.createElm("li",false, insymaProdConfig.fwSenderMailNotValid, fwValidate);
			}
			if (fwRecipientMailInput.value == "") {
				valid = false;
				insymaUtil.createElm("li",false, insymaProdConfig.fwRecipientMailValidate, fwValidate);
			} else if (!insymaProd.gallery.validateEmail(fwRecipientMailInput)) {
				valid = false;
				insymaUtil.createElm("li",false, insymaProdConfig.fwRecipientMailNotValid, fwValidate);
			}
			if (!valid) {insymaUtil.cssjs("remove", fwValidate, insymaProd.props.hideClass);}
			return valid;
		},
		validateEmail:function(field) {
			if (field.value != ""){
				return(/^([a-zA-Z0-9_\-\&\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/i.test(field.value));
			} else { 
				return true;
			}
		},
		// Elemente für die Bildanzeige erstellen
		createGal:function(){
			// Overlay und image Container erstellen
			if (!insymaProdConfig.showInAlternateImgContainer) {
				if (insymaUtil.elmByClass("div", "insymaWrap")) {
					var insymaWrap = insymaUtil.elmByClass("div", "insymaWrap")[0];
				} else {
					var insymaWrap = insymaUtil.createElm("div", {
						id: insymaProd.props.wrapID
					});				
					var bodyChilds = document.body.childNodes;
					var bodyObjs = [];
					for (var i = 0; i < bodyChilds.length; i++) {
						bodyObjs.push(bodyChilds[i]);
					}
					for (var y = 0; y < bodyObjs.length; y++) {
						insymaWrap.appendChild(bodyObjs[y]);
					}
					document.body.appendChild(insymaWrap);
				}
				insymaOverlay2 = insymaUtil.createElm("div",{id: insymaProd.props.overlayID, className:insymaProd.props.hideClass}, false, document.body);
				insymaGalleryCon2 = insymaUtil.createElm("div",{id: insymaProd.props.galleryContainerID, className:insymaProd.props.hideClass}, false, document.body);
				var outerCon = insymaUtil.createElm("div",{id: insymaProd.props.outerContainerID}, false, insymaGalleryCon2); 

				// Erstellt das Image-Control
				var imageControl = insymaUtil.createElm("ul",{id: insymaProd.props.imageControlID}, false, outerCon);
			
				if (insymaProdConfig.enableControls != false) {
				// Erstellt Control Prev Image
				var controlPrev = insymaUtil.createElm("li",{id: insymaProd.props.controlPrevID}, false, imageControl);
				var controlPrevLink = insymaUtil.createElm("a",{href:"#", title:insymaProdConfig.controlPrevLabel}, false, controlPrev);
				var controlPrevSpan = insymaUtil.createElm("span",false, insymaProdConfig.controlPrevLabel, controlPrevLink);
				controlPrevLink.onclick = function(){insymaProd.gallery.showImg(-1); return false;};
			
				// Erstellt Control Play Slideshow
				if (insymaProdConfig.enableSlideShow) {
					var controlPlay = insymaUtil.createElm("li", {id: insymaProd.props.controlPlayID}, false, imageControl);
					var controlPlayLink = insymaUtil.createElm("a", {href: "#",title: insymaProdConfig.controlPlayLabel}, false, controlPlay);
					var controlPlaySpan = insymaUtil.createElm("span", false, insymaProdConfig.controlPlayLabel, controlPlayLink);
					controlPlayLink.onclick = function(){insymaProd.gallery.setSlideShow(true, this); return false;};
				}
				
				// Erstellt Control Next Image
				var controlNext = insymaUtil.createElm("li",{id: insymaProd.props.controlNextID}, false, imageControl);
				var controlNextLink = insymaUtil.createElm("a",{href:"#", title:insymaProdConfig.controlNextLabel}, false, controlNext);
				var controlNextSpan = insymaUtil.createElm("span",false, insymaProdConfig.controlNextLabel, controlNextLink);
				controlNextLink.onclick = function(){insymaProd.gallery.showImg(1); return false;};
				}
				
				// Erstellt Control Close Gallery
				var controlClose = insymaUtil.createElm("li",{id: insymaProd.props.controlCloseID}, false, imageControl);
				var controlCloseLink = insymaUtil.createElm("a",{href:"#", title:insymaProdConfig.controlCloseLabel}, false, controlClose);
				var controlCloseSpan = insymaUtil.createElm("span",false, insymaProdConfig.controlCloseLabel, controlCloseLink);
				controlCloseLink.onclick = function(){insymaProd.gallery.closeGal(); return false;};
	
				// Erstellt Preloader-Bild
				insymaPreLoader = insymaUtil.createElm("img", {id: insymaProd.props.preloaderID, src: insymaProdConfig.loadingImgPath, className:insymaProd.props.hideClass}, false, outerCon);
				
				// Erstellt Leeres Bild
				var image = insymaUtil.createElm("img",{id: insymaProd.props.imageID, className: insymaProd.props.invisClass}, false, outerCon);
				
				// Erstellt Image Info Container
				var imageInfo = insymaUtil.createElm("div",{id: insymaProd.props.imageInfoID, className: insymaProd.props.invisClass}, false, outerCon);
				var imageLeftInfo = insymaUtil.createElm("span",{id: insymaProd.props.imageLeftInfoID}, false, imageInfo);
				
				// Container für Bild Alternativ-Text
				var imageAltText = insymaUtil.createElm("span", {id: insymaProd.props.imageAltTextID}, false, imageLeftInfo);
				if (insymaProdConfig.showAlternativeText) {
					var imageAltAddText = insymaUtil.createElm("p", {id: insymaProd.props.imageAltAddTextID}, false, imageLeftInfo);
				}
				
				// Container für Bild-Nr
				if (insymaProdConfig.enableCounter != false) {
					var imageNr = insymaUtil.createElm("span", {id: insymaProd.props.imageNrID}, false, imageInfo);
				}
				
				// Weiterleitungs Formular
				if (insymaProdConfig.enableImageForward) {
					var fwLink = insymaUtil.createElm("a",{id: insymaProd.props.fwLinkID, href: "#"}, insymaProdConfig.fwLinkLabel, imageInfo);
					var fwThanks = insymaUtil.createElm("p",{id: insymaProd.props.fwThanksID, className: insymaProd.props.hideClass}, insymaProdConfig.fwThanks, imageInfo);
					var fwFormContainer = insymaUtil.createElm("div",{id: insymaProd.props.fwFormID, className: insymaProd.props.hideClass}, false, outerCon);
					fwLink.onclick = function(){
						var fwFormContainer = document.getElementById(insymaProd.props.fwFormID);
						insymaUtil.cssjs("swap", fwFormContainer, insymaProd.props.hideClass, "");
						if (insymaUtil.cssjs("check", fwFormContainer, insymaProd.props.hideClass)) {
							// Fügt Event für Tastatur-Bedienung hinzu
							document.onkeydown = insymaProd.gallery.setKeyListener;
						} else {
							// Fügt Event für Tastatur-Bedienung hinzu
							document.onkeydown = function(){};
						}
						return false;
					};
					var fwValidate = insymaUtil.createElm("ul",{id: insymaProd.props.fwValidateID, className: insymaProd.props.hideClass}, false, fwFormContainer);
					var fwForm;
					if (insymaProdConfig.fwMailer == "") {
						fwForm = insymaUtil.createElm("form",{name: insymaProd.props.fwFormID, action: insymaProd.props.fwDefaultMailer, method: "post"}, false, fwFormContainer);
					} else {
						fwForm = insymaUtil.createElm("form",{name: insymaProd.props.fwFormID, action: insymaProdConfig.fwMailer, method: "post"}, false, fwFormContainer);
					}
					fwForm.onsubmit = function(){return insymaProd.gallery.validateForm();};
					
					// HiddenFields
					
					var fwRedirect = insymaUtil.createElm("input",{id: insymaProd.props.fwRedirectID, name: insymaProd.props.fwRedirectID, value: '', type: 'hidden'}, false, fwForm);
					var fwImageUrl = insymaUtil.createElm("input",{id: insymaProd.props.fwImageUrlID, name: insymaProd.props.fwImageUrlID, value: '', type: 'hidden'}, false, fwForm);
					
					var fwMailSender;
					if (insymaProdConfig.fwMailSender == "") {
						fwMailSender = insymaUtil.createElm("input",{name: insymaProd.props.fwMailSenderID, value: insymaProd.props.fwDefaultMailSender, type: 'hidden'}, false, fwForm);
					} else {
						fwMailSender = insymaUtil.createElm("input",{name: insymaProd.props.fwMailSenderID, value: insymaProdConfig.fwMailSender, type: 'hidden'}, false, fwForm);
					}
					
					insymaUtil.createElm("input",{name: insymaProd.props.fwSubjectID, value: insymaProdConfig.fwSubject, type: 'hidden'}, false, fwForm);
					insymaUtil.createElm("input",{name: insymaProd.props.fwMessageID, value: insymaProdConfig.fwMessage, type: 'hidden'}, false, fwForm);
					insymaUtil.createElm("input",{name: insymaProd.props.fwConfirmSubjectID, value: insymaProdConfig.fwConfirmSubject, type: 'hidden'}, false, fwForm);
					insymaUtil.createElm("input",{name: insymaProd.props.fwConfirmMessageID, value: insymaProdConfig.fwConfirmMessage, type: 'hidden'}, false, fwForm);
										
					// FormFields
					var fwFormUl = insymaUtil.createElm("ul",{}, false, fwForm);
					
					var fwSenderNameLi = insymaUtil.createElm("li",{}, false, fwFormUl);
					var fwSenderNameLabel = insymaUtil.createElm("label",{'for': insymaProd.props.fwSenderNameID}, insymaProdConfig.fwSenderLabel, fwSenderNameLi);
					insymaUtil.createElm("span",{}, "*", fwSenderNameLabel);
					var fwSenderNameInput = insymaUtil.createElm("input",{id: insymaProd.props.fwSenderNameID, name: insymaProd.props.fwSenderNameID, value: ''}, false, fwSenderNameLi);
					
					var fwSenderMailLi = insymaUtil.createElm("li",{}, false, fwFormUl);
					var fwSenderMailLabel = insymaUtil.createElm("label",{'for': insymaProd.props.fwSenderMailID}, insymaProdConfig.fwSenderMailLabel, fwSenderMailLi);
					insymaUtil.createElm("span",{}, "*", fwSenderMailLabel);
					var fwSenderMailInput = insymaUtil.createElm("input",{id: insymaProd.props.fwSenderMailID, name: insymaProd.props.fwSenderMailID, value: ''}, false, fwSenderMailLi);
					
					var fwReciepientLi = insymaUtil.createElm("li",{}, false, fwFormUl);
					var fwRecipientMailLabel = insymaUtil.createElm("label",{'for': insymaProd.props.fwRecipientMailID}, insymaProdConfig.fwRecipientMailLabel, fwReciepientLi);
					insymaUtil.createElm("span",{}, "*", fwRecipientMailLabel);
					var fwRecipientMailInput = insymaUtil.createElm("input",{id: insymaProd.props.fwRecipientMailID, name: insymaProd.props.fwRecipientMailID, value: ''}, false, fwReciepientLi);
					
					var fwCommentLi = insymaUtil.createElm("div",{className: insymaProd.props.fwCommentID}, false, fwForm);
					var fwCommentLabel = insymaUtil.createElm("label",{'for': insymaProd.props.fwCommentID}, insymaProdConfig.fwCommentLabel, fwCommentLi);
					var fwCommentInput = insymaUtil.createElm("textarea",{id: insymaProd.props.fwCommentID, name: insymaProd.props.fwCommentID, value: ''}, false, fwCommentLi);
					
					var fwButtonP = insymaUtil.createElm("p",false, false, fwForm);
					var fwButton = insymaUtil.createElm("input",{type: "submit", value: insymaProdConfig.fwButtonLabel}, false, fwButtonP);
				}
			} else {
				insymaAltImgCon = document.getElementById(insymaProdConfig.alternateImgContainerID);
				if(insymaAltImgCon.getElementsByTagName("img").length > 0) {
					insymaUtil.setAttr(insymaAltImgCon.getElementsByTagName("img")[0], {id: insymaProd.props.imageID});
					insymaPreLoader = insymaUtil.createElm("img", {id: insymaProd.props.preloaderID, src: insymaProdConfig.loadingImgPath, className:insymaProd.props.hideClass}, false, insymaAltImgCon);				
					insymaAltImgCon.appendChild(document.getElementById(insymaProd.props.imageID));
				} else {
					insymaPreLoader = insymaUtil.createElm("img", {id: insymaProd.props.preloaderID, src: insymaProdConfig.loadingImgPath, className:insymaProd.props.hideClass}, false, insymaAltImgCon);				
					var image = insymaUtil.createElm("img",{id: insymaProd.props.imageID, className: insymaProd.props.invisClass}, false, insymaAltImgCon);
				}
			}			
			insymaProd.gallery.startOnLoad();
		}
	}
};
insymaUtil.addEvent(window, "load", insymaProd.init, false);