// JavaScript Document

function imageSlideshow (imageSlideshowId,newLoadingImage){
	
	var idSuffixImage		="_image";
	var idSuffixButtonPrev	="_buttonPrev";
	var idSuffixIndex		="_index";
	var idSuffixButtonNext	="_buttonNext";
	var idSuffixTextarea	="_textarea";
	
	var objContainer;
	var objImage;
	var objButtonPrev;
	var objIndex;
	var objButtonNext;
	var objTextarea;
	
	if(document.getElementById(imageSlideshowId))					objContainer	=document.getElementById(imageSlideshowId)
	if(document.getElementById(imageSlideshowId+idSuffixImage))		objImage		=document.getElementById(imageSlideshowId+idSuffixImage)
	if(document.getElementById(imageSlideshowId+idSuffixButtonPrev))objButtonPrev	=document.getElementById(imageSlideshowId+idSuffixButtonPrev)
	if(document.getElementById(imageSlideshowId+idSuffixIndex))		objIndex		=document.getElementById(imageSlideshowId+idSuffixIndex)
	if(document.getElementById(imageSlideshowId+idSuffixButtonNext))objButtonNext	=document.getElementById(imageSlideshowId+idSuffixButtonNext)
	if(document.getElementById(imageSlideshowId+idSuffixTextarea))	objTextarea		=document.getElementById(imageSlideshowId+idSuffixTextarea)
	
	objContainer.style.display="none";
	var images= new Array();
	var legends= new Array();
	var currentImage;
	
	var indexElement=objIndex.innerHTML;
	var loadingImage=newLoadingImage;

	this.destructor = function (){
	}
	addEvent(window,"unload",this.destructor);



	this.addImage = function (url,legend){
		var index=images.length;
		images[index]=url;
		legends[index]=legend;
		if(index<=0){
			objContainer.style.display="block";
			currentImage=0;
			setCurrent(0);
		}
		updateAll();

	}
	
	function setCurrent(index){
		if(images[index])
			currentImage=index;
	}

	this.prev = function(){
		this.goto0(currentImage-1);
	}

	this.goto = function(index){
		this.goto0(index-1);
	}
	
	this.goto0 = function(index){
		if(images[index]){
			setCurrent(index);
			updateAll();
		}
	}
	
	this.next = function(){
		this.goto0(currentImage+1);
	}
	
	function updateAll(){
		updateImage();
		updateSlider();
		updateTextarea();
	}

	function updateSlider () {
		var sliderContent="";
		var temp;
		for(var i=0;i<images.length;i++){
			temp=indexElement.replace(/{index}/g, i+1);
			if(i==currentImage)
				temp=temp.replace(/{class}/g,"imageIndexSelected");
			else
				temp=temp.replace(/{class}/g,"imageIndex");
			sliderContent+=temp;
		}
		objIndex.innerHTML=sliderContent;
	}

	function updateImage () {
		if(objImage){
			if(loadingImage)
				objImage.src=loadingImage;
			objImage.src=images[currentImage];
		}
	}

	function updateTextarea () {
		if(objTextarea && legends[currentImage])
			objTextarea.innerHTML=legends[currentImage];
			objTextarea.scrollTop
	}
}

function showcase (showcaseId,newLoadingImage){
	
	var imageTimeout=3000;
	
	var id=showcaseId;
	var loadingImage=newLoadingImage;
	var cases=new Array();
	var titles=new Array();
	var subtitles=new Array();
	var tags=new Array();
	var texts=new Array();
	var images=new Array();
	var barcodes=new Array();
	
	var showcaseE;
	var imageE;
	var titleE;
	var subtitleE;
	var tagboxE;
	var tagsE;
	var textareaE;
	var imagePrevE;
	var imageIndexE;
	var imageNextE;
	var barcodeSmallE;
	var barcodeBigE;
	var barcodeBigImageE;

	var imageIndexEmpty;
	var tagEmpty;

	var imageSuffix				="_image";
	var titleSuffix				="_title";
	var subtitleSuffix			="_subtitle";
	var tagboxSuffix			="_tagbox";
	var tagsSuffix				="_tags";
	var textareaSuffix			="_textarea";
	var imagePrevSuffix			="_buttonPrev";
	var imageIndexSuffix		="_index";
	var imageNextSuffix			="_buttonNext";
	var barcodeSmallSuffix		="_barcodeSmall";
	var barcodeBigSuffix		="_barcodeBig";
	var barcodeBigImageSuffix	="_barcodeBigImage";
	
	var currentCase=-1;
	var currentImage=-1;
	var imageSlideTimer;

	if(document.getElementById(id))							showcaseE			=document.getElementById(id);
	if(document.getElementById(id+imageSuffix))				imageE				=document.getElementById(id+imageSuffix);
	if(document.getElementById(id+titleSuffix))				titleE				=document.getElementById(id+titleSuffix);
	if(document.getElementById(id+subtitleSuffix))			subtitleE			=document.getElementById(id+subtitleSuffix);
	if(document.getElementById(id+tagboxSuffix))			tagboxE				=document.getElementById(id+tagboxSuffix);
	if(document.getElementById(id+tagsSuffix)){				tagsE				=document.getElementById(id+tagsSuffix);
															tagEmpty			=document.getElementById(id+tagsSuffix).innerHTML;			}
	if(document.getElementById(id+textareaSuffix))			textareaE			=document.getElementById(id+textareaSuffix);
	if(document.getElementById(id+imagePrevSuffix))			imagePrevE			=document.getElementById(id+imagePrevSuffix);
	if(document.getElementById(id+imageIndexSuffix)){		imageIndexE			=document.getElementById(id+imageIndexSuffix);
															imageIndexEmpty		=document.getElementById(id+imageIndexSuffix).innerHTML;	}
	if(document.getElementById(id+imageNextSuffix))			imageNextE			=document.getElementById(id+imageNextSuffix);
	if(document.getElementById(id+barcodeSmallSuffix))		barcodeSmallE		=document.getElementById(id+barcodeSmallSuffix);
	if(document.getElementById(id+barcodeBigSuffix))		barcodeBigE			=document.getElementById(id+barcodeBigSuffix);
	if(document.getElementById(id+barcodeBigImageSuffix))	barcodeBigImageE	=document.getElementById(id+barcodeBigImageSuffix);

	this.destructor = function (){
		window.clearTimeout(imageSlideTimer);
	}
	addEvent(window,"unload",this.destructor);

	this.addCase = function (name,title,text,barcode,subtitle){
		var index=cases.length;
		cases[index]=name?name:"";
		titles[index]=title?title:"";
		subtitles[index]=subtitle?subtitle:"";
		texts[index]=text?text:"";
		barcodes[index]=barcode?barcode:"";
		tags[index]=new Array();
		images[index]=new Array();
		if(currentCase<0){
			currentCase=index;
		}
	}
	
	this.addImage = function (caseName,url){
		if(getIdByCase(caseName)>=0){
			images[getIdByCase(caseName)][images[getIdByCase(caseName)].length]=url;
			if(currentImage<0){
				currentImage=0;
			}
		}
	}
	
	this.addTag = function (caseName,title,url){
		if(getIdByCase(caseName)>=0){
			tags[getIdByCase(caseName)][tags[getIdByCase(caseName)].length]=Array(title,url);
		}
	}
	
	function updateAll(){
		updateTitle();
		updateSubtitle();
		updateTags();
		updateText();
		updateImage();
		updateSlider();
		updateBarcode();
		imageSlide();
	}
	this.updateAll = function (){updateAll();}
	
	function updateTitle(){
		if(titleE && titles[currentCase])
			titleE.innerHTML=titles[currentCase];
	}
	
	function updateSubtitle(){
		if(subtitleE && subtitles[currentCase])
			subtitleE.innerHTML=subtitles[currentCase];
	}
	
	function updateTags(){
		if(tagboxE && tagEmpty){
			var tagboxContent="";
			var temp;
			if(tags[currentCase].length>0){
				tagboxE.style.visibility="visible";
				for(var i=0;i<tags[currentCase].length;i++){
					temp=tagEmpty;
					temp=temp.replace(/%url%/g, tags[currentCase][i][1]);
					temp=temp.replace(/%title%/g, tags[currentCase][i][0]);
					tagboxContent+=temp;
				}
			}else{
				tagboxE.style.visibility="hidden";
			}
			tagsE.innerHTML=tagboxContent;
		}
	}
	
	function updateText(){
		if(textareaE && texts[currentCase])
			textareaE.innerHTML=texts[currentCase];
			textareaE.scrollTop=0;
	}
	
	function updateImage(){
		if(images[currentCase][currentImage]){
			imageE.src=images[currentCase][currentImage];
		}
	}
	
	function updateSlider(){
		var sliderContent="";
		var temp;
		for(var i=0;i<cases.length;i++){
			temp=imageIndexEmpty;
			temp=temp.replace(/{index0}/g, i);
			temp=temp.replace(/{index1}/g, i+1);
			if(i==currentCase)
				temp=temp.replace(/{class}/g,"imageIndexSelected");
			else
				temp=temp.replace(/{class}/g,"imageIndex");
			sliderContent+=temp;
		}
		imageIndexE.innerHTML=sliderContent;
	}
	
	function updateBarcode(){
		if(barcodes[currentCase]!=""){
			if(barcodeBigE && barcodeBigImageE){
				barcodeSmallE.style.display="block";
				barcodeBigImageE.src=barcodes[currentCase];
			}
		}else{
			barcodeSmallE.style.display="none";
		}
	}

	function imageSlide(){
		window.clearTimeout(imageSlideTimer);
		imageE.src=images[currentCase][currentImage];
		if(images[currentCase].length>1){
			if(images[currentCase][currentImage+1]){
				currentImage+=1;
			}else if(images[currentCase][0]){
				currentImage=0;
			}
			imageSlideTimer=window.setTimeout(function(){imageSlide();},imageTimeout);
		}
	}
	
	this.imageSet = function (index){
		window.clearTimeout(imageSlideTimer);
		if(images[currentCase][index]){
			currentImage=index;
			updateImage();
		}
	}
	
	this.imagePrev = function (){this.imageSet(currentImage-1);}
	this.imageNext = function (){this.imageSet(currentImage+1);}

	this.caseSet = function (index){
		if(cases[index]){
			currentCase=index;
			currentImage=0;
			updateAll();
		}
	}
	
	this.casePrev = function (){this.caseSet(currentCase-1);}
	this.caseNext = function (){this.caseSet(currentCase+1);}

	function getCaseById(id){
		if(cases[id])
			return cases[id];
		else
			return false;
	}
	function getIdByCase(caseName){
		for(var i=0;i<cases.length;i++){
			if(cases[i]==caseName){
				return i;
			}
		}
		return -1;
	}
}

function videoBox (videoBoxId){
	
	var idSuffixObject		="_object";
	var idSuffixLinks		="_videolinks";
	var idSuffixLegendHeader="_legendheader";
	var idSuffixLegendText	="_legendfooter";
	
	var objContainer;
	var objObject;
	var objLinks;
	var objLegendHeader;
	var objLegendText;
	
	if(document.getElementById(videoBoxId))							objContainer	=document.getElementById(videoBoxId)
	if(document.getElementById(videoBoxId+idSuffixObject))			objObject		=document.getElementById(videoBoxId+idSuffixObject)
	if(document.getElementById(videoBoxId+idSuffixLinks))			objLinks		=document.getElementById(videoBoxId+idSuffixLinks)
	if(document.getElementById(videoBoxId+idSuffixLegendHeader))	objLegendHeader	=document.getElementById(videoBoxId+idSuffixLegendHeader)
	if(document.getElementById(videoBoxId+idSuffixLegendText))		objLegendText	=document.getElementById(videoBoxId+idSuffixLegendText)
	
	objContainer.style.display="none";
	var links  = new Array();
	var teasers= new Array();
	var headers= new Array();
	var legends= new Array();
	var currentLink;
	
	var linkElement=objLinks.innerHTML;

	this.destructor = function (){
	}
	addEvent(window,"unload",this.destructor);



	this.addLink = function (url,teaser,header,legend){
		var index=links.length;
		links[index]=url;
		teasers[index]=teaser;
		headers[index]=header;
		legends[index]=legend;
		if(index<=0){
			objContainer.style.display="block";
			currentLink=0;
			setCurrent(0);
		}
		updateAll();

	}
	
	function setCurrent(index){
		if(links[index])
			currentLink=index;
	}

	this.prev = function(){
		this.goto0(currentLink-1);
	}

	this.goto = function(index){
		this.goto0(index-1);
	}
	
	this.goto0 = function(index){
		if(links[index]){
			setCurrent(index);
			updateAll();
		}
	}
	
	this.next = function(){
		this.goto0(currentLink+1);
	}
	
	function updateAll(){
		updateObject();
		updateLinks();
		updateLegend();
	}

	function updateLinks () {
		var linksContent="";
		var temp=linkElement;
		for(var i=0;i<links.length;i++){
			temp=linkElement;
			temp=temp.replace(/{teaser}/g, teasers[i]);
			temp=temp.replace(/{index}/g, i);
			if(i==currentLink)
				temp=temp.replace(/{styleClass}/g,"current");
			else
				temp=temp.replace(/{styleClass}/g,"");
			linksContent+=temp;
		}
		objLinks.innerHTML=linksContent;
	}

	function updateObject () {
/*		if(objImage){
			if(loadingImage)
				objImage.src=loadingImage;
			objImage.src=images[currentImage];
		}
	*/}

	function updateLegend () {
		if(objLegendHeader && headers[currentLink]!="undefined")
			objLegendHeader.innerHTML=headers[currentLink];
		if(objLegendText && legends[currentLink]!="undefined")
			objLegendText.innerHTML=legends[currentLink];
	}
}



var barcodesOpened=new Array();
var barcodeToShow="";
function barcodeShow(id){
	if(document.getElementById(id)){
		barcodeToShow=id;
	}
}
function barcodeHide(id){
	if(document.getElementById(id)){
		document.getElementById(id).style.display="none";
	}
}
function barcodeSwap(){
	for(var i=0;i<barcodesOpened.length;i++){
		barcodeHide(barcodesOpened[i]);
	}
	delete(barcodesOpened);
	if(barcodeToShow!=""){
		if(document.getElementById(barcodeToShow)){
			barcodesOpened[barcodesOpened.length]=barcodeToShow;
			document.getElementById(barcodeToShow).style.display="block";
		}
		barcodeToShow="";
	}
}
addEvent(document,"click",barcodeSwap);


function manufacturerIndex(className){
	var divs=getElementsByClassName(className,document);
/*
	var selectE=document.getElementById(className+'Select');
	while(selectE.hasChildNodes()){selectE.removeChild(selectE.lastChild);}
	var optionE=document.createElement('option');
	optionE.text=unescape("Bitte Hersteller w%E4hlen");
	selectE.appendChild(optionE);
*/
	for(var i=0;i<divs.length;i++){
		if(divs[i].id==className+"List"){
			divs[i].style.display="block";
		}else{
			divs[i].style.display="none";
/*
			optionE=document.createElement('option');
			optionE.value=divs[i].id;
			optionE.text=divs[i].id;
			optionE.onclick=function(){manufacturerSelect(className,this);};
			selectE.appendChild(optionE);
*/
		}
	}
}

function manufacturerSelect(className,element){
	manufacturerIndex(className);
	document.getElementById(element.value).style.display="block";
}

function getElementsByClassName(classname, node) {
	if(!node) node = document.getElementsByTagName("body")[0];
	var a = [];
	var re = new RegExp('\\b' + classname + '\\b');
	var els = node.getElementsByTagName("*");
	for(var i=0,j=els.length; i<j; i++)
	if(re.test(els[i].className))a.push(els[i]);
	return a;
}

function submitForm(id){
	var error=false;
	if(validate_hasValue(id+"_name")){
		gebi(id+"_name_div").className="";
	}else{
		gebi(id+"_name_div").className="error";
		error=true;
	}
	if(validate_isEmail(id+"_email")){
		gebi(id+"_email_div").className="";
	}else{
		gebi(id+"_email_div").className="error";
		error=true;
	}
	if(!error){
		eval("document."+id+".submit();");
	}
}

function validate_hasValue(id){
	if(gebi(id).value!="undefined" && gebi(id).value!="") return true;
	else return false;
}
function validate_isEmail(id){
	var result = (/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}/);
	if(validate_hasValue(id) && result.test(gebi(id).value)) return true;
	else return false;
}

function gebi(id){return document.getElementById(id);}

