/*******************************************************************************
 *                       @REGION: Data-Layer
 *******************************************************************************/
function decode_utf8(utftext) {
     var plaintext = ""; var i=0; var c=c1=c2=0;
     // while-Schleife, weil einige Zeichen uebersprungen werden
     while(i<utftext.length)
         {
         c = utftext.charCodeAt(i);
         if (c<128) {
             plaintext += String.fromCharCode(c);
             i++;}
         else if((c>191) && (c<224)) {
             c2 = utftext.charCodeAt(i+1);
             plaintext += String.fromCharCode(((c&31)<<6) | (c2&63));
             i+=2;}
         else {
             c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2);
             plaintext += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63));
             i+=3;}
         }
     return plaintext;
}
function fileInfoLoader(node,name) {
	this.node = node;
	this.name = name;
	this.div = this.node.getElementsByTagName("DIV")[0];
	this.anchors = this.node.getElementsByTagName("A");
	var res = this.node.getElementsByTagName("A");
	if(res.length > 0) {
		this.url = res[0].href;
		this.request = getHTTPRequestObj();
		if (!this.request) alert("Error initializing XMLHttpRequest!");
		else {
			this.request.open('GET', '/lib/php/exe/getFileInfo.php?path='+this.url, true);
			this.request.onreadystatechange = function onreadystatechange () {
// 				alert(window.prodapl.fileInfoLoaders.length);
				for(var i=0;i<window.prodapl.fileInfoLoaders.length;i++) {
					if(window.prodapl.fileInfoLoaders[i].request.readyState==4) {
						window.prodapl.fileInfoLoaders[i].div.innerHTML = window.prodapl.fileInfoLoaders[i].request.responseText;
						window.prodapl.fileInfoLoaders[i].anchors[0].href = decode_utf8(window.prodapl.fileInfoLoaders[i].anchors[0].href);
					}
				}
			}
		}
	}
	this.sendMyRequest = function () {
		this.request.send(null);
	}
}
function TechnischeDaten(div) {
	this.mainNode = div;
	this.isOpen = this.mainNode.style.display == "block" || this.mainNode.style.display == "";
	this.id = div.id;
	this.button = div.getElementsByTagName("DIV")[0];
	this.buttonLink = this.button.getElementsByTagName("A")[0];
	this.buttonCaption = this.buttonLink.innerHTML;
	this.table = new VariableContainer(div.getElementsByTagName("DIV")[1]);
	this.setButtonCaption = function (text) {
		this.button.getElementsByTagName("A")[0].innerHTML = text;
	}
	this.setTableOpenClose = function (open) {
		this.table.setOpenClose(open);
		if(open) {
			this.buttonLink.className = "open";
		}
		else this.buttonLink.className = "";
	}
	this.toogleTableOpenClose = function () {
		if(this.table.isOpen) {
			this.table.setOpenClose(false);
			this.setButtonCaption(this.buttonCaption+" "+language.artikelTableOpen);
			this.buttonLink.className = "";
		} else {
			this.table.setOpenClose(true);
			this.setButtonCaption(this.buttonCaption.replace(" "+language.artikelTableOpen,""));
			this.buttonLink.className = "open";
		}
	}
	this.setOpenClose = function (isOpen) {
		this.isOpen = isOpen;
		this.openClose();
		this.table.setOpenClose(isOpen);
	}
	this.openClose = function () {
		if(this.isOpen) {
			this.mainNode.style.display = "block";
			this.buttonLink.className = "open";
		} else {
			this.mainNode.style.display = "none";
			this.buttonLink.className = "";
		}
	}
	this.isUnterteil = function() {
		return this.buttonLink.name.match("unterteil");
	}
	this.isAbdeckung = function() {
		return this.buttonLink.name.match("abdeckung");
	}
}
function VariableContainer(node) {
	this.node = node;
	this.isOpen = true;
	this.setOpenClose = function (isOpen) {
		this.isOpen = isOpen;
		this.openClose();
	}
	this.openClose = function () {
		if(this.node) {
			if(this.isOpen) {
        this.node.style.display = "block";
      } else {
        this.node.style.display = "none";
      }

		}
	}
	this.setContent = function (content) {
		if(this.node) this.node.innerHTML = content;
	}
}
function AusschreibungenButtons(node) {
	this.node = node;
	this.isOpen = true;
	new Draggable('ausschreibungDrag1',{
		revert:true
	});
	new Draggable('ausschreibungDrag2',{
		revert:true
	});
	this.setByArray = function (array) {
		if(array.length == 0) {
			this.setOpenClose(false);
		} else {
			this.setOpenClose(true);
			for(var i=0;i<array.length;i++) {
				$('ausschreibungDrag1').className = "move";
				$('ausschreibungDrag2').className = "move";
				$('ausschreibungDrag'+(i+1)).innerHTML = array[i];
				$('ausschreibungDrag'+(i+1)).style.display = "block";
				var titleRef = $('ausschreibungDrag'+(i+1)).title;
				titleRef = titleRef.replace(/\d+/,array[i]);
				$('ausschreibungDrag'+(i+1)).title = titleRef;
			}
			if(i==1) {
				$('ausschreibungDrag1').className = "move single";
				$('ausschreibungDrag2').className = "single";
				$('ausschreibungDrag2').style.display = "none";
			}
		}
	}
	this.setOpenClose = function (isOpen) {
		this.isOpen = isOpen;
		this.openClose();
	}
	this.openClose = function () {
		if(this.node) {
			if(this.isOpen) {
	        this.node.style.display = "block";
	      } else {
	        this.node.style.display = "none";
	      }
		}
	}
}
function dropArtNo(artNo) {
	if($('aWarenkorbAJAXZone').getElementsByTagName("DIV").length>0) $('aWarenkorbAJAXZone').getElementsByTagName("DIV")[0].className = 'loading';

	new Ajax.Request('/lib/php/services/getAWarenkorb.php', {
	  method: 'get',
		parameters: {
			action:'addItem',
			han:artNo,
			lang:HLANG
		},
	  onSuccess: function(transport) {
		$('aWarenkorbAJAXZone').innerHTML = transport.responseText;
		if($('new')) {
			Effect.Pulsate($('new'));
		}
	  }
	});
}
function ausschreibungDrag_click(aTag) {
	dropArtNo(aTag.innerHTML);
}
function ProduktApplikation() {
	this.state = "Init";
	this.artikelDataDivs = new Array();
	this.technischeDaten = new Array();
	this.naviPoints = new Array();
	this.abdeckungGalerieItems = new Array();
	this.selectedBelastungskasse = "";
	this.selectedTechnischeDaten = "";
	this.hasUnterteile = false;
	this.hasAWarenkorb = true;
	this.fileInfoLoaders = new Array();
	this.init = function () {
		if($('aWarenkorb')) {
			Droppables.add('aWarenkorb', {
				accept: 'move',
				onDrop: function(element) {
					dropArtNo(element.innerHTML);
				}
			});
			this.aButttons = new AusschreibungenButtons($('ausschreibungenButtons'));
			this.aButttons.setOpenClose(false);
		} else this.hasAWarenkorb = false;
		this.produktNavi = new ProduktNavi();
		this.additionalContent = new AdditionalContent();
		this.slideShowNavi = new SlideShowNavi(document.getElementById("produktSlideShowNaviButtons"));
		var items = document.getElementById("technischeDatenTables").getElementsByTagName("DIV");
		for(var i=0;i<items.length;i++) {
			if(items[i].className.match("ArtikelData")) {
				this.artikelDataDivs.push(items[i]);
			}
			if(items[i].className.match("produktTechnischeDaten")) {
				this.technischeDaten.push(new TechnischeDaten(items[i]));
			}
		}
		for(var i = 0; i<this.technischeDaten.length;i++) {
			if(this.technischeDaten[i].isUnterteil()) {
				this.hasUnterteile = true;

			}
		}
		this.belastungsklassen = new VariableContainer(document.getElementById("belastungsklassen"));
		this.abdeckungsartenGalerie = new VariableContainer(document.getElementById("abdeckungsartenGalerie"));
		this.produktTextContentInitText = new VariableContainer(document.getElementById("produktTextContentInitText"));
		this.slideShowAndContent = new VariableContainer(document.getElementById("produktSlideShowAndContent"));
		this.currentUnterteilSelected = new VariableContainer(document.getElementById("currentUnterteilSelected"));
		if(items = document.getElementById("abdeckungsartenGalerie")) {
			items = document.getElementById("abdeckungsartenGalerie").getElementsByTagName("DIV");
			for(var i=0;i<items.length;i++) {
				if(items[i].className == "adbdeckungsartenGalerieItem") {
					this.abdeckungGalerieItems.push(new AbdeckungGalerieItem(items[i]));
				}
			}
		}
		this.fixNaviAndProduktTables();
		this.setScreen();

		Event.observe('produktSlideShowBildContainer',"click", this.zoomClick);
		Event.observe('produktSlideShowBildBild',"click", this.zoomClick);
	}
	this.zoomClick = function() {
		document.getElementById("produktSlideShowBildZoomDiv").style.display = "block";
	}
	this.fixNaviAndProduktTables = function() {
		var downline = $('produktNavi').offsetHeight + $('produktNavi').offsetTop;
		var upline = $('technischeDatenTables').offsetTop;
		if(upline < downline) {
			$('technischeDatenTables').style.paddingTop = (downline-upline)+"px";
		}
	}
	this.downliteAllNaviPoints = function () {
		for(var i=0;i<this.naviPoints.length;i++) {
			this.naviPoints[i].downlite();
		}
	}
	this.setScreen = function () {

		switch(this.state) {
			case "Init":
				//Produkt-Navi
				this.additionalContent.clear();
				this.produktNavi.reset();
				this.produktNavi.highliteNaviPoint(0);
				this.additionalContent.show = true;
				this.additionalContent.setScreen();
				//SlideshowNavi
				this.slideShowNavi.isOpen = true;
				this.slideShowNavi.buttonPrevious.show = false;
				this.slideShowNavi.buttonNext.show = false;
				this.slideShowNavi.buttonZoom.show = true;
				var imgSrc = document.getElementById("produktSlideShowBildBild").src;
				this.slideShowNavi.setScreen();
				//Switch Datablocks off
				for(var i=0;i<this.artikelDataDivs.length;i++) {
					this.artikelDataDivs[i].style.display = "none";
				}
				if(this.hasUnterteile) {
					gotOne = false;
					for(var i = 0; i<this.technischeDaten.length;i++) {
						if(this.technischeDaten[i].isUnterteil() && !gotOne) {
							this.technischeDaten[i].setOpenClose(true);
							this.technischeDaten[i].setTableOpenClose(false);
							gotOne = false;
						} else {
							this.technischeDaten[i].setOpenClose(false);
						}
					}
				} else {
					this.technischeDaten[0].setOpenClose(true);
					this.technischeDaten[0].setTableOpenClose(false);
					for(var i = 1; i<this.technischeDaten.length;i++) {
						this.technischeDaten[i].setOpenClose(false);
					}
				}
				if(this.technischeDaten.length > 0) {
					this.technischeDaten[0].setOpenClose(true);
				}

				this.slideShowAndContent.setOpenClose(true);
				this.belastungsklassen.setOpenClose(false);
				this.abdeckungsartenGalerie.setOpenClose(false);
				break;
			case "TypeSelected":
				this.additionalContent.clear();
// 				if(!this.belastungsklassen.isOpen) {
// 					this.currentUnterteilSelected.setContent(this.currentProdukt.typName);
// 					this.currentUnterteilSelected.setOpenClose(true);
// 				}
				this.currentProdukt.highlite();
				if(this.currentProdukt.nextProduktDataNode) {
					this.slideShowNavi.buttonNext.show = true;
					this.slideShowNavi.buttonNext.targetNode = this.currentProdukt.nextProduktDataNode;
				} else {
					this.slideShowNavi.buttonNext.show = false;
					this.slideShowNavi.buttonNext.targetNode = null;
				}

				if(this.currentProdukt.previousProduktDataNode) {
					this.slideShowNavi.buttonPrevious.show = true;
					this.slideShowNavi.buttonPrevious.targetNode = this.currentProdukt.previousProduktDataNode;
				} else {
					this.slideShowNavi.buttonPrevious.show = false;
					this.slideShowNavi.buttonPrevious.targetNode = null;
				}

				this.slideShowNavi.setScreen();
				this.produktNavi.setAdttionalNaviPoints(this.currentProdukt.dokTypesWithoutMainImage);

				var res = this.currentProdukt.getDokumentByType(14);
				if(this.currentProdukt.typName != null) var text = this.currentProdukt.typName;
				else var text = "";
				if(res) {
					this.loadImage(res.link, text);
				} else {
					this.loadImage(res.link, text);
				}
				if(this.hasAWarenkorb) {
					this.aButttons.setByArray(this.currentProdukt.ArtNrs);
					$('technischeDatenTables').style.paddingTop = ((($('ausschreibungenButtons').offsetTop - $('technischeDatenTables').offsetTop))+123)+"px";
				}

				break;
			case "AbdeckungenOverview":
				if(this.hasAWarenkorb) this.aButttons.setOpenClose(false);
				this.selectedBelastungskasse = "";
				this.additionalContent.clear();
				this.produktNavi.reset();
				this.downliteAllNaviPoints();
				if(this.hasUnterteile) this.produktNavi.highliteNaviPoint(1);
				else this.produktNavi.highliteNaviPoint(0);
				this.slideShowAndContent.setOpenClose(false);
				this.abdeckungsartenGalerie.setOpenClose(true);
				this.belastungsklassen.setOpenClose(true);
				for(var i=0;i<this.technischeDaten.length;i++) {
					this.technischeDaten[i].setOpenClose(false);
				}
				for(var i=0;i<this.abdeckungGalerieItems.length;i++) {
					this.abdeckungGalerieItems[i].showSoEver();
				}
				this.belastungsklassen.node.getElementsByTagName("SELECT")[0].selectedIndex = 0;
				break;
			case "AbdeckungenOverview_BelastungsklasseSelected":
				if(this.hasAWarenkorb) this.aButttons.setOpenClose(false);
				this.slideShowAndContent.setOpenClose(false);
				this.abdeckungsartenGalerie.setOpenClose(true);
				this.belastungsklassen.setOpenClose(true);
				this.additionalContent.show = false;
				this.additionalContent.setScreen();
				for(var i=0;i<this.technischeDaten.length;i++) {
					this.technischeDaten[i].setOpenClose(false);
				}
				for(var i=0;i<this.abdeckungGalerieItems.length;i++) {
					if(this.selectedBelastungskasse == language.belastungsklassen) {
						this.abdeckungGalerieItems[i].showSoEver();
					} else {
						this.abdeckungGalerieItems[i].setMyVisibilityByBelastungsklasse(this.selectedBelastungskasse);
					}
				}
				break;
			case "MiscTableOpen":
				if(this.hasAWarenkorb) this.aButttons.setOpenClose(false);
				this.produktNavi.reset();
				this.additionalContent.clear();
				this.slideShowAndContent.setOpenClose(true);
				this.belastungsklassen.setOpenClose(false);
				this.abdeckungsartenGalerie.setOpenClose(false);
				this.produktTextContentInitText.setOpenClose(false);
				var zuordnungsart = this.miscButtonActive.id.replace("linkTo","");
				for(var i=0;i<this.technischeDaten.length;i++) {
					if(this.technischeDaten[i].mainNode.id == zuordnungsart) {
						this.technischeDaten[i].setOpenClose(true);
					} else {
						this.technischeDaten[i].setOpenClose(false);
					}
				}
				this.produktNavi.highliteNaviPointByDomNode(this.miscButtonActive);
				break;
			case "AbdeckungsartSelected":
				if(this.hasAWarenkorb) this.aButttons.setOpenClose(false);
				this.additionalContent.clear();
				this.additionalContent.show = false;
				this.additionalContent.setScreen();
				this.slideShowAndContent.setOpenClose(true);
				this.belastungsklassen.setOpenClose(true);
				this.abdeckungsartenGalerie.setOpenClose(false);
				this.produktTextContentInitText.setOpenClose(false);
				this.currentUnterteilSelected.setOpenClose(false);
				for(var i=0;i<this.technischeDaten.length;i++) {
					var show = false;
					if(this.technischeDaten[i].isAbdeckung()) {
						if(this.selectedBelastungskasse == "") show = true;
						else {
							if(this.technischeDaten[i].mainNode.id.match(propperName(this.selectedBelastungskasse))) show = true;
						}
					}
					this.technischeDaten[i].setOpenClose(show);
				}
				break;
			case "AdditionalContentOpen":
				this.additionalContent.clear();
				this.currentProdukt.highlite();
				var currentType = this.currentProdukt.dokTypes[this.additionalContentNo-1];
				var addList = false;
				for(var i =0;i<this.currentProdukt.dokumente.length;i++) {
					if(this.currentProdukt.dokumente[i].typeText == currentType) {
						if(this.currentProdukt.dokumente[i].link.match(/jpg$|gif$/i)) {
							this.loadImage(this.currentProdukt.dokumente[i].link, this.currentProdukt.typName+" - "+currentType);
						}
						this.additionalContent.add(this.currentProdukt.dokumente[i]);
						addList = true;
					}
				}
				if(addList) {
					this.produktTextContentInitText.setOpenClose(false);
					this.additionalContent.show = true;
					this.additionalContent.setScreen();
				}
				break;
			default:
				alert("Not implemented: "+this.state);
				break;
		}
	}
	this.loadImage = function(url, text) {
		if(url) {
			imageloader.load(document.getElementById("produktSlideShowBildBild"), decode_utf8(url.replace("/Original/","/WebSmall/")));
			document.getElementById("produktSlideShowNaviText").innerHTML = text.replace("-","- ");
			document.getElementById("produktSlideShowBildZoom").src = decode_utf8(url.replace("/Original/","/WebLarge/"));
		} else {
			imageloader.load(document.getElementById("produktSlideShowBildBild"), noImg.src);
			document.getElementById("produktSlideShowNaviText").innerHTML = text;
			document.getElementById("produktSlideShowBildZoom").src = noImg.src;
		}
	}
	this.setAbdeckungsart = function(abdeckungsart) {
		//Belastungsklassen zurücksetzen
// 		this.selectedBelastungskasse = "";
// 		var sel = this.belastungsklassen.node.getElementsByTagName("SELECT");
// 		if(sel[0]) sel[0].selectedIndex = 0;

		//Wert abspeichern
		this.selectedAbdeckungsart = abdeckungsart;

		//Fadings in Abeckungs-tabellen setzen
		var tablesContainer = document.getElementById("technischeDatenTables");
		if(tablesContainer) {
			var tables = tablesContainer.getElementsByTagName("TABLE");
			if(tables) {
				for(var i=0;i<tables.length;i++) {
					if(tables[i].className.match("Abdeckung")) {
						var rows = tables[i].getElementsByTagName("TR");
						if(rows) {
							for(var j=0;j<rows.length;j++) {
								rows[j].className = rows[j].className.replace("fadet","");
								if(rows[j].className!="lineNumber1" && !rows[j].className.match(propperName(this.selectedAbdeckungsart))) {
									rows[j].className = "fadet "+rows[j].className;
								}
							}
						}
					}
				}
			}
		}
	}
}
function Dokument(node) {
	this.link = node.href;
	this.type = node.className;
	this.typeText = node.className+"_"+node.parentNode.getElementsByTagName("DIV")[0].innerHTML.replace(/ \(.*/,"");
	this.typeText = node.parentNode.getElementsByTagName("DIV")[0].innerHTML.replace(/ \(.*/,"");
	this.typeId = node.className.replace("dokTypId","");
	this.text = node.innerHTML;
}
function ProduktData(node) {
	if(node.tagName == "TR") {
		this.node = node;
		this.nextProduktDataNode = null;
		var next = this.node.nextSibling;
		if(next) {
			if(next.nodeName != "TR") {
				next = next.nextSibling;
				if(next) {
					if(next.nodeName == "TR") this.nextProduktDataNode = next;
				} else this.nextProduktDataNode = null;
			} else this.nextProduktDataNode = next;
		}

		this.previousProduktDataNode = null;
		var previous = this.node.previousSibling;
		if(previous) {
			if(previous.nodeName != "TR") {
				previous = previous.previousSibling;
				if(previous) {
					if(previous.nodeName == "TR") this.previousProduktDataNode = previous;
				} else this.previousProduktDataNode = null;
			} else this.previousProduktDataNode = previous;
		}
		if(previous) {
			if(previous.className.match(/lineNumber1 ?$/)) {
				this.previousProduktDataNode = null;
			} else {
				this.previousProduktDataNode = previous;
			}
		}
		this.typName = this.node.getElementsByTagName("DIV")[0].innerHTML;
		this.dokumente = new Array();
		this.dokTypes = new Array();
		this.dokTypesWithoutMainImage = new Array();
		items = this.node.getElementsByTagName("DIV");
		for(i=1;i<items.length;i++) {
			switch(items[i].className) {
				case "Dokumente":
					links = items[i].getElementsByTagName("A");
					var alltypes = "";
					for(l = 0;l<links.length;l++) {
						var dok = new Dokument(links[l]);
						this.dokumente.push(dok);
						if(!alltypes.match(dok.typeText)) {
							this.dokTypes.push(dok.typeText);
							alltypes += dok.typeText;
// 							if(dok.typeId != 14) {
								this.dokTypesWithoutMainImage.push(dok.typeText);
// 							}
						}
					}
					break;
				case "anmerkungen":
					this.anmerkungen = items[i].innerHTML;
					break;
				default:
					break;
			}
		}
		this.ArtNrs = new Array();
		if(this.node.id != "") {
			this.ArtNrs = this.node.id.split("_");
		}
		this.highlite = function() {
			this.node.className += " selected";
		}
		this.downlite = function() {
			this.node.className = this.node.className.replace(" selected","");
		}
		this.getDokumentByType = function(typeId) {
			for(var i=0;i<this.dokumente.length;i++) {
				if(this.dokumente[i].typeId == typeId) {
					return this.dokumente[i];
				}
			}
			return false;
		}
	}
}


/*******************************************************************************
 *                       @REGION: Proudkt Navi
 *******************************************************************************/

function getProduktAddtionalNaviPoint(no) {
	return document.getElementById("additionalButton"+no);
}
function setProduktAdditionalNaviByArray(naviPoint) {
	resetNaviProdukt();
	for(var i=0;i<naviPoint.length;i++) {
		getProduktAddtionalNaviPoint(i+1).style.display = "block";
		getProduktAddtionalNaviPoint(i+1).innerHTML = naviPoint[i];
	}
}
function ProduktNavi() {
	this.naviPoints = new Array();
	this.currentHighliteNo = 0;
	nps = document.getElementById("produktNavi").getElementsByTagName("LI");
	notStartSet = true;
	for(var i=0;i<nps.length;i++) {
		np = new NaviPoint(nps[i]);
		this.naviPoints.push(np);
		if(np.isAditionalPoint && notStartSet) {
			this.additionalNavPointsStart = i;
			notStartSet = false;
		}
	}
	this.reset = function () {
		for(var i=0;i<this.naviPoints.length;i++) {
			this.naviPoints[i].downlite();
			if(this.naviPoints[i].isAditionalPoint) this.naviPoints[i].hide();
		}
	}
	this.highliteNaviPoint = function (no) {
		for(var i=0;i<this.naviPoints.length;i++) {
			this.naviPoints[i].downlite();
		}
		this.currentHighliteNo = no;
		this.naviPoints[no].highlite(no);
	}
	this.setAdttionalNaviPoints = function (texts) {
		for(var i=this.additionalNavPointsStart;i<this.naviPoints.length;i++) {
			if((i-this.additionalNavPointsStart) < texts.length) {
				this.naviPoints[i].show();
				this.naviPoints[i].setCaption(texts[(i-this.additionalNavPointsStart)]);
			} else {
				this.naviPoints[i].hide();
			}
		}
	}
	this.highliteNaviPointByDomNode = function (node) {
		switch(node.tagName) {
			case "A":
				for(var i=0;i<this.naviPoints.length;i++) {
					if(this.naviPoints[i].a == node) this.naviPoints[i].highlite();
				}
				break;
			default:
				alert("Not implemented "+node.tagName);
				break;
		}
	}
}
function NaviPoint(li) {
	this.li = li;
	this.a = this.li.getElementsByTagName("A")[0];
	this.isHighlited = this.li.className.match("selected");
	this.isAditionalPoint = this.a.id.match("additionalButton");
	this.highlite = function() {
		this.isHighlited = true;
		this.li.className = "selected";
	}
	this.downlite = function() {
		this.isHighlited = false;
		this.li.className = "";
	}
	this.hide = function () {
		this.a.style.display = "none";
	}
	this.show = function () {
		this.a.style.display = "block";
	}
	this.setCaption = function (caption) {
		this.a.innerHTML = caption;
	}
}
function SlideShowNavi(node) {
	this.isOpen = false;
	this.node = node;
	this.buttonPrevious = new SlideShowNaviButton(document.getElementById("produktSlideShowNaviButtonsPrevious"));
	this.buttonNext = new SlideShowNaviButton(document.getElementById("produktSlideShowNaviButtonsNext"));
	this.buttonZoom = new SlideShowNaviButton(document.getElementById("produktSlideShowNaviButtonsZoom"));
	this.setScreen = function() {
		if(this.isOpen) {
			this.node.style.display = "inline";
			this.buttonPrevious.setScreen();
			this.buttonNext.setScreen();
			this.buttonZoom.setScreen();
		} else this.node.style.display = "none";
	}
}
function SlideShowNaviButton(node) {
	this.node = node;
	this.show = true;
	this.inactiveUrl = node.src;
	this.activeUrl = node.src.replace("Inactive","Active");
	this.isActive = false;
	this.imgToLoad = "";
	this.setScreen = function() {
		if(this.show) this.node.src = this.activeUrl;
		else this.node.src = this.inactiveUrl;
	}
}
/*******************************************************************************
 *                       @REGION: Abdeckung-Galerie
 *******************************************************************************/
function AbdeckungGalerieItem(div) {
	this.div = div;
	this.belastungsklassen = new Array();
	this.lis = this.div.getElementsByTagName("LI");
	for(var i = 0;i<this.lis.length;i++) {
		this.belastungsklassen.push(this.lis[i].innerHTML);
	}
	this.setMyVisibilityByBelastungsklasse = function (belastungsklasse) {
		isIn = false;
		for(var i = 0;i<this.belastungsklassen.length;i++) {
			if(this.belastungsklassen[i].match(belastungsklasse)) isIn = true;
		}
		if(isIn) {
			this.showSoEver();
		} else {
			this.div.className = "adbdeckungsartenGalerieItem fadet";
		}
	}
	this.showSoEver = function () {
		this.div.className = "adbdeckungsartenGalerieItem";
	}
}
function AdditionalContent() {
	this.node = document.getElementById("additionalContent");
	this.ul = this.node.getElementsByTagName("UL")[0];
	this.show = false;
	this.dokumente =  new Array();
	this.setScreen = function() {
		if(this.show) {
			this.node.style.display = "block";
			window.prodapl.fileInfoLoaders = new Array();
			for(var i = 0; i<this.dokumente.length;i++) {
				var li = document.createElement("LI");
				li.className = this.dokumente[i].type;
				li.className += " "+this.dokumente[i].link.replace(/.*\./,"");
				var a = document.createElement("A");
				a.href = this.dokumente[i].link.replace("WebSmall","Original");
				a.target = "_blank";
				a.innerHTML = this.dokumente[i].text.replace("_"," ");
				li.appendChild(a);
				var div = document.createElement("DIV");
				div.className = "fileInfo";
				li.appendChild(div);
				this.ul.appendChild(li);
				var fil = new fileInfoLoader(li);
				window.prodapl.fileInfoLoaders.push(fil);
				fil.sendMyRequest();
			}
		} else {
			this.node.style.display = "none";
		}
	}
	this.clear = function() {
		this.dokumente = new Array();
		this.ul.innerHTML = "";
	}
	this.add = function(Dokument) {
		this.dokumente.push(Dokument);
	}
}

/*******************************************************************************
 *                       @REGION: DataTables
 *******************************************************************************/

function setDataTableDisplay(table, isVisible) {
	if(isVisible) {
		table.style.display = "block";
	} else {
		table.style.display = "none";
	}
}

/*******************************************************************************
 *                       @REGION: Event-Handling
 *******************************************************************************/
function artikelTableButton_click(a) {
	tn = new TechnischeDaten(a.parentNode.parentNode);
	if(a.className == "open") {
		a.className = "";
		tn.setTableOpenClose(false);
	} else {
		tn.setTableOpenClose(open);
		if(tn.buttonCaption.match("Unterteil")) {
			prodapl.state = "TypenTableOpen";
		}
		a.className = "open";
	}
}
function belastungsklassen_onChange(select) {
	prodapl.selectedBelastungskasse = select.options[select.selectedIndex].value;
	if(prodapl.selectedBelastungskasse=="") prodapl.state = "AbdeckungenOverview";
	else prodapl.state = "AbdeckungenOverview_BelastungsklasseSelected";
	prodapl.setScreen();
}
function abdeckung_click(a) {
	prodapl.state = "AbdeckungenOverview";
	prodapl.setScreen();
}
function unterteile_click(a) {
	if(prodapl.state != "Init") {
		prodapl.state = "Init";
		prodapl.setScreen();
	}
}
function produktNavi_click(a) {
	if(prodapl.currentProdukt != null) prodapl.currentProdukt.downlite();
	prodapl.miscButtonActive = a;
	if(a.id.match("additionalButton")) {
		prodapl.state = "AdditionalContentOpen";
		prodapl.additionalContentNo = a.id.replace("additionalButton","");
		prodapl.produktNavi.highliteNaviPoint(prodapl.produktNavi.additionalNavPointsStart+(prodapl.additionalContentNo-1));
	} else {
		prodapl.state = "MiscTableOpen";
	}
	prodapl.setScreen();
	a.href = "#";
// 	return false;
}
function artikelTable_click(node) {
	if(prodapl.currentProdukt) {
		prodapl.currentProdukt.downlite();
	}
	prodapl.currentProdukt = new ProduktData(node);
	var tds = node.getElementsByTagName("TD");
	var lastHan = tds[(tds.length-1)].innerHTML;
	if(node.id!="") {
		if(lastHan != prodapl.currentProdukt.ArtNrs[0] && lastHan != "-") {
			prodapl.currentProdukt.ArtNrs.push(lastHan);
		}
	}
	prodapl.state = "TypeSelected";
	prodapl.setScreen();
}
function abdeckungsart_click(node, abdeckungsart) {
	var goOn = true;
	if(node) {
		if(node.parentNode) {
			if(node.parentNode.className.match("fadet")) {
				goOn = window.confirm(Translator.transByIndex(253)+"\n"+Translator.transByIndex(254));
				if(goOn) {
					prodapl.selectedBelastungskasse = "";
				}
			}
		}
	}
	if(goOn) {
		if(prodapl.currentProdukt) {
			prodapl.currentProdukt.downlite();
		}
		prodapl.state = "AbdeckungsartSelected";
		prodapl.setAbdeckungsart(abdeckungsart);
		prodapl.setScreen();
	}
}
function produktSlideShowNaviButtonsNext_click(target) {
	if(prodapl.slideShowNavi.buttonNext.show) {
		if(prodapl.currentProdukt) {
			prodapl.currentProdukt.downlite();
		}
		prodapl.currentProdukt = new ProduktData(prodapl.slideShowNavi.buttonNext.targetNode);
		prodapl.state = "TypeSelected";
		prodapl.setScreen();
	}
}
function produktSlideShowNaviButtonsPrevious_click(target) {
	if(prodapl.slideShowNavi.buttonPrevious.show) {
		if(prodapl.currentProdukt) {
			prodapl.currentProdukt.downlite();
		}
		prodapl.currentProdukt = new ProduktData(prodapl.slideShowNavi.buttonPrevious.targetNode);
		prodapl.state = "TypeSelected";
		prodapl.setScreen();
	}
}
function produktSlideShowNaviButtonsZoom_click(target) {
	document.getElementById("produktSlideShowBildZoomDiv").style.display = "block";
}
var prodapl =  new ProduktApplikation();

