/**
 * Lightbox Script mit Cookie Unterstützung
 *
 * @author: J.P.Jarolim, Adwerba
 * @lastmodified: 2008-01-04
 *
 * Defaultmäßig wird bei jeder Anzeige versucht, ein 1 Tag lebendes DomainCookie oder
 * (falls das nicht möglich ist) zumindestens ein SessionCookie zu setzen.
 *
 * Solange das Cookie lebt, wird das Popup nicht mehr angezeigt (AntiAnnoyance sozusagen)
 *
 * Das Verhalten kann überstimmt werden, falls:
 * Eine JavaScript Variable mit dem Namen lightboxAlwaysOn definiert wird, wird das Popup jedesmal angezeigt
 * Die Variable lightboxCookiePeriodType überschreibt den Gültigkeitsdauertyp (months|days|hours|minutes),
 * Die Variable lightboxCookieOffset überschreibt das Gültigkeitsdaueroffset (zB. 1)
 *
 *
 * Beispielscode im PopupFile:
 * <script type="text/javascript">
 *   var lightboxCookiePeriodType = 'minutes';
 *   var lightboxCookiePeriodOffset = 5;
 *   var lightboxAlwaysOn = false;
 * </script>
 * Das Popup wird minimal alle 5 Minuten angezeigt (Sofern Cookies gesetzt werden können)
 *
 *
 * Beispielscode im Popup:
 * <script type="text/javascript">
 *   var lightboxAlwaysOn = true;
  * </script>
 * Das Popup wird zB. zum Entwickeln bei jedem Aufruf angezeigt
 */

// Es wird bei jedem Schließen des Lightbox-Popups ein Cookie
// gesetzt, welches 1 Tag gültig ist

var lightboxCookieName = 'lightboxDeactivated';

// Überprüft, ob ein Cookie vorhanden ist
// Eine generell gesetzte Variable lightboxAlwaysOn überstimmt die Funktion

function isCookie() {
	if (!lightboxAlwaysOn) { 
		if (getCookieValue(lightboxCookieName)) return true;
		else return false;
	} else return false;
}

// Setzt ein "disabled" Cookie, welches einen Tag gültig ist

function setCookie() {

	// $('#debug').html('setCookie()' . "\n" . $('#debug').html());

	if (testPersistentCookie()) {

		// Deactivated for the defined time

		writePersistentCookie(
			lightboxCookieName,
			'deactivated',
			lightboxCookiePeriodType,
			lightboxCookiePeriodOffset
		);

	} else {

		if (testSessionCookie()) {

			// Deactivated for the current Browser Session

			writeSessionCookie(lightboxCookieName, 'deactivated');
			
		} else {

			// Der Browser akzeptiert keine Cookies:
			// Wir können keines setzten

		}

	}
}

// Lightbox ausblenden

function closeLightbox() {
	$('#lightbox_background').fadeOut(1000);
	$('#lightbox_content_wrap').fadeOut(300);
	setCookie();
}

// Lightbox einblenden

function showLightbox() {

	// Als erstes schauen wir uns an, wie groß das Popup geraten ist und
	// bringen es tatsächlich in die Mitte des angezeigten Bereichs

	// $('#lightbox_content_table').css('margin-top', $(document).height()/2 - $('#lightbox_content_table').height() / 2);

	// var contentWrapHeight = $('#lightbox_content_wrap').height();
	$('#lightbox_content_wrap').css('display', 'none');
	$('#lightbox_content_wrap').css('visibility', 'visible');


	$('#lightbox_background').fadeIn(300, function() {
		$(this).fadeTo(500, 0.8);
	});
	
	$('#lightbox_content_wrap').fadeIn(1000);

}

// Diese Methode fügt das benötigte HTML in das DOM

function prepareLightbox() {

	var content = $('#lightbox .content').html();
	var textClose = $('#lightbox .close').html();
	var content_new = '<div id="lightbox_background"><!-- background --></div>' +
		'<div id="lightbox_content_wrap">' +
		'	<table id="lightbox_content_table" border="0" cellspacing="0" cellpadding="0" align="center" style="background-color:#ffffff;">' +
		'		<tr>' +
		'			<td>' +
		'				<div id="lightbox_content">' + content + '</div>' +
		'			</td>' +
		'		</tr>' +
		'		<tr>' +
		'			<td>' +
		'				<div id="lightbox_nav">' +
		'					<a class="arrow" href="javascript:closeLightbox();">' + textClose + '</a>' +
		'				</div>' +
		'			</td>' +
		'		</tr>' +
		'	</table>' +
		'</div>';
	
	$('#lightbox').replaceWith(content_new);

}

function resizeBackground() {

	$('#lightbox_background')
	.width(1) // Vor Messung document.width sollte der Background nicht Bemessungsgrundlage sein
	.width($(document).width())
	.height(1) // Vor Messung document.height sollte der Background nicht Bemessungsgrundlage sein
	.height($(document).height());
	
	$('#lightbox_content_table').css('margin-top', document.documentElement.clientHeight/2 - $('#lightbox_content_table').height() / 2);

}

// Ausführen, nachdem das Dokument geladen wurde

$(document).ready(
	function() {

		// HTML Einfügen

		prepareLightbox();

		// onResize auch den lightbox-background resizen

		resizeBackground();
		
		$(window).resize(
			function() {
				resizeBackground();
			}
		);

		// Falls kein Cookie gefunden wurde

		if (!isCookie()) {
			showLightbox();
		}
	}
);
