// ********************************************************
// * Globale Variablen                                    *
// ********************************************************

// * Allgemein*********************************************

// Browser-Status
var photos_gecko_ver = 0;
var photos_msie_ver = 0;
var photos_alternate_browser = false;

// * Photo-Ladezustand ************************************

// Status: Photos geladen?
var photos_box_init = false;
// Status: Laden der Photos ist im Gange?
var photos_are_loading = false;
// Photodaten
var photos_array = false;

// * Überblendungen ***************************************

// Bildüberblendung aktiv
var photos_trans_in_progress = new Array();
// Aktuell gezeigtes Photo bei Überblendungen
var photos_startslide = new Array();
// Überblendungsdauer
var photos_duration = 750;

// * Main *************************************************

// Initialisierungen
function initPhotoBox(array_obj)
{
	if (array_obj)
	{
		photos_array = array_obj;
		//initLightbox();
		initPhotoBoxPhotos(array_obj);
	}

  // Browser-Erkennung
  var ua = navigator.userAgent.toLowerCase();
  var pos_gecko = ua.indexOf('gecko/');
  var pos_msie = ua.indexOf('; msie ');

  if (pos_gecko != -1)
  {
    var navi_ver = ua.substr(pos_gecko + 6, 4);

    if (!isNaN(navi_ver))
    {
      photos_gecko_ver = parseInt(navi_ver);
    }
  }
  else if (pos_msie != -1)
  {
    var navi_ver = ua.substr(pos_msie + 7, 1);

    if (!isNaN(navi_ver))
    {
      photos_msie_ver = parseInt(navi_ver);
    }
  }

  if (photos_gecko_ver === false && photos_msie_ver === false)
  {
    photos_alternate_browser = true;
  }
}


// * Photo Loading ****************************************

// Laden der Photos nach body.onload-Ereignis
function initPhotoBoxPhotos(array_obj)
{
  var photo_id = 'pic_photobox_';
	var result = true;

  if (photos_box_init == true || photos_are_loading == true)
  {
		result = false;
  }
  else
  {
		photos_are_loading = true;

		try
		{
			for (var i = 0; i < array_obj.length; i++)
			{
				photos_trans_in_progress[i] = false;
				photos_startslide[i] = 0;

				if ((typeof(array_obj[i]) == 'object') || (typeof(array_obj[i]) == 'array'))

		    for (var j = 1; j < array_obj[i].length; j++)
		    {
					if (document.getElementById(photo_id.concat(i).concat('_').concat(j)))
					{
						document.getElementById(photo_id.concat(i).concat('_').concat(j)).src = array_obj[i][j]['src'];
						document.getElementById(photo_id.concat(i).concat('_').concat(j)).width = array_obj[i][j]['width'];
						document.getElementById(photo_id.concat(i).concat('_').concat(j)).height = array_obj[i][j]['height'];
					}
		    }
		  }

		  photos_box_init = true;
  	}
  	catch (e)
  	{
  		result = false;
  	}
	}

  return result;
}


// ********************************************************
// * Allgemeine - Scripte                                 *
// ********************************************************

// * Fehlerbehandlung**************************************

// Fehlerbehandlungsfunktion
function photoBoxIgnoreError()
{
  return true;
}

// * Überblendungen ***************************************

// Objekt Faden
function photoBoxFadeObject(object_id, opacity)
{
  var object = document.getElementById(object_id);

  object.style.opacity = (opacity / 101);
  if (photos_msie_ver > 0)
  {
    if (photos_msie_ver > 5)
    {
      object.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + opacity + ')';
    }
    else
    {
      object.style.filter = 'alpha(opacity=' + opacity + ')';
    }
  }
  else
  {
    object.style.MozOpacity = (opacity / 101);
    object.style.KhtmlOpacity = (opacity / 101);
  }
}


// ********************************************************
// * Photoüberblend-Funktionen                            *
// ********************************************************

// * Überblendungen starten *******************************

// Vorheriges Photo zeigen
function photoBoxPreviousPhoto(box_num)
{
  if (photos_box_init == false)
  {
    initPhotoBox(photos_list);
  }
  else
  {
	  if (photos_trans_in_progress[box_num] != true)
  	{
	    var previous_photo_num = photoBoxGetPrevPhotoNumber(photos_startslide[box_num], 'photosbox_'.concat(box_num));

	    if (   (previous_photo_num !== false)
	        && (document.getElementById('pic_photobox_'.concat(box_num).concat('_').concat(previous_photo_num)).width != 1))
	    {
	      photos_startslide[box_num] = photoBoxBlendImage(previous_photo_num, photos_startslide[box_num], photos_duration, 'photobox_'.concat(box_num), box_num);
	    }
	  }
  }
}

// Nächstes Photo zeigen
function photoBoxNextPhoto(box_num)
{
  if (photos_box_init == false)
  {
    initPhotoBox(photos_list);
  }
  else
  {
  	if (photos_trans_in_progress[box_num] != true)
	  {
	    var next_photo_num = photoBoxGetNextPhotoNumber(photos_startslide[box_num], 'photosbox_'.concat(box_num));

	    if (   (next_photo_num !== false)
	        && (document.getElementById('pic_photobox_'.concat(box_num).concat('_').concat(next_photo_num)).width != 1))
	    {
  	    photos_startslide[box_num] = photoBoxBlendImage(next_photo_num, photos_startslide[box_num], photos_duration, 'photobox_'.concat(box_num), box_num);
    	}
    }
  }
}

// * Photonummern ermitteln *******************************

// Nächstes Photo ermitteln
function photoBoxGetNextPhotoNumber(startslide, container)
{
  var nextnumber = startslide + 1;

  var photosdiv =  document.getElementById(container);
  var imgarray  = photosdiv.getElementsByTagName('img');
  var imgnumber = imgarray.length;

  if (nextnumber > (imgnumber - 1))
  {
    nextnumber = 0;
  }
  else
  {
    if (imgnumber == 1)
    {
      return false;
    }
  }

  return nextnumber;
}

// Vorheriges Photo ermitteln
function photoBoxGetPrevPhotoNumber(startslide, container)
{
  var nextnumber = startslide - 1;

  if (nextnumber < 0)
  {
    var photosdiv =  document.getElementById(container);
    var imgarray  = photosdiv.getElementsByTagName('img');
    var imgnumber = imgarray.length;

    if (imgnumber == 1)
    {
      return false;
    }

    nextnumber = imgnumber - 1;
  }

  return nextnumber;
}

// * Überblendfunktionen **********************************

// Bild überblenden
function photoBoxBlendImage(endslide, startslide, duration, identifier, box_num)
{
  if (photos_trans_in_progress[box_num] != true)
  {
    if (endslide != startslide)
    {
      photos_trans_in_progress[box_num] = true;

      var speed = Math.round(duration / 100);

      var old_image_id = identifier.concat('_').concat(startslide);
      var new_image_id = identifier.concat('_').concat(endslide);

      // Neues Bild in Vordergrund setzen
      photoBoxChangeImageOpac(0, box_num, new_image_id);
      document.getElementById(new_image_id).style.zIndex = 81;

 			photoBoxSetCounter(box_num, endslide);
 			photoBoxSetDescr(box_num, endslide);
 			photoBoxSetLightboxLinks(box_num, startslide, endslide);

      // Neues Bild einblenden
      for (var i = 0; i <= 100; i++)
      {
        setTimeout("photoBoxChangeImageOpac(" + i + ", " + box_num + ", '" + new_image_id + "', '" + old_image_id + "')", i * speed);
      }
    }
  }
  else
  {
    endslide = startslide;
  }

  return endslide;
}

// Transparenz einstellen
function photoBoxChangeImageOpac(opacity, box_num, new_id, old_id)
{
  var object = document.getElementById(new_id);

  if (opacity <= 0)
  {
    object.style.display = "none";
  }

  photoBoxFadeObject(new_id, opacity);

  if (opacity == 1)
  {
    object.style.display = "block";
  }

  if (old_id && opacity < 100)
  {
    photoBoxChangeImageOpac(100 - opacity, box_num, old_id);
  }

  if (opacity >= 100)
  {
    if (old_id)
    {

      // Aktuelles Photo als Background setzen
      if (photos_gecko_ver > 0 && photos_gecko_ver < 2007)
      {
        document.getElementById(new_id).style.backgroundImage = "url(" + document.getElementById('pic_'.concat(new_id)).src + ")";
      }

      // Altes Photo in Hintergrund setzen
      photoBoxChangeImageOpac(0, box_num, old_id);
      document.getElementById(old_id).style.zIndex = 0;
      if (photos_gecko_ver > 0 && photos_gecko_ver < 2007)
      {
        document.getElementById(old_id).style.backgroundImage = 'none';
      }

      // Z-Index setzen
      document.getElementById(new_id).style.zIndex = 80;

      photos_trans_in_progress[box_num] = false;
    }
  }
}


// * Lightbox *********************************************

// Photo in Lighbox darstellen

/*
function photoBoxLightbox(box_num)
{
	var photo_num  = photos_startslide[box_num];
	var photo_file = photos_array[box_num][photo_num]['fullsrc'];

	showLightbox(photo_file);
}
*/


// * Counter **********************************************

// Photozähler updaten

function photoBoxSetCounter(box_num, photo_num)
{
	photo_num++;

	var item_string  = String(photo_num).length <= 1 ? '0'.concat(photo_num).concat('/') : photo_num.concat('/');
	var items_string = String(photos_array[box_num].length).length <= 1 ? '0'.concat(photos_array[box_num].length) : photos_array[box_num].length;
	var ctrl_string = item_string.concat(items_string);

	var ctrl_id = 'photos_ctrl_current_'.concat(box_num);
	var obj = document.getElementById(ctrl_id);

	obj.childNodes[0].data = ctrl_string;
}

// Beschreibung updaten

function photoBoxSetDescr(box_num, photo_num)
{
	descr_id  = 'captionbox_'.concat(box_num);
	descr_txt = ' ';

	if (photos_array[box_num][photo_num]['caption'] !== false)
	{
		descr_txt = photos_array[box_num][photo_num]['caption'];
	}

	if (document.getElementById(descr_id))
	{
		var obj = document.getElementById(descr_id);
		obj.childNodes[0].data = descr_txt;
	}
}

function photoBoxSetLightboxLinks(box_num, startslide, endslide)
{
	document.getElementById('photobox_lightboxlink_'.concat(box_num)).href = document.getElementById('pic_photoboxlink_'.concat(box_num, '_', endslide)).href;
}