function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

// Verwendet Scriptaculous
function showElem(id) {
	if (elem = document.getElementById(id)) {
		new Effect.Appear(id, { duration: 1.2, from: 0.0, to: 1.0 });		
    	elem.style.visibility = 'visible';
    }
}

// Verwendet Scriptaculous
function hideElem(id) {
	if (elem = document.getElementById(id)) {
		new Effect.Fade(id, { duration: 0.6});
	}
}

// prüft, ob eine Variable definiert ist
function isDefined(variable) { 
	return variable === undefined ? false : true;
}

// Banner verstecken
function hideBanners() {
	var banners = document.getElementsByTagName('SPAN');
	for(i=0; i<banners.length; i++) {
		var bannerId = banners[i].id;
		//alert(bannerId.substring(0, 6));
		if(bannerId.substring(0, 7) == 'banner_') {
			$(bannerId).style.display = 'none';
		}
	}
}

// Banner anzeigen
function showBanners() {
	var banners = document.getElementsByTagName('SPAN');
	for(i=0; i<banners.length; i++) {
		var bannerId = banners[i].id;
		//alert(bannerId.substring(0, 6));
		if(bannerId.substring(0, 7) == 'banner_') {
			$(bannerId).style.display = 'inline';
		}
	}
}

// alle EXIF-Daten zeigen
function showEXIF(fid, secret) {
	// Link + Text tauschen
	$('linkEXIF').innerHTML = "erweiterte EXIF-Daten verstecken";
	$('linkEXIF').href = "javascript: hideEXIF("+fid+", '"+secret+"');";
	
	// Daten besorgen
	params = 'fid='+fid+'&secret='+secret;
	url = '/content/galerie/ajax_getExif.php';
	var ajax = new Ajax.Updater(
			{success: 'dataEXIF'},
			url,
			{method: 'post', parameters: params, onFailure: reportError, encoding: 'iso-8859-1'}
		);
	
	showElem('dataEXIF');
}

// alle EXIF-Daten verbergen
function hideEXIF(fid, secret) {
	// Link + Text tauschen
	$('linkEXIF').innerHTML = "erweiterte EXIF-Daten anzeigen";
	$('linkEXIF').href = "javascript: showEXIF("+fid+", '"+secret+"');";
	
	hideElem('dataEXIF');
}

function changeCommentLink(id) {
	if (elem = document.getElementById(id)) {
    	if(elem.innerHTML == 'Kommentare anzeigen') {
    		elem.innerHTML = 'Kommentare verstecken';
    		showElem('commentsoff');
    	} else if(elem.innerHTML == 'Kommentare verstecken') {
    		elem.innerHTML = 'Kommentare anzeigen';
    		hideElem('commentsoff');
    	}
    	 
	}
}

function xreplace(checkMe,toberep,repwith){
	var temp = checkMe;
	var i = temp.indexOf(toberep);
	while(i > -1) {
		temp = temp.replace(toberep, repwith);
		i = temp.indexOf(toberep, i + repwith.length + 1);
	}
	return temp;
}



var keyStr = "ABCDEFGHIJKLMNOP" +
                "QRSTUVWXYZabcdef" +
                "ghijklmnopqrstuv" +
                "wxyz0123456789+/" +
                "=";

function encode64(input) {
      var output = "";
      var chr1, chr2, chr3 = "";
      var enc1, enc2, enc3, enc4 = "";
      var i = 0;

      do {
         chr1 = input.charCodeAt(i++);
         chr2 = input.charCodeAt(i++);
         chr3 = input.charCodeAt(i++);

         enc1 = chr1 >> 2;
         enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
         enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
         enc4 = chr3 & 63;

         if (isNaN(chr2)) {
            enc3 = enc4 = 64;
         } else if (isNaN(chr3)) {
            enc4 = 64;
         }

         output = output + 
            keyStr.charAt(enc1) + 
            keyStr.charAt(enc2) + 
            keyStr.charAt(enc3) + 
            keyStr.charAt(enc4);
         chr1 = chr2 = chr3 = "";
         enc1 = enc2 = enc3 = enc4 = "";
      } while (i < input.length);

      return output;
   }

function decode64(input) {
      var output = "";
      var chr1, chr2, chr3 = "";
      var enc1, enc2, enc3, enc4 = "";
      var i = 0;

      // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
      var base64test = /[^A-Za-z0-9\+\/\=]/g;
      if (base64test.exec(input)) {
         alert("There were invalid base64 characters in the input text.\n" +
               "Valid base64 characters are A-Z, a-z, 0-9, '+', '/', and '='\n" +
               "Expect errors in decoding.");
      }
      input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

      do {
         enc1 = keyStr.indexOf(input.charAt(i++));
         enc2 = keyStr.indexOf(input.charAt(i++));
         enc3 = keyStr.indexOf(input.charAt(i++));
         enc4 = keyStr.indexOf(input.charAt(i++));

         chr1 = (enc1 << 2) | (enc2 >> 4);
         chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
         chr3 = ((enc3 & 3) << 6) | enc4;

         output = output + String.fromCharCode(chr1);

         if (enc3 != 64) {
            output = output + String.fromCharCode(chr2);
         }
         if (enc4 != 64) {
            output = output + String.fromCharCode(chr3);
         }

         chr1 = chr2 = chr3 = "";
         enc1 = enc2 = enc3 = enc4 = "";

      } while (i < input.length);

      return output;
   }
   
// Parameter für die Übergabe an lightbox.js
var imageID;
var nav_ist;
var nav_ist_id;
var nav_ext_id;

function slideshow_start(url, fid, ist, ist_id, ext_id) {
	//center('msg_wait');
	//new Effect.Appear("msg_wait");
	imageID = fid;
	nav_ist = ist;
	nav_ist_id = ist_id;
	nav_ext_id = ext_id;
	
	params = 'fid='+fid+'&ist='+ist+'&ist_id='+ist_id+'&ext_id='+ext_id;
	var ajax = new Ajax.Updater(
			{success: 'lightbox_links'},
			url,
			{method: 'post', parameters: params, onFailure: reportError, onComplete: slideshowDisplay}
		);
}

function reportError() {
	alert("Fehler");
}

function slideshowDisplay() {
	//Effect.Fade('msg_wait');	
	myLightbox.start($('lightbox_firstimage'));
}

function slideshowUpdate() {
	myLightbox.updateLightbox($('lightbox_firstimage'));
}

function center(element) {
	var element = $(element);
	
	var width = 1024, height = 786;
  	if( typeof( window.innerWidth ) == 'number' ) {
	    //Non-IE
	    width = window.innerWidth;
	    height = window.innerHeight;
  	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
	    //IE 6+ in 'standards compliant mode'
	    width = document.documentElement.clientWidth;
	    height = document.documentElement.clientHeight;
  	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
	    //IE 4 compatible
	    width = document.body.clientWidth;
	    height = document.body.clientHeight;
  	}
  	
	var e_dimensions = Element.getDimensions(element);
	var e_width = e_dimensions.width;
	var e_height = e_dimensions.height;
	
	var left = (width/2) - (e_width/2);
	var top = (height/2) - (e_height/2);
	
	element.style.position = 'absolute';
    element.style.top    = top + 'px';
    element.style.left   = left + 'px';
    element.style.zindex = 1000;
	
}

// Tooltips
var xFromMouse = 10;
var yFromMouse = 10;
 
tip = null;
 
function showTip(id) {
    tip = document.getElementById(id);
    tip.style.display = "block";
    //moveTip(e);
}

function hideTip() {
    tip.style.display = "none";
}

function moveTip(e, tipSizeX) {
  // step 1
  var tempX = 0;
  var tempY = 0;
  var newX = 0;
  var newY = 0;
  var offsetX = 10;
  var offsetY = -10;
  var objHolder = obj;
  var delay = 1000;
  // var tipSizeX = 300;
  var winSizeX = 0;

  // step 2
  var obj = tip;
  if (obj==null) return;

  // step 3
  if (document.all) {
    var ieobj = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ? window.document.documentElement : window.document.body || null;

    winSizeX = ieobj.offsetWidth;
    tempX = event.clientX + ieobj.scrollLeft;
  	tempY = event.clientY + ieobj.scrollTop;
  	
  	if(navigator.appName.indexOf("Explorer") != -1) {
  		tempX += ieobj.scrollLeft;
  		tempY += ieobj.scrollTop;
  	}
    
  } else {
  	winSizeX = document.body.offsetWidth;
	tempX = e.pageX;
	tempY = e.pageY;
  }
  // step 4
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0}

  // step 5
  newX = (tempX + offsetX);
  newY = (tempY + offsetY);
  
  if( (newX+tipSizeX) > winSizeX) {
  	newX = newX - ( tipSizeX + 60);
  	//alert('oldX: '+oldX+' newX: '+newX);
  }
  
  tip.style.top  = (newY) + 'px';
  tip.style.left = (newX) + 'px';
  
  
  
  //  x = (document.all) ? window.event.x + document.body.scrollLeft : e.pageX;
  //  y = (document.all) ? window.event.y + document.body.scrollTop : e.pageY;
  //  if (tip != null) {
  //      tip.style.left = (x + xFromMouse) + "px";
  //      tip.style.top  = (y + yFromMouse) + "px";
  //  }
}
 
//document.onmousemove = moveTip;

function orderFoto(url)
{
	window.open(url,'GAGAMOTOPhotoLinkInPopup', 'height=355,width=430,location=0,status=0,menubar=0,resizable=1,scrollbars=0'); 
	//return false;
}


// Browsercheck
// alles außer Firefox/2, MSIE 7.0 und Flock bekommt einen Hinweis

var browserAcceptable = false;					// Diese Variable wird später ausgewertet

if(navigator.appName.indexOf("Netscape") != -1) {
	// auf Firefox/2/3 oder Flock prüfen prüfen
	if(navigator.userAgent.indexOf("Firefox/2") != -1 || navigator.userAgent.indexOf("Firefox/3.0") != -1 || navigator.userAgent.indexOf("Flock") != -1) {
		browserAcceptable = true;
		brwoserIsFirefox = true;
		
	// Safari
	} else if(navigator.userAgent.indexOf("Safari") != -1) {
		browserAcceptable = true;
		brwoserIsSafari = true;
	}

// auf IE 7 prüfen
} else if(navigator.appName.indexOf("Explorer") != -1) {
	if(navigator.userAgent.indexOf("MSIE 7.0") != -1) {
		browserAcceptable = true;
		browserIsIE = true;
	}

// auf Opera 9 prüfen
} else if(navigator.appName.indexOf("Opera") != -1) {
	if(navigator.userAgent.indexOf("Opera/9") != -1) {
		browserAcceptable = true;
		browserIsOpera = true;
	}

// auf Safari prüfen
} else if(navigator.appName.indexOf("Safari") != -1) {
	if(navigator.userAgent.indexOf("Safari") != -1) {
		browserAcceptable = true;
		browserIsSafari = true;
		}
	}
	
function cookieSet(Bezeichner,Wert,Dauer) {
  jetzt=new Date();
  Auszeit=new Date(jetzt.getTime()+Dauer*86400000);
  document.cookie=Bezeichner+"="+Wert+";expires="+Auszeit.toGMTString()+"; path=/";
}


// Sounds
var soundEmbed = null;
					
function msgSoundPlay() {
	msgSoundStop();
	soundEmbed = document.createElement("embed");
	soundEmbed.setAttribute("src", "/audio/purr.wav");
	soundEmbed.setAttribute("hidden", true);
	soundEmbed.setAttribute("autostart", true);
	document.body.appendChild(soundEmbed);
}

function msgSoundStop() {
	if ( soundEmbed ) {
		document.body.removeChild(soundEmbed);
		soundEmbed = null;
	}
}

function trim(s) {
  while (s.substring(0,1) == ' ') {
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ' ') {
    s = s.substring(0,s.length-1);
  }
  return s;
}