/*	base.js	*/

var noCSS					= true;

var multiImageCount		= 0;
var multiImages			= {};
var currentMultiImage	= 1;

var multiImageImageWrapperWidth			= 10.75;		//	10.75em
var multiImageImageWrapperHeight			= 10.75;		//	10.75em

var multiImageImageZoomWrapperWidth		= 40.5;		//	41.5em - padding
//	var multiImageImageZoomWrapperHeight	= 29.5;		//	30.5em
var multiImageImageZoomWrapperHeight	= 40.5;

var baseFontSize			= 0.75;		//	%
var baseFontPixel			= 16;			//	px

function px2em ( px )			{ return px / baseFontPixel / baseFontSize;	}
function multiImageId ( i )	{ return 'multi_image_image_' + i;				}
function postMsg ( func )		{ setTimeout ( func, 10 );							}

function debug_dump ( el )
{
	var text	= "DUMP " + el;

	for ( var list in el )
	{
		text	+= "\nproperty=" + list;

		try
		{
			text	+= " value=" + el[list];
		}
		catch(e)
		{
			text += " value=ERROR " + e;
		}
	}

	alert ( text );
}

function initInputFocus ()
{
	//	search_form has NO label,
	//	other forms must always have labels !!!

//	$('label:first').focus();

	$('#presse_login input:enabled:visible:first').focus();
}

function initMultiImage ()
{
	var s		= $('#popup_mask').css('display');

	noCSS		= ( s != 'none' );

	if ( noCSS )					return;	//	styles switched off by user...

	var iw	= $('#multi_image_wrapper');

	if ( iw.length < 1 )			return;	//	no multi image defined...

	multiImageCount	= 0;
	multiImages			= {};
	currentMultiImage	= 1;

	$('.multi_image_wrapper').each
	(
		function ( i )
		{
			collectMultiImage ( this, i );

			$(this).css ( 'display', 'none' );

/*
	does not help
			if ( jQuery.browser.safari )						//	SAFARI	!!!!!!!!!!!!!!!!!!!!!
			{
				$(this).css ( 'position', 'absolute' );
				$(this).css ( 'top', '-3000px' );
				$(this).css ( 'left', '-3000px' );
			}
*/
			multiImageCount++;
		}
	);

	var theThumb	= '\
<div id="multi_image_image_wrapper">\
<a href="javascript:void(zoomMultiImage())" title="zoom">\
<img src="/img/empty.gif" id="multi_image_image" alt="Multi Foto"/>\
</a>\
</div>\
<div id="multi_image_navi_wrapper">\
<a href="javascript:void(nextMultiImage( -1 ))" class="multi_image_navi content_align_left" title="vorheriges Bild">&lt;&lt;&lt;</a>\
<a href="javascript:void(zoomMultiImage())" class="multi_image_navi content_align_center">zoom</a>\
<a href="javascript:void(nextMultiImage( 1 ))" class="multi_image_navi content_align_right" title="nächstes Bild">&gt;&gt;&gt;</a>\
<br class="clearer" />\
<div id="multi_image_text">&nbsp;</div>\
<div id="multi_image_copy">&nbsp;</div>\
<br class="clearer" />\
</div>\
';

	var theZoom	= '\
<div id="multi_image_wrapper_zoom">\
<div id="multi_image_image_zoom_wrapper">\
<a href="javascript:void(closeMultiImageZoom())" title="schlie&szlig;en">\
<img src="/img/empty.gif" id="multi_image_image_zoom"  alt="Multi Foto Zoom" />\
</a>\
</div>\
<div id="multi_image_zoom_navi_wrapper">\
<div id="multi_image_zoom_text">&nbsp;</div>\
<div id="multi_image_zoom_copy">&nbsp;</div>\
<br class="clearer" />\
<a href="javascript:void(nextMultiImage( -1, true ))" class="multi_image_zoom_navi content_align_left" title="vorheriges Bild">&lt;&lt;&lt;</a>\
<a href="javascript:void(closeMultiImageZoom())" class="multi_image_zoom_navi content_align_center">schlie&szlig;en</a>\
<a href="javascript:void(nextMultiImage( 1, true ))" class="multi_image_zoom_navi content_align_right" title="nächstes Bild">&gt;&gt;&gt;</a>\
<br class="clearer" />\
</div>\
</div>\
';

	iw.html ( theThumb );
	iw.css ( 'display', 'block' );

	var pc	= $('#popup_content');

	pc.html ( theZoom );

	closeMultiImageZoom();

	if ( multiImageCount == 1 )
	{
		$('a.content_align_left').each	( function ( i ) { $(this).css ( 'display', 'none' ); } );
		$('a.content_align_center').each	( function ( i ) { $(this).css ( 'width', '100%' ); } );
		$('a.content_align_right').each	( function ( i ) { $(this).css ( 'display', 'none' ); } );
	}

	nextMultiImage ( multiImageCount + 1 );
}

function collectMultiImage ( wrapperObj, i )
{
	var id		= multiImageId ( i + 1 );

	var zoom		= $(wrapperObj).find('a').attr('href');
	var thumb	= $(wrapperObj).find('img').attr('src');
	var width	= $(wrapperObj).find('img').attr('width');
	var height	= $(wrapperObj).find('img').attr('height');
	var alt		= $(wrapperObj).find('img').attr('alt');
	var title	= $(wrapperObj).find('img').attr('title');
	var text		= $(wrapperObj).find('.multi_image_text').text();
	var copy		= $(wrapperObj).find('.multi_image_copy').text();

	multiImages[id]	=
	{
		'zoom'	:
		{
			'src'		: zoom,
			'width'	: 0,
			'height'	: 0
		},
		'thumb'	:
		{
			'src'		: thumb,
			'width'	: width,
			'height'	: height
		},
		'alt'		: alt,
		'title'	: title,
		'text'	: text,
		'copy'	: copy
	};
}

function nextMultiImage ( dir, zoom )
{
	currentMultiImage	+= dir;

	if ( currentMultiImage < 1 )							currentMultiImage = multiImageCount;
	if ( currentMultiImage > multiImageCount )		currentMultiImage = 1;

	showMultiImage ( false, false );
	showMultiImage ( false, true );

	postMsg ( 'updateMultiImage()' );

	postMsg ( 'updateMultiImageZoom(' + ( zoom ? 'true' : 'false' ) + ')' );
}

function calcMultiImage ( id, ewp, ehp, zoom )
{
	if ( noCSS )		return [0,0];

	var data	= multiImages[id];

	var entry= zoom	? data.zoom		: data.thumb;

	var izw	= entry.width;
	var izh	= entry.height;

	var ew	= px2em ( izw );
	var eh	= px2em ( izh );
/*
	alert
	(
		'PX: ' + izw + ' x ' + izh +
		"\nEM: " + ew + ' x ' + eh
	);
*/
	var fw	= ew / ewp;
	var fh	= eh / ehp;

	var ewz	= 0;
	var ehz	= 0;

	if ( fw > fh )
	{
		ewz	= ewp;
		ehz	= eh / fw;
	}
	else
	{
		ehz	= ehp;
		ewz	= ew / fh;
	}

	return [ ewz, ehz ];
}

function showMultiImage ( show, zoom )
{
	if ( noCSS )		return;

	var ic		= zoom ? $('#multi_image_image_zoom') : $('#multi_image_image');

	ic.css ( 'visibility', ( show ? 'visible' : 'hidden' ) );
}

function updateMultiImage ()
{
	if ( noCSS )		return;

	var id		= multiImageId ( currentMultiImage );

	var ic		= $('#multi_image_image');

	ic.attr('src',		multiImages[id].thumb.src );
	ic.attr('alt',		multiImages[id].alt );
	ic.attr('title',	'Klick für zoom...' );

	$('#multi_image_text' ).html ( multiImages[id].text );
	$('#multi_image_copy' ).html ( multiImages[id].copy );

	var aSize	= calcMultiImage ( id, multiImageImageWrapperWidth, multiImageImageWrapperHeight, false );

	var ew		= aSize[0];
	var eh		= aSize[1];

/*
	alert (
		'B4  : ' + ew + ' x ' + eh +
		"\nOLD:" + ic.width() + ' x ' + ic.height() );
*/

	ic.css ( 'width',		ew + 'em' );
	ic.css ( 'height',	eh + 'em' );

//	alert ( 'NEW: ' + ic.width() + ' x ' + ic.height() );

	postMsg ( 'showMultiImage ( true, false )' );
}

function updateMultiImageZoom ( zoom )
{
	if ( noCSS )		return;

	var id		= multiImageId ( currentMultiImage );

	var ic		= $('#multi_image_image_zoom' );

	ic.attr('src',		multiImages[id].zoom.src );
	ic.attr('alt',		multiImages[id].alt );
	ic.attr('title',	'Zoom schließen...' );

	$('#multi_image_zoom_text' ).html ( multiImages[id].text );
	$('#multi_image_zoom_copy' ).html ( multiImages[id].copy );

	var img	= new Image();

	$(img).load(function()
	{
		var data		= multiImages[id];
		var entry	= data.zoom;

		if ( ! entry.width )
		{
			entry.width		= $(img).attr('width');
			entry.height	= $(img).attr('height');

//			debug_dump ( entry );
		}

		if ( zoom )		zoomMultiImage();
	});

	$(img).attr('src', multiImages[id].zoom.src );
}

function zoomMultiImage ()
{
	if ( noCSS )		return;

	var pm	= $('#popup_mask');

	pm.css ( 'display', 'block' );

	var ic		= $('#multi_image_image_zoom');

	var id		= multiImageId ( currentMultiImage );

	var aSize	= calcMultiImage ( id, multiImageImageZoomWrapperWidth, multiImageImageZoomWrapperHeight, true );

	var ew		= aSize[0];
	var eh		= aSize[1];

/*
	alert (
		'B4 : ' + ew + ' x ' + eh +
		"\nOLD: " + + ic.attr('width') + ' x ' + ic.attr('height') );
*/
	ic.css ( 'width',		ew + 'em' );
	ic.css ( 'height',	eh + 'em' );

/*
	alert (
		'AF : ' + ic.css ( 'width' ) + ' x ' + ic.css ( 'height' ) +
		"\nNEW: " + ic.attr('width') + ' x ' + ic.attr('height') );
*/
	var pw	= $('#popup_wrapper');

	pw.css ( 'display', 'block' );

	postMsg ( 'showMultiImage ( true, true )' );
}

function closeMultiImageZoom ()
{
	if ( noCSS )		return;

	var pw	= $('#popup_wrapper');

	pw.css ( 'display', 'none' );

	var pm	= $('#popup_mask');

	pm.css ( 'display', 'none' );
}

/*
	called on document ready B4 images loaded: too early!

$(function()
{
	initMultiImage();
});
*/

//	called on complete: OK

$(window).load(function()
{
	initMultiImage();
	initInputFocus();
});
