// JavaScript Document

var i = 1;
var pos = 1;
var alt_big;
var alt_thumbs;
var hoster = location.host;
var zoom;

function create_gallery() {
	
	window.onload = function() {initImage(); }
	
	var html_full = document.getElementById("dc_gallery").innerHTML;
	
	//////////////////////////////////////////////////////
	/////////// Width - Height auslesen //////////////////
	//////////////////////////////////////////////////////
	
	document.getElementById("dc_gallery").innerHTML = html_full+"<div id='gallery_thumb' name='gallery_thumb'><img></img></div><div id='thephoto'></div><div id='fancybox_image_sizes'></div>";
	var width_thumb = document.getElementById("gallery_thumb").offsetWidth;
	var height_thumb = document.getElementById("gallery_thumb").offsetHeight;
	
	var width_orig = document.getElementById("thephoto").offsetWidth;
	var height_orig = document.getElementById("thephoto").offsetHeight;
	
	var width_fancy = document.getElementById("fancybox_image_sizes").offsetWidth;
	var height_fancy = document.getElementById("fancybox_image_sizes").offsetHeight;
	
	document.getElementById("dc_gallery").innerHTML = html_full;
	
	////////////////////////////////////////////////////////
	//////////// <br> Replacement //////////////////////////
	////////////////////////////////////////////////////////
	
	var start_replac = html_full.indexOf("{$gallery_thumb");
	var end_replac = html_full.lastIndexOf("{$gallery_thumb");
	
	var replac_inner = html_full.slice(start_replac, end_replac);

	do {
		
	var suche_br = replac_inner.search("<br>");
		
		if (suche_br != -1)
		{
			replac_inner = replac_inner.replace("<br>", "");
		}
	
	} while (suche_br >= 0)
	
	do {
		
	var suche_br = replac_inner.search("<BR>");
		
		if (suche_br != -1)
		{
			replac_inner = replac_inner.replace("<BR>", "");
		}
	
	} while (suche_br >= 0)
	
	
	var bevor_replac = html_full.slice(0, start_replac);
	var after_replac = html_full.slice(end_replac);
	
	html_full = bevor_replac + replac_inner + after_replac;
	document.getElementById("dc_gallery").innerHTML = html_full;

	////////////////////////////////////////////////////////
	/////////// Thumb Replacements /////////////////////////
	////////////////////////////////////////////////////////
	
	var main_replac_index = html_full.indexOf("{$gallery ");
	var main_replac = html_full.slice(main_replac_index);
	var main_attr = main_replac.split("}");
	main_attr = main_attr[0];
	main_attr = main_attr.split(" ");
	
	var thumbs_per_row = main_attr[1].slice(16, main_attr[1].lastIndexOf('"'));
	var rows = main_attr[2].slice(6, main_attr[2].lastIndexOf('"'));
	var limit = parseInt(thumbs_per_row)*parseInt(rows);
	var slide = main_attr[3].slice(7, main_attr[3].lastIndexOf('"'));
	alt_thumbs = main_attr[4].slice(12, main_attr[4].lastIndexOf('"'));
	alt_big = main_attr[5].slice(9, main_attr[5].lastIndexOf('"'));
	zoom = main_attr[6].slice(6, main_attr[6].lastIndexOf('"'));
	
	if (zoom == 1)
	{
		var replacement = "<div id='gallery_holder'><a href='' id='lightbox' title=''><img src='' id='thephoto' width='"+width_orig+"' height='"+height_orig+"' /></a>";
	
		var template = document.getElementById("dc_gallery").title;
		
    	include('http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js');
		include('http://'+hoster+'/templates/'+template+'/dc_gallery/fancybox/jquery.fancybox-1.3.1.js');

	}
	else
	{
		var replacement ="<div id='gallery_holder'><img src='' id='thephoto' width='"+width_orig+"' height='"+height_orig+"' />";	
	}

	if (navigator.appName == "Netscape")
	{
		var first = main_attr[3].slice(7, main_attr[3].lastIndexOf('"'));
	}
	else
	{
		var first = main_attr[3].slice(7, main_attr[3].lastIndexOf('"'));
	}
	
	if (alt_big == "1")
	{
		var replacement = replacement+"<div id='alt_text_holder'></div></div>";
	}
	else
	{
		var replacement = replacement+"</div>";
	}
	
	
	main_attr = main_attr[0]+" "+main_attr[1]+" "+main_attr[2]+" "+main_attr[3]+" "+main_attr[4]+" "+main_attr[5]+" "+main_attr[6]+"}";
	html_full = html_full.replace(main_attr, replacement);

	var end_replac_index = html_full.indexOf("{$end}");
	var end_replac = html_full.slice(end_replac_index, parseInt(end_replac_index)+6)
	
	var start_thumb = "<div id='photobar'><a href='javascript:void(0);' name='link_left'><div class='slide_icon_left_inact' name='slide_left'></div></a><div id='photobar_thumb'><ul>";
	
	var end_thumb = "</ul></div><a href='javascript:slide_right(\""+limit+"\");' name='link_right'><div class='slide_icon_right' name='slide_right'></div></a></div>";
	
	html_full = html_full.replace(end_replac, end_thumb);
	
	do {
		
		var suche = html_full.search("{");

		if (suche != -1) {
	
			var index1 = html_full.indexOf("{");
			var index2 = html_full.indexOf("}");
			var to_replace = html_full.slice(index1, index2+1);
			
			var Attr = to_replace.split(" ");
			var alt_text = to_replace.split("\"");
			alt_text = alt_text[3];
			
			Attr[0] = Attr[0].slice(2, Attr[0].length);
			
			if (typeof(alt_text)=="undefined") 
			{	
				Attr[1] = Attr[1].slice(5, Attr[1].length-2);
				alt_text = "";
			}
			else
			{
				Attr[1] = Attr[1].slice(5, Attr[1].length-1);
			}

			var src = "http://"+hoster+"/images/"+width_thumb+"x"+height_thumb+"/" + Attr[1];
			var src2 = "http://"+hoster+"/images/"+width_orig+"x"+height_orig+"/" + Attr[1];
			var alt_src = "<div class='alt_text' name='alt_text'>"+alt_text+"</div>";
			var src_fancy = "http://"+hoster+"/images/"+width_fancy+"x"+height_fancy+"/"+Attr[1];

						
			if (i <= limit) 
			{
				
				var replacement = "<li class='thumb_alt' style='display: block;' name='thumb_alt'><span class='gallery_thumb'><a id='slider' href='javascript:void(0);' onClick='javascript:change_photo(\""+src2+"\", \""+alt_text+"\", \""+src_fancy+"\");'><img src='"+src+"' width='"+width_thumb+"' height='"+height_thumb+"' class='image_thumb'></a></span>";
				
			}
			
			else
			{
				
				var replacement = "<li class='thumb_alt' style='display: none;' name='thumb_alt'><span class='gallery_thumb'><a href='javascript:void(0);' onClick='javascript:change_photo(\""+src2+"\", \""+alt_text+"\", \""+src_fancy+"\");'><img src='"+src+"' width='"+width_thumb+"' height='"+height_thumb+"' class='image_thumb'></a></span>";
								
			}
			
			
			if (alt_thumbs == "1")
				{
					replacement = replacement+alt_src;
				}
				
			replacement = replacement + "</li>";
			
			if (i == 1)
			{
				replacement = start_thumb+replacement;
				var first_pic = Attr[1];
				var first_alt = alt_text;
			}

			i++;

			html_full = html_full.replace(to_replace, replacement);			
		}
		
	} while (suche >= 0)

		document.getElementById("dc_gallery").innerHTML = html_full;
		
		var src = "http://"+hoster+"/images/"+width_orig+"x"+height_orig+"/"+first_pic;
		
		document.getElementById("thephoto").src = src;
		document.getElementById("alt_text_holder").innerHTML = first_alt;

		if (zoom == 1)
		{
			src_fancy = "http://"+hoster+"/images/"+width_fancy+"x"+height_fancy+"/"+first_pic;
			document.getElementById("lightbox").href = src_fancy;
			document.getElementById("lightbox").title = first_alt;
		}
		
		if (i-1 <= (thumbs_per_row*rows))
		{
			document.getElementsByName("slide_right")[0].className = "slide_icon_right_inact";
			document.getElementsByName("link_right")[0].href = "javascript:void(0);";
		
		}

  	/////////////////////////////////////////////////////////////
	///////////////// Auf Limit fehlende Spans einfügen /////////
	/////////////////////////////////////////////////////////////

	if (((i-1)%limit) != 0)
	{
		var add_span = ""; 
		
		var miss_span = limit-((i-1)%limit);
		i = parseInt(i)+parseInt(miss_span);
		
		for(z = 1; z <= miss_span; z++)
		{
			var fill_span = "<div class='thumb_alt' style='display: none;' name='thumb_alt'><span class='gallery_thumb'></span></div>";
			var add_span = add_span + fill_span;
		}
		
		document.getElementById("photobar_thumb").innerHTML = document.getElementById("photobar_thumb").innerHTML+add_span;
		
	}
	
	var photobar_height = document.getElementById("photobar_thumb").clientHeight;
	document.getElementById("photobar").style.height = ""+photobar_height+"px";
	
	var photobar_width = document.getElementById("photobar_thumb").clientWidth;
	width_thumb = photobar_width/thumbs_per_row;

	var margin_thumbs = ((photobar_width-(thumbs_per_row*width_thumb))/2)+parseInt(thumbs_per_row);
	var multiplie;
	
	if(thumbs_per_row == "5") { multiplie = 0.75; }
	if(thumbs_per_row == "4") { multiplie = 1.5; }
	if(thumbs_per_row == "3") { multiplie = 3; }
	if(thumbs_per_row == "2") { multiplie = 6; }
	
	
	width_thumb = width_thumb - (margin_thumbs*thumbs_per_row)*multiplie;
	
	var class_thumb_alt = getElementsByClass("thumb_alt");
	var gallery_thumb = getElementsByClass("gallery_thumb");
	var image_thumb = getElementsByClass("image_thumb");
	
	for(z = 0; z < i; z++)
	{
		gallery_thumb[z].style.width = width_thumb+"px";
		class_thumb_alt[z].style.width = width_thumb+"px";
		image_thumb[z].style.width = width_thumb+"px";
				
		if(z%thumbs_per_row == 0)
		{
			class_thumb_alt[z].style.marginLeft = margin_thumbs+"px";
			//document.getElementsByName("thumb_alt")[z].style.marginLeft = margin_thumbs+"px";
		}
	}
}

///////////////////////////////////////////////////////
//////////// Gallery Photobar Slide (right) ///////////
///////////////////////////////////////////////////////

function slide_right(limit)
{
	var x = 0;
	
	if (navigator.appName == "Netscape")
	{
		document.getElementsByName("slide_left")[0].className = "slide_icon_left";
		document.getElementsByName("link_left")[0].href = "javascript: slide_left(\""+limit+"\");";
	}
	else
	{
		getElementsByName_iefix("div", "slide_left")[0].className = "slide_icon_left";
		getElementsByName_iefix("a", "link_left")[0].href = "javascript: slide_left(\""+limit+"\");";
	}
	
	for (j = pos-1; j <= i; j++)
	{
		if (getElementsByClass("thumb_alt")[j].style.display == "block")
		{
			getElementsByClass("thumb_alt")[j].style.display = "none";
			
		}
		else
		{
			if (x < limit)
			{
				getElementsByClass("thumb_alt")[j].style.display = "block";
				x++;
				pos++;
				if (pos > (i-limit-1))
				{
					if (navigator.appName == "Netscape")
					{
						document.getElementsByName("slide_right")[0].className = "slide_icon_right_inact";
						document.getElementsByName("link_right")[0].href = "javascript:void(0);";
					}
					else
					{
						getElementsByName_iefix("div", "slide_right")[0].className = "slide_icon_right_inact";
						getElementsByName_iefix("a", "link_right")[0].href = "javascript:void(0);";
					}
				}
			}
			
			
		}	
	}
	
}

///////////////////////////////////////////////////////
//////////// Gallery Photobar Slide (left) ///////////
///////////////////////////////////////////////////////

function slide_left (limit)
{
	var x = 0;
	if (navigator.appName == "Netscape")
	{
		document.getElementsByName("slide_right")[0].className = "slide_icon_right";
		document.getElementsByName("link_right")[0].href = "javascript:slide_right(\""+limit+"\");";
	}
	else
	{
		getElementsByName_iefix("div", "slide_right")[0].className = "slide_icon_right";
		getElementsByName_iefix("a", "link_right")[0].href = "javascript:slide_right(\""+limit+"\");";
	}

	for (j = (parseInt(pos-1)+parseInt(limit)-1); j >= 0; j--)
	{
		if (getElementsByClass("thumb_alt")[j].style.display == "block")
		{
			getElementsByClass("thumb_alt")[j].style.display = "none";
		}
		else
		{
			if (x < limit)
			{
				getElementsByClass("thumb_alt")[j].style.display = "block";
				x++;
				pos--;
				
				if (pos < limit)
				{
					if (navigator.appName == "Netscape")
					{
						document.getElementsByName("slide_left")[0].className = "slide_icon_left_inact";
						document.getElementsByName("link_left")[0].href = "javascript:void(0);";
					}
					else
					{
						getElementsByName_iefix("div", "slide_left")[0].className = "slide_icon_left_inact";
						getElementsByName_iefix("a", "link_left")[0].href = "javascript:void(0);";
					}
				}
			}
		}
	}
}

//////////////////////////////////////////////////////
//////////// geElementsByClass-Funktion //////////////
//////////////////////////////////////////////////////

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (count1 = 0, count2 = 0; count1 < elsLen; count1++) {
		if ( pattern.test(els[count1].className) ) {
			classElements[count2] = els[count1];
			count2++;
		}
	}
	return classElements;
}

function getElementsByName_iefix(tag, name) {
     
     var elem = document.getElementsByTagName(tag);
     var arr = new Array();
     for(i = 0,iarr = 0; i < elem.length; i++) {
          att = elem[i].getAttribute("name");
          if(att == name) {
               arr[iarr] = elem[i];
               iarr++;
          }
     }
     return arr;
}

////////////////////////////////////////////////////////////
////////// include-Funktionen (für CSS und JS) /////////////
////////////////////////////////////////////////////////////

function include(file)
{
    var script = document.createElement('script');
    var type = document.createAttribute('type');
    type.nodeValue = 'text/javascript';
    script.setAttributeNode(type);
    var source = document.createAttribute('src');
    source.nodeValue = file;
    script.setAttributeNode(source);
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(script);
}

function getCss(){
  // CSS für IEs nachladen
  var cssLocation = "http://www.duncrow.com/templates/duncrow/dc_gallery/jquery.fancybox-1.3.1/fancybox/jquery.fancybox-1.3.1.css";
  if(document.createStyleSheet) document.createStyleSheet(cssLocation);
    // CSS für Mozilla, Netscape, Opera nachladen
  else{
    var objStyle = document.createElement("style");
    var objText = document.createTextNode("@import url("+cssLocation+") screen;");
    objStyle.appendChild(objText);
    document.getElementsByTagName("head")[0].appendChild(objStyle);
  }
}



////////////////////////////////////////////////////////
////////////// Fade Effect /////////////////////////////
////////////////////////////////////////////////////////

function change_photo (image, text, srcfancy) {
	document.getElementById('thephoto').src = image;
	if (alt_big == "1")
	{
		document.getElementById('alt_text_holder').innerHTML = text;
	}
	if (zoom == 1)
	{
		document.getElementById("lightbox").href = srcfancy;
		document.getElementById("lightbox").title = text;
	}
	imageId = 'thephoto';
  	image = document.getElementById(imageId);
  	image.style.visibility = 'visible';
  	setOpacity(image, 0);
	image.onload = function() {fadeIn(imageId,0);};
}

function initImage() {
  	imageId = 'thephoto';
  	image = document.getElementById(imageId);
  	image.style.visibility = 'visible';
  	setOpacity(image, 0);
	fadeIn(imageId,0);
}


function fadeIn(objId,opacity) {
  	if (document.getElementById) {
    	obj = document.getElementById(objId);
    	if (opacity <= 100) {
      		setOpacity(obj, opacity);
      		opacity += 10;
      		window.setTimeout("fadeIn('"+objId+"',"+opacity+")", 60);
    		}
  		}
}

function setOpacity(obj, opacity) {
  	opacity = (opacity == 100)?99.999:opacity;
  
	// IE/Win
  	obj.style.filter = "alpha(opacity:"+opacity+")";
  
  	// Safari<1.2, Konqueror
  	obj.style.KHTMLOpacity = opacity/100;
  
  	// Older Mozilla and Firefox
  	obj.style.MozOpacity = opacity/100;
  
  	// Safari 1.2, newer Firefox and Mozilla, CSS3
  	obj.style.opacity = opacity/100;
}

document.write("<style type='text/css'>#thephoto {visibility:hidden;} </style>");

