/**
 * Hide banner on lowres screens
 * 
 * @return void
 */
function show_hide_banner() {
	if ($(window).width() <= (1024 + 50)) {
		$('#mid_wrapper_repeat,#closure').css('margin-left', '-30px');
		$('#banner').css('left', '800px');
	} else {
		$('#mid_wrapper_repeat,#closure').css('margin-left', 'auto');
		$('#banner').css('left', '827px');
	}
}

function toggle_banner() {
	$('#banner a').toggle();
}

/**
 * Add classes Typo3 pagebrowser first/last items
 * 
 * @return void
 */
function style_browser_first_last() {
	var first_link = $('li:first a', this);
	if (first_link && first_link.html() == '&lt;') {
		first_link.addClass('browser_prev');
	}
	var last_link = $('li:last a', this);
	if (last_link && last_link.html() == '&gt;') {
		last_link.addClass('browser_next');
	}
}

/**
 * Attach the modalbox upon event (click)
 * 
 * @param evt
 * @return void
 */
function attach_modal_box(evt) {
	evt.preventDefault();
	open_modal_box($(this).attr('href'));
}

/**
 * Open a modalbox with a certain url
 * 
 * @param href
 * @return
 */
function open_modal_box(href) {
	// Create modalbox
	var modal_active = false;
	if ($('#modalContainer').length == 0) {
		$('#modal_wrapper').modal({
			closeClass: 'modal-close',
			overlay: 75,
			onClose: modalClose,
			onShow: modalShow
		});
		
	} else {
		var modal_active = true;
	}
	
	// Add loader progress
	$('#modal_content').append('<div class="loading"></div>');
	// Load content using AJAX
	$.get(href, {type:10}, function(data, textStatus) {
		$('#modal_content').html(data);
		$('a[@href^="http://"]', $('#modal_content')).attr('rel', 'external').attr('target', '_blank');
		$('#modal_content .loading').remove();
		$('#modalContainer #modal_wrapper').removeClass('hidden');
		if (!modal_active) {
			$('#modalOverlay').click()
		}
	}, 'html');
	// Google pageTracker for AJAX requests
	if (window.pageTracker != undefined) {
		window.pageTracker._trackPageview(href);
	}
}

/**
 * Modalbox (lightbox overlay)
 * 
 * @return void
 */
function modalbox() {
	// Inject invisible modalbox into body element
	$('body').prepend('<div id="modal_wrapper" class="hidden"><div id="modal_top"></div><div id="modal_content"></div><div id="modal_bottom"></div></div>');
	$('a').filter(function() {
		return this.href.match('/.*noorderslag\/panel.*') || this.href.match('.+/noorderslag\/act\/.+');
	}).attr('rel', 'lightbox');
	$('a[class="popup"],a[class="lightbox"],a[rel="lightbox"]').click(attach_modal_box);
}

/**
 *  Capture keydown events
 *  
 * @param evt Event object
 * @return void
 */
function modalKeyDown(evt) {
	if (evt.keyCode == 27) {
		$.modal.close();
	}
}

/**
 * Callback function when dialog is displayed
 * 
 * @param dialog
 * @return void
 */
function modalShow(dialog) {
	// Make scrolling possible (removed fixed position)
	dialog.container.css('position', 'absolute');
	var max_scroll_top = Math.max($('body').attr('scrollTop'), $('html').attr('scrollTop'));
	dialog.container.css('top', (max_scroll_top + 20)+'px');
	// Disable Flash elements (problems with z-index)
	$('#picture_container,#footer_radio_tv').hide();
	$(window).bind('keydown', modalKeyDown);
	// Click outside should close modalbox (event gets fired twice?)
	$(dialog.overlay).bind('click', function() {
		if ($(this).attr('clicked'))
			modalClose()
		else
			$(this).attr('clicked', true);
	});
	$('body').addClass('modal-active');
}

/**
 * Modalbox close event
 * 
 * @param dialog
 * @return void
 */
function modalClose(dialog) {
	$('#picture_container,#footer_radio_tv').show();
	$.modal.close();
	$(window).unbind('keydown', modalKeyDown);
	$('body').removeClass('modal-active');
}

$(document).ready(function() {
	/* External links */
	$('a[@href^="http://"]').attr('rel', 'external').attr('target', '_blank');
	$('a[rel="external"]').attr('target', '_blank');
	
	/* Add clearfix to csc-textpic */
	$('.csc-textpic').addClass('clearfix');
	
	/* IE 6 fixes */
	if ($.browser.msie && (parseInt($.browser.version.substr(0,1)) < 7)) {
		$('.news-latest-item').bind('mouseover', function() { $(this).addClass('hover'); });
		$('.news-latest-item').bind('mouseout', function() { $(this).removeClass('hover'); });
		
		$('input').each(function() {
			$(this).addClass('form-' + $(this).attr('type'));
			if ($(this).attr('type') == 'text' || $(this).attr('password') == 'password') {
				$(this).bind('focus', function() { $(this).addClass('focus') });
				$(this).bind('blur', function() { $(this).removeClass('focus') });
			}
		})
	}

	/* Show/hide/move banner on window resize */
	$(window).bind('resize', function() {
		show_hide_banner();
	});
	show_hide_banner();
	/* Rounded corners */
	$('.rounded').each(function() {
		$(this).prepend('<span class="tl"></span>').prepend('<span class="tr"></span>');
		$(this).append('<span class="bl"></span>').append('<span class="br"></span>');
	});
	/* Radio & TV carousel */
	if ($('#footer_radio_tv')) {
		var flashvars = {fvConfigXmlUrl:"/index.php?type=802", fvCacheConfig:"true"};
		var params = {wmode:"transparent"};
		var attributes = {};
		swfobject.embedSWF(
			"/fileadmin/templates/2009/flash/tvcarousel.swf?r=$Rev: 59840 $", 
			"footer_radio_tv", 
			"100%", 
			"100%", 
			"9.0.115.0",
			"/fileadmin/templates/2009/flash/expressInstall.swf",
			flashvars,
			params,
			attributes);
	}
	
	
	/* Browsebox styling (news/search) */
	$('ul.browsebox').each(style_browser_first_last);
	$('div.news-browser').each(style_browser_first_last);
	
	/* Modalbox */
	modalbox();
	
	/* Help popups (conference delegates) */
	$('.help-wrapper').each(function() {
		$('a.help', this).bind('mouseover', function() {
			$('.help-content', $(this).parent('div')).fadeIn(200);
		});
		$('.help-content', this).bind('mouseleave', function() {
			$(this).hide();
		});
	});
	
	/* Events locations heights */
	$('.location-acts .odd').each(function() {
		var sibling = $(this).next('.even:first');
		if (sibling) {
			var max_height = Math.max($(this).height(), sibling.height());
			$(this).height(max_height);
			sibling.height(max_height);
		}
	});
	/* Swap banner */
	if ($('#banner a').length > 1) {
		var banner_iv = setInterval(toggle_banner, 5000);
	}
});
