/**
 * Extensão do jquery para amostra de erros
 * Esta extensão serve exclusivamente para amostra de erros executados via js.
 */
 
//------------------------------------------------------------------------------
//
// Variáveis
//
//------------------------------------------------------------------------------

var modal = '';

var errorElement = '';
var contentElement = '';
//------------------------------------------------------------------------------
//
// M�todos
//
//------------------------------------------------------------------------------

/**
 * M�todo para cria��oo do "modal" para a p�gina.
 */
function createModal() {
	
	// Adiciona o modal
	if(!modal) { 
		modal = $('<div id="mainModal"></div>');
	} else {
		modal.children().remove();
	}
	
	// Definições do css.
	modal.css({
		top:0, 
		bottom:0,
		left:0, 
		right:0,
		background:'#000000',
		position:'fixed',
		zIndex:10000, 
		opacity: 0.7,
		display:'none'
	});
	
	// Adiciona o modal ao corpo.
	$('body').append(modal);
	
	// Mostra o modal.
	modal.fadeIn();
	
	modal.click(function() {
		removeModal();
	});
	
	// Adiciona o listener para fechamento do modal.
		
}

/**
 * Efetua a definição do texto a ser inclusa no modal.
 */
function settingText(title, errorString, textButton) {
	
	// Verifica se foi definido o botão de texto.
	if(!textButton) {
		textButton = 'Fechar';
	}
	
	if(!contentElement) { 
		contentElement = $('<span class="ui-state-error ui-corner-all" style="font-size:13px;"></span>');
	} else {
		contentElement.children().remove();
	}
		
	if(errorString) {
		var textElement = $('<div>'+errorString+'</div>');
	}
	
	// Botão..
	var button = $('<div align="center" style="margin-top:5px;"><input type="button" id="button-modal" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="'+textButton+'" /></div>');
	
	// Título.
	if(title) {
		var title = $('<div><span style="float:left;" class="ui-icon ui-icon-alert"></span><b>'+title+'</b></div>')
		contentElement.append(title);
	}
	
	// Efetua as inclusoes.
	contentElement.append(textElement);
	contentElement.append(button);
	$('body').append(contentElement);
		
	// Define o padding.
	var padding = 10;
	
	textElement.css({
		marginTop:10  
	});
	
	// Define o css da estrutura do erro.
	contentElement.css({
		position:'fixed',
		padding:padding+'px', 
		top: '50%',
		left: '50%',
		zIndex:10001, 
		background:'#FFFFFF', 
		display: 'none'
	});
	
	// Efetua a definição da margem negativa...
	contentElement.css({
		marginLeft: (((contentElement.width()/2) + (padding) )*-1),
		marginTop: (((contentElement.height()/2)+ (padding)) *-1)
	});
	
	contentElement.fadeIn();
	
	$('#button-modal').click(function() {
		removeModal();
	});
	
	$('#mainModal').click(function() {
		removeModal();
	});
}

function removeModal() {
	$('body').remove('#mainModal');
	modal.fadeOut('slow');
	contentElement.fadeOut('slow');
}

//------------------------------------------------------------------------------
//
// Extensão.
//
//------------------------------------------------------------------------------

jQuery.extend({
	
	/**
	 * Método para se mostrar um erro no javascript.
	 */
	showError:function(title, errorString, textButton){
		createModal();
		settingText(title, errorString, textButton);
	}
});
