$(document).ready(function() {
	$('#flash-close').click(function() {
		Flash.hide();
	});
});


function Flash() {}



Flash.getFlashUrl = "";
Flash.isShown = false;

/**
 * Wysuwa okno flasha.
 */
Flash.show = function() {
	
	/* Jeżeli próbuję ukatywnić Flash w momencie, w którym jest on już 
	 * aktywny to usuwam interwał zamykający Flasha bo będzie on tworzony
	 * od początku.
	 */
	if (Flash.isShown) {
		$(this).stopTime('flashHidding');
	}

	$('#flash').show();
	Flash.isShown = true;
	$(this).oneTime(10000, 'flashHidding', function() {
		Flash.hide();
	});
}

/**
 * Ukrywa okno flasha.
 */
Flash.hide = function() {
	$('#flash').slideUp(1000);
	Flash.isShown = false;
}

/**
 * Ustawia styl wyświetlania flasha jako pole informacyjne.
 */
Flash.asInfo = function() {
	var flash = $('#flash');
	var close = $('#flash-close');
	if (flash.hasClass('ui-state-error')) flash.removeClass('ui-state-error');
	if (close.hasClass('ui-icon-alert')) flash.removeClass('ui-icon-alert');

	flash.addClass('ui-state-highlight');
	close.addClass('ui-icon-info');
}

/**
 * Ustawia styl wyświetlania flasha jako pole z informacją o błędzie.
 */
Flash.asError = function() {
	var flash = $('#flash');
	var close = $('#flash-close');
	if (flash.hasClass('ui-state-highlight')) flash.removeClass('ui-state-highlight');
	if (close.hasClass('ui-icon-info')) flash.removeClass('ui-icon-info');

	flash.addClass('ui-state-error');
	close.addClass('ui-icon-alert');
}

Flash.forceShow = function(message, type) {
	if (message != undefined && message != null && message != '') {
		/*
		 * Komunikat jest zdefiniowany więc nie pobieram go ze zmiennej sesji.
		 */
		if (type == undefined) type = 'info';
		if (type == 'error') Flash.asError()
		else if (type == 'info') Flash.asInfo();

		/* Wysyłam żądanie w celu usunięcią istniejącej informacji flash,
		 * aby nie pojawiła się ona po odświeżeniu strony.
		 */
		$.ajax({
			url			: Flash.getFlashUrl,
			type		: 'get',
			dataType	: 'json'
		});

		// Wyświetlam komunikat.
		$('#flash-message').html(message);
		Flash.show();
	} else {
		$.ajax({
			url			: Flash.getFlashUrl,
			type		: 'get',
			dataType	: 'json',
			success		: function(msg) {
				if (msg != null) {
					if (msg.type == 'info') {
						Flash.asInfo();
					} else if (msg.type == 'error') {
						Flash.asError();
					}
					// Wyświetlam komunikat.
					$('#flash-message').html(msg.message);
					Flash.show();
				}
			}
		});
	}
}



