//  Präfix:     gewähltes Präfix (hier "s");
//  intervall:  Zeit zwischen den Überblendungen
//  loop :      nach dem Durchlauf von vorne beginnen, 1=ja, 0=nein
//  duration:   Zeit für den Überblendungseffekt
//  link:       Link auf dem Bild
//
//  <div id="sbox">
//    <img id="simage" src="img/1.jpg" alt="" width="600" height="400" />
//    <a class="slidelink" href="img/1.jpg" rel="slidebox[s,2,0,1]">Bild 1</a>
//    <a class="slidelink" href="img/2.jpg" rel="slidebox[s,,,,http://www.solid-t.de/]">Bild 2</a>  
//    <a class="slidelink" href="img/3.jpg" rel="slidebox[s]">Bild 3</a>
//    <a class="slidelink" href="img/4.jpg" rel="slidebox[s]">Bild 4</a>
//    <a class="slidelink" href="img/5.jpg" rel="slidebox[s]">Bild 5</a>
//  </div>
//
// -----------------------------------------------------------------------------------
//
//	init vars
//

// jQuery
//

;(function($) {
	var myInterval = 7; // Default Zeit zwischen den einzelnen Bildern in Sekunden
	var myDuration = 1; // Default Zeit für den Überblend-Effekt in Sekunden
	var myLoop = 1;     // Default Loop (true,false)

	var aryImages = new Object();
	var sbactiveImage = new Object();
	var mtimer = new Object();
	
	jQuery.Slidebox = {
		initialize: function()
		{
			if (!document.getElementsByTagName){ return; } // abbrechen, wenn getElementsByTagName nicht vorhanden ist
    	// vars
			var thbinterval = new Object();
    	var thbloop = new Object();
    	var thbduration = new Object();
    
			// alle links finden
			var anchors = document.getElementsByTagName('a');
    	// alle prüfen
			if( !anchors ) return;
			for (var i=0, len=anchors.length; i<len; i++)
			{
				var anchor = anchors[i];
				// nur rel berücksichtigen
				var relAttribute = String(anchor.getAttribute('rel'));
				// und davon nur slidebox
				if (anchor.getAttribute('href') && (relAttribute.toLowerCase().match(/^slidebox\[(.+)\]$/i)))
				{
					// attribute ermitteln
					var thbparts = RegExp.$1.split(",");
					var thbox = "";
        	// parameter
        	// boxname
        	if( thbox = thbparts[0] )
					{
						if( !thbinterval[thbox] ){ thbinterval[thbox] = myInterval; }
						if( !thbloop[thbox] ){ thbloop[thbox] = myLoop; }
						if( !thbduration[thbox] ){ thbduration[thbox] = myDuration; }
						var link = "";
	          // intervall
    	      if( thbparts[1] && !isNaN(parseFloat(thbparts[1])) )
						{
							thbinterval[thbox] = parseFloat(thbparts[1]);
						}
						// loop
						if( thbparts[2] && !isNaN(parseFloat(thbparts[2])) && thbparts[2] == 0 )
						{
							thbloop[thbox] = 0;
						}
						// duration
						if( thbparts[3] && !isNaN(parseFloat(thbparts[3])) )
						{
							thbduration[thbox] = parseFloat(thbparts[3]);
						}
						if( thbduration[thbox] > thbinterval[thbox] )
						{
							thbduration[thbox] = thbinterval[thbox];
						}
	          // link
    	      if( thbparts[4] )
						{
							link = thbparts[4];
						}
						if( !aryImages[thbox] )
						{
							aryImages[thbox] = new Array();
						}
						// href, intervall, loop, duration, link, titel, text
        	  aryImages[thbox].push(new Array(anchor.getAttribute('href'), thbinterval[thbox], thbloop[thbox], thbduration[thbox], link, String(anchor.getAttribute('title')), String(anchor.innerHTML)));          
					}
				}
			}
			
			// get the BOX
			for (var boxname in aryImages)
			{
				if( aryImages.length <= 1 || !document.getElementById(boxname + 'image') || !document.getElementById(boxname + 'image').getAttribute('src') )
				{
					delete aryImages[boxname];
				} 
				else if( aryImages[boxname][0][0] != document.getElementById(boxname + 'image').getAttribute('src') )
				{
					aryImages[boxname].unshift(new Array(document.getElementById(boxname + 'image').getAttribute('src'), aryImages[boxname][0][1], aryImages[boxname][0][2], aryImages[boxname][0][3]));
				}
			}
			
    	// DOM erweitern
    	for (var boxname in aryImages){
      	sbactiveImage[boxname] = 0;
	      if( document.getElementById(boxname + "box") ){
  	      var objBox = document.getElementById(boxname + "box");
    	    objBox.style.position = 'relative';
      	  // imgContainer
	        for( var i=0, len=aryImages[boxname].length; i<len; i++ ){
  	    		var objImgContainer = document.createElement("div");
    	  		objImgContainer.setAttribute('id',boxname+'_ic'+i);
      			objImgContainer.style.position = 'absolute';
      			objImgContainer.style.left = 0;
	      		objImgContainer.style.top = 0;
  	    		objImgContainer.style.overflow = 'hidden';
    	  		objImgContainer.style.width = ''+$('#' + boxname + "image").width()+'px';
      			objImgContainer.style.height = ''+$('#' + boxname + "image").height()+'px';
      			if( i == 0 ){
          	  $('#' + boxname + "box").css({width: ''+objImgContainer.style.width+'',height: ''+objImgContainer.style.height+''});
          	}
	      		objImgContainer.style.display = 'none';
  	        objBox.appendChild(objImgContainer);

	          // titel container
  	    		var objTitelContainer = document.createElement("div");
    	  		objTitelContainer.setAttribute('id',boxname+'_tc'+i);
      			objTitelContainer.style.position = 'absolute';
      			objTitelContainer.style.overflow = 'hidden';
      			objTitelContainer.style.left = 0;
	      		objTitelContainer.style.display = 'none';
  	    		objTitelContainer.style.bottom = 0;
  	    		objTitelContainer.style.opacity = 0;
  	    		objTitelContainer.style.filter = 'alpha(opacity=0)';
    	  		objTitelContainer.style.width = ''+$('#' + boxname + "box").width()+'px';
      			objTitelContainer.style.height = '40px';
      			objTitelContainer.style.background = '#333';
      		
	      		var objTDIVContainer = document.createElement("div");

  	        // h2 titel container
    	      var htitel = '';
      	    if( aryImages[boxname][i][5] && aryImages[boxname][i][5] != "" && aryImages[boxname][i][5] != NULL ) htitel = aryImages[boxname][i][5];          
        	  var objTHeadContainer = document.createElement("h2");
          	objTHeadContainer.style.padding = '5px';
	          objTHeadContainer.style.color = '#FFF';
  	        objTHeadContainer.style.margin = 0;
    	      objTHeadContainer.style.fontWeight = 'bold';
      	    objTHeadContainer.style.fontSize = '10px';
        	  objTHeadContainer.style.fontFamily = 'Verdana,Arial,Helvetica,sans-serif';
	          var objHText = document.createTextNode(htitel);
          
	          // p titel container
  	        var htext = '';
    	      if( aryImages[boxname][i][6] && aryImages[boxname][i][6] != "" ) htext = aryImages[boxname][i][6];                    
      	    var objTPContainer = document.createElement("p");
	          objTPContainer.style.paddingLeft = '5px';
  	        objTPContainer.style.paddingRight = '5px';
    	      objTPContainer.style.color = '#FFF';
      	    objTPContainer.style.margin = 0;
        	  objTPContainer.style.fontWeight = 'bold';
          	objTPContainer.style.fontSize = '10px';
	          objTPContainer.style.fontFamily = 'Verdana,Arial,Helvetica,sans-serif';
  	        var objPText = document.createTextNode(htext);
                    
    	      objTHeadContainer.appendChild(objHText);
      	    objTPContainer.appendChild(objPText);
        	  //objTitelContainer.appendChild(objTHeadContainer);
          	//objTitelContainer.appendChild(objTPContainer);
	          objTDIVContainer.appendChild(objTHeadContainer);
  	        objTDIVContainer.appendChild(objTPContainer);
    	      objTitelContainer.appendChild(objTDIVContainer);
      	    objBox.appendChild(objTitelContainer);

	          // image
  	        var objImage = document.createElement("img");
    	      objImage.setAttribute('src', aryImages[boxname][i][0]);
      	    objImage.setAttribute('border','0');
        	  if( aryImages[boxname][i][4] && aryImages[boxname][i][4] != "" )
						{
        			var objLink = document.createElement("a");
	        		objLink.className = 'imagelink';
  	      		objLink.setAttribute('href',aryImages[boxname][i][4]);        		
    	     		objImgContainer.appendChild(objLink);
      	   		objLink.appendChild(objImage);
        	  } else {
          	  objImgContainer.appendChild(objImage);
	          }
  	      }
			  }
			}
			
			for (var boxname in aryImages){
 		    $('#'+boxname+'_ic'+sbactiveImage[boxname]).show();
    	  $('#'+boxname + 'image').hide();
  	  	this.start(boxname);
  		}
		},
  	start: function(boxname)
		{
		  if( sbactiveImage[boxname] < aryImages[boxname].length-1 || aryImages[boxname][sbactiveImage[boxname]][2] == 1 ){
		    if( mtimer[boxname] ){
    	    clearTimeout(mtimer[boxname]);
      	}
      	var mdur = (aryImages[boxname][sbactiveImage[boxname]][1]*1000)-(aryImages[boxname][sbactiveImage[boxname]][3]*1000);
      	//alert(mdur);
      	mtimer[boxname] = setTimeout("jQuery.Slidebox.changeImage('"+boxname+"')", mdur);
      
      	// href, intervall, loop, duration, link, titel, text
      	if( (mdur-2000) >= 1000 && (aryImages[boxname][sbactiveImage[boxname]][5] || aryImages[boxname][sbactiveImage[boxname]][6]) ){
	        this.changeHeader(boxname, sbactiveImage[boxname], mdur, 0);
  	    }
    	}
		},
  	changeImage: function(boxname)
		{
	  	osbactiveImage = sbactiveImage[boxname];
    	if( sbactiveImage[boxname] < aryImages[boxname].length-1 )
			{
				sbactiveImage[boxname]++;
			} 
			else
			{
				sbactiveImage[boxname]=0;
			}
    	imgPreloader = new Image();    

    	imgPreloader.onload=function()
			{
				$('#'+boxname+'_ic'+osbactiveImage).fadeOut((aryImages[boxname][osbactiveImage][3]*1000));
				$('#'+boxname+'_ic'+sbactiveImage[boxname]).fadeIn((aryImages[boxname][sbactiveImage[boxname]][3]*1000), function(){ jQuery.Slidebox.start(boxname); });      
    	}
    	imgPreloader.src = aryImages[boxname][sbactiveImage[boxname]][0];    
    	jQuery.Slidebox.preloadNextImages(boxname);
		},
  	changeHeader: function(boxname, osbactiveImage, mdur, n)
		{
		  if( !n || n==0){
		  	//$('#'+boxname+'_tc'+osbactiveImage).fadeTo(1000, 0.7).slideDown(1000);
		  	$('#'+boxname+'_tc'+osbactiveImage).animate({height: "show", opacity: 0.7}, 1000);
	      setTimeout("jQuery.Slidebox.changeHeader('"+boxname+"', '"+osbactiveImage+"', '"+mdur+"', 1)", (mdur-1000));
    	}
			else
			{
				$('#'+boxname+'_tc'+osbactiveImage).animate({height: "hide", opacity: "hide"}, 1000);
				//$('#'+boxname+'_tc'+osbactiveImage).slideUp(1000).fadeOut(1000);				
    	}
		},
		preloadNextImages: function(boxname){
			if((aryImages[boxname].length - 1) > sbactiveImage[boxname]){
				preloadNextImage = new Image();
				preloadNextImage.src = aryImages[boxname][sbactiveImage[boxname] + 1][0];
			}
		}
	};
	
	$(document).ready(function(){jQuery.Slidebox.initialize();});

})(jQuery);

