function change(script,para,element)
{
	new Ajax.Updater(element,script, {
	  method: 'post',
	  parameters: para,
	  evalScripts: true,
	  onCreate: function() {
		  $(element).innerHTML = '<img src="images/loader.gif">'
	  }
	});

}

function outside(event)
{
        if( outsideOf == null )
        {
                $(document.body).descendants().invoke('stopObserving','click',outside);
                return;
        }
        element = Event.element(event);
        if( element.descendantOf( $(outsideOf) ) !== true && $(element).id !== outsideOf)
        {
		$(outsideOf).hide();
                outsideOf = null;
                $(document.body).descendants().invoke('stopObserving','click',outside);
        }

} 
function closeDiv(event) {
	$(outsideOf).hide();
	$('closeElement').hide();
}

function search_options(pos, event) {
	var id = 'search_options_div';
	var classId = 'search_options';
	if (document.getElementById(id)) {
		$('closeElement').show();
		$('closeElement').observe('click',closeDiv);
		$(id).show();
	} else {
		$(document.body).insert({ top: Element('div', { 'id': 'closeElement', 'class': 'allPage'}) });
		outsideOf = id;
		$('closeElement').observe('click',closeDiv);
		$(pos).insert({ bottom: Element('div', { 'id': id, 'class': classId}) });
		change('scripts/search.php','option=options',$(id).identify());
	}
}
function add_options(e) {
	if (document.getElementById(e)) {
		return $(e).serialize();
	}
}

function register_loader() {

	Ajax.Responders.register({
	  onCreate: function() {
		  onCreate: addLoader()
	  },
	  onComplete: function() {
		  onCreate: removeLoader()
	  }
	});

}

function changeForm(script,form,para,element) {

	new Ajax.Updater(element,script, {
	  method: 'post',
	  parameters: Form.serialize($(form)) + para,
	  evalScripts: true
	});

}

//Gallery
var galleryImagesObject;
var anzahlImages;
var timerID;
function showGalleryImages(element, galleryID, imageID) {

	script = "scripts/gallery.php";
	para = "&option=view"
	new Ajax.Updater(element,script, {
		method: 'post',
		parameters: para,
		onCreate: function() {
			$(element).innerHTML = '<img src="images/loader.gif">'
		}
	});

	loadImage(galleryID,imageID);
}

function loadImage(galleryID,imageID) {
	if (document.getElementById('thumb_scroll')) {
		para = "&option=viewImages&id="+galleryID+"&img_id="+imageID;
		new Ajax.Request(script, {
			method: 'post',
			parameters: para,
			onSuccess: function(transport) {
				var theObject = transport.responseJSON;
				galleryImagesObject = theObject.gallery_images;
				for (i=0;i<galleryImagesObject.length;i++) {
					if (galleryImagesObject[i].id == imageID) {	
						// Show Image + Fade
						var folder = theObject.gallery_folder+theObject.gallery['folder'];
						$('gallery_img').src = folder+"/"+galleryImagesObject[i].file;

						// Show Info
						anzahlImages = theObject.anzahl;
						$('img_infoLeft').update("Bild "+(i+1)+" von "+theObject.anzahl+" ");

						showNextLast(folder, i, (galleryImagesObject.length-1));
					}
				}	
			}
		});
	} else {
		timerID = setTimeout("loadImage("+galleryID+","+imageID+")",10);
	}
}

function showNextLast(folder, i, anzahl) {
	var lastLink = "";
	var nextLink = "";
	// Show links
	if (parseInt(i) > 0) {
		var lastLink = '<a href="#" onClick="javascript:changeImage('+"'"+folder+"'"+','+(i-1)+','+anzahl+'); return false;"><< Zur&uuml;ck</a>';
	}
	if (parseInt(i) < parseInt(anzahl)) {
		var nextLink = '<a href="#" onClick="javascript:changeImage('+"'"+folder+"'"+','+(i+1)+','+anzahl+'); return false;">Weiter >></a>';
	}
	$('img_infoRight').update(lastLink + " " + nextLink);
	$('img_infoLeft').update("Bild "+(i+1)+" von "+anzahlImages+" ");
}

function changeImage(folder, i, anzahl) {
// Show Last/Next
showNextLast(folder, i, anzahl);
/*
if (document.images) {
	// Preload Image
	preImage = new Image();
	preImage.src = folder+"/"+galleryImagesObject[i].file;

	// Check if loaded --> fade in
	new PeriodicalExecuter(function(peImg) {
		if (preImage.complete) {
			peImg.stop();
			$('gallery_img').src = folder+"/"+galleryImagesObject[i].file;
			javascript:shiftOpacity('img_containter', 500);
		}
	});
} else {
*/
	$('gallery_img').src = folder+"/"+galleryImagesObject[i].file;
			javascript:shiftOpacity('img_containter', 500);
//}
}

// E-Mail validation
function echeck(str) {

	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
		alert('Bitte geben Sie eine korrekte E-Mail-Adresse an!');
		return false
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		alert('Bitte geben Sie eine korrekte E-Mail-Adresse an!');
		return false
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		alert('Bitte geben Sie eine korrekte E-Mail-Adresse an!');
		return false
	}

	 if (str.indexOf(at,(lat+1))!=-1){
		alert('Bitte geben Sie eine korrekte E-Mail-Adresse an!');
		return false
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		alert('Bitte geben Sie eine korrekte E-Mail-Adresse an!');
		return false
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
		alert('Bitte geben Sie eine korrekte E-Mail-Adresse an!');
		return false
	 }

	 if (str.indexOf(" ")!=-1){
		alert('Bitte geben Sie eine korrekte E-Mail-Adresse an!');
		return false
	 }

	 return true					
}

//Newsletter
function newsletter_anmelden() {
	if ($('ok').checked == false) {
		alert(unescape('Sie m%FCssen die Einverst%E4ndnisserkl%E4rung akzeptieren!'));
	} else {
		emailID = $('email');
		if (echeck(emailID.value)==false){
			emailID.focus
		} else {
			var extra1 = "";
			if ($('extra1').checked == true) {
				extra1 = 'ok';
			}
			var extra2 = "";
			if ($('extra2').checked == true) {
				extra2 = 'ok';
			}

			$('newsletter_response').innerHTML = '<img src="images/loader.gif">';
			new Ajax.Request( 'scripts/newsletter.php', { 
				method: 'post', 
				parameters: "&option=anmelden&email="+emailID.value+"&extra1="+extra1+"&extra2="+extra2, 
				onSuccess: function(transport) {
					var theObject = transport.responseJSON;
					$('newsletter_response').innerHTML = theObject.text;
				}
			});
		}
	}
}
// kontaktformular senden
function kontakt_send(form) {
	new Ajax.Request( 'scripts/kontakt_send.php', { 
		method: 'post', 
		parameters: "&Vorname="+$('Vorname').value+"&Nachname="+$('Nachname').value+"&EMail="+$('EMail').value+"&Telefon="+$('Telefon').value+"&Nachricht="+$('Nachricht').value,
		onSuccess: function(transport) {
			var theObject = transport.responseJSON;
			$('kontakt_table').innerHTML = theObject.text;
		}
	});
}
