/**
 * WindowManager - Specific Use
 * Version: 0.1, 06.04.2010
 * by Gustavo Gatto, inbox@gustavogatto.net - http://www.gustavogatto.net/
 *
 * Requires: Prototype.String.replaceAll
 *
 * Copyright (c) 2010 Gustavo Gatto
 * Licensed under GPL (http://www.opensource.org/licenses/gpl-license.php)
 */
var windowManager = {
	html    : '<div class="##STATUS##"><img src="/img/icon-alert-##STATUS##.##ICON##" /><p><strong>##TITLE##</strong><span>##MESSAGE##</span></p></div>',
	list    : new Array(),
	timer   : 0,
	opened  : false,
	running : false,
	ccback  : null
};

windowManager.add = function(status, title, message) {
	windowManager.list.push(new Array(status, title, message));
};

windowManager.close = function(callback) {
	if (windowManager.list.length) {
		if (!windowManager.isRunning()) {
			clearTimeout(windowManager.timer);
			windowManager.running = true;
			windowManager.timer   = 0;
			$('#windowglobal').animate({
				bottom: '-100px'
			}, 500, function(){
				$('#windowglobal').hide();
				$('#modalwindow:visible').fadeOut('fast',function(){
					$(this).css('display','none');
				});
				windowManager.removeCurrent();
				windowManager.running = false;
				if ($.isFunction(callback)) {
					callback();
				}
			});
		}
	} else {
		if ($.isFunction(callback)) {
			callback();
		}
	}
};

windowManager.removeCurrent = function() {
	if (windowManager.list.length > 1) {
		windowManager.list = windowManager.list.slice(1);
	} else {
		windowManager.list = new Array();
	}
	windowManager.opened = false;
};

windowManager.show = function(callback) {
	if (windowManager.opened || windowManager.running) {
		return windowManager.show(callback);
	} else {
		windowManager.open(callback);
	}
};

windowManager.isRunning = function() {
	if (windowManager.running) {
		return windowManager.isRunning();
	} else {
		return false;
	}
};

windowManager.isOpen = function() {
	if (windowManager.opened) {
		return windowManager.isOpen();
	} else {
		return false;
	}
};

windowManager.open = function(callback) {
	windowManager.current++;
	
	if (windowManager.list.length) {
		
		windowManager.running = true;
		
		switch (windowManager.list[0][0]) {
			
			case 'wait':
				
				var tl = 'Aguarde um momento...';
				var ms = 'Sua requisição está sendo processada.';
				var tp = windowManager.html.replaceAll('##STATUS##', 'wait').replaceAll('##ICON##', 'gif').replaceAll('##TITLE##', tl).replaceAll('##MESSAGE##', ms)
				
				$('#modalwindow').fadeIn('fast',function(){
					
					$('#windowbar div.content').html(tp).css({'z-index':'500000', cursor:'default'});
					$('#windowbar a.close').css('display','none');
					$('#windowbgd').css({
						background: '#939393',
						opacity: '.9'
					});
					$('#windowglobal').show().animate({
						bottom: '0'
					}, 500, function(){
						if ($.isFunction(callback)) {
							callback();
						}
						windowManager.running = false;
						windowManager.opened  = true;
					});
				});
				
			break;
			
			default:
				
				var bg = (windowManager.list[0][0] == 'error') ? '#ff8800' : '#0071bb' ;
				var tp = windowManager.html.replaceAll('##STATUS##', windowManager.list[0][0]).replaceAll('##ICON##', 'png').replaceAll('##TITLE##', windowManager.list[0][1]).replaceAll('##MESSAGE##', windowManager.list[0][2]);
				
				$('#windowbar div.content').html(tp).css({'z-index':'500000', cursor:'pointer'});
				$('#windowbar a.close').css('display','inline');
				$('#windowbar').bind('click',function(){
					windowManager.close();
				});
				$('#windowbgd').css({
					background: bg,
					opacity: '.9'
				});
				
				$('#windowglobal').show().animate({
					bottom: '0'
				}, 500, function(){
					if ($.isFunction(callback)) {
						callback();
					}
					windowManager.running = false;
					windowManager.opened  = true;
					windowManager.timer = setTimeout("windowManager.close()", 30000);
				});
				
			break;
		}
	}
};