// JavaScript Document
$(document).ready(function(){
	//prevent cache of dynamic ajax pages
	$.ajaxSetup({cache:false});
	
	$('body').append('<div id="jqueryLightboxBackground">--</div>');
	$('body').append('<div id="jqueryLightbox"><a href="#" class="jqueryLightboxClose">Close [X]</a><div id="jqueryLightboxTitle"></div><div id="jqueryLightboxContent"></div></div>');
		
	$('#jqueryLightboxBackground').hide();
	$('#jqueryLightbox').hide();
	
	$('.jqueryLightboxClose').click(function(event) {
		event.preventDefault();
		closeLightbox();
	});
	
	
	//open lightbox
	$('.open-jquery-ajax-lightbox').live('click', function(e) {
		e.preventDefault();
		openLightbox($(this).attr('title'), $(this).attr('href'));
	});
	
	//open wide lightbox
	$('.open-wide-jquery-ajax-lightbox').live('click', function(e) {
		e.preventDefault();
		openWideLightbox($(this).attr('rel'), $(this).attr('title'), $(this).attr('href'));
	});
	
	//load new page inside lightbox
	$('.lightbox-load-ajax').live('click', function(e){ 
		e.preventDefault();
		loadLightboxContentAjax($(this).attr('href'), $(this).attr('title'));
	});
	
	//form submission
	$('.lightbox-form-submit').live('click', function(e) { 
		e.preventDefault();
		$('#lightbox-form').attr('action', $(this).attr('href'));
		$('#lightbox-form').submit();
		$('#jqueryLightboxContent').addClass('ajax-loader-with-content');
	});
	$('.lightbox-ajax-form-submit').live('click', function(e) { 
		e.preventDefault();
		var element = $(this);
		$('#jqueryLightboxContent').addClass('ajax-loader-with-content');
		lightboxSetBackgroundHeight();
		$.post(element.attr('href'), $('#lightbox-form').serialize(), function(data) {			
			$('#jqueryLightboxContent').removeClass('ajax-loader-with-content');
			loadLightboxContent(data, element.attr('title'));
			lightboxSetBackgroundHeight();
			lightboxOnAjaxUpdate();
		});
	});
});

function openLightbox(title, contentAjaxUrl) {
	//populate box
	$('#jqueryLightboxTitle').html(title);
	if (contentAjaxUrl) {
		$('#jqueryLightboxContent').addClass('ajax-loader').html('');
		lightboxSetBackgroundHeight();
		$('#jqueryLightboxContent').load(contentAjaxUrl, function() {
			$('#jqueryLightboxContent').removeClass('ajax-loader');
			lightboxSetBackgroundHeight();
			lightboxOnAjaxUpdate();
		});
	}
	//open box
	$('#jqueryLightbox').fadeIn('fast');
	$('#jqueryLightboxBackground').fadeTo('slow', 0.5);
}

function closeLightbox() {
	$('#jqueryLightbox').fadeOut('slow', function(){
		if (jqueryWideLightboxExtraWidth > 0) {
			closeWideLightbox();
		}
	});
	$('#jqueryLightboxBackground').fadeOut('slow');
}

function loadLightboxContentAjax(contentAjaxUrl, lightboxTitle) {
	$('#jqueryLightboxContent').addClass('ajax-loader').html('');
	lightboxSetBackgroundHeight();
	$('#jqueryLightboxContent').load(contentAjaxUrl, function() {
		$('#jqueryLightboxTitle').html(lightboxTitle);
		$('#jqueryLightboxContent').removeClass('ajax-loader');
		lightboxSetBackgroundHeight();
		lightboxOnAjaxUpdate();
	});
}
function loadLightboxContent(html, lightboxTitle) {
	if (lightboxTitle) {
		$('#jqueryLightboxTitle').html(lightboxTitle);
	}
	$('#jqueryLightboxContent').html(html);
}

function lightboxSetBackgroundHeight() {
	$('#jqueryLightboxBackground').height($('#jqueryLightbox').height() + 16);
}

function lightboxOnAjaxUpdate() {
	try {
		customOnAjaxUpdate();
	} catch (exception) {
		return false;
	}
}



//functions for opening and closing a wider lightbox

var jqueryWideLightboxExtraWidth = 0;

function openWideLightbox(extraWidth, title, contentAjaxUrl) {
	jqueryWideLightboxExtraWidth = Number(extraWidth);
	$('#jqueryLightbox').width($('#jqueryLightbox').width() + jqueryWideLightboxExtraWidth);
	$('#jqueryLightbox').css({
		marginLeft : function(index, value){
			return parseFloat(value) - (jqueryWideLightboxExtraWidth / 2);
		},
	});
	$('#jqueryLightboxBackground').width($('#jqueryLightboxBackground').width() + jqueryWideLightboxExtraWidth);
	$('#jqueryLightboxBackground').css({
		marginLeft : function(index, value){
			return parseFloat(value) - (jqueryWideLightboxExtraWidth / 2);
		},
	});
	openLightbox(title, contentAjaxUrl);
}
function closeWideLightbox() {
	$('#jqueryLightbox').width($('#jqueryLightbox').width() - jqueryWideLightboxExtraWidth);
	$('#jqueryLightbox').css({
		marginLeft : function(index, value){
			return parseFloat(value) + (jqueryWideLightboxExtraWidth / 2);
		},
	});
	$('#jqueryLightboxBackground').width($('#jqueryLightboxBackground').width() - jqueryWideLightboxExtraWidth);
	$('#jqueryLightboxBackground').css({
		marginLeft : function(index, value){
			return parseFloat(value) + (jqueryWideLightboxExtraWidth / 2);
		},
	});
	jqueryWideLightboxExtraWidth = 0;
}

