/*
 * Función que crea la modal con jQuery Dialog y la elimina al cerrarla
 * 
 * pTipoModal: Error, Alerta, Info o Dialogo (esta última es especial, porque crea otro tipo de modal).
 * pTexto: Texto de la modal.
 * pAccionCerrar: Accion que se ejecutara al cerrar la modal
 * pTitulo: Titulo de la modal de dialogo (no se tiene en cuenta para errores, alertas y confirms)
 */
function crearModal(pTipoModal, pTexto, pAccionCerrar, pTitulo, pWidth) {
	 if (pTipoModal == 'Error' || pTipoModal == 'Alerta' || pTipoModal == 'Info') {
		 crearModalAlerta(pTexto, pTipoModal, pAccionCerrar);
		 return;
	 } else if (pTipoModal == 'Dialogo') {
		 if (pTexto.indexOf('.jsp') != -1)
			 crearModalLoadHtmlJsp(pTexto, pAccionCerrar, pTitulo);
		 else
			 crearModalLoadHtmlDiv(pTexto, pAccionCerrar, pTitulo, pWidth);
		 return;
	 }
 }

// Crea la modal para avisos, alertas y errores.
// pTexto: 			texto a sacar.
// pTipo: Alerta, 	Error, Info.
// pAccionCerrar: 	lo que hará al cerrarse.
// pCodidi: 			código de idioma.
function crearModalAlerta(pTexto, pTipo, pAccionCerrar) {
	var htmlDialogo = '';
	var vAccionCerrar = '';
	var tituloModal = 'Mensaje de ' + pTipo;
	var id = null;
	var idiomaAlert = "";
	
	if (pAccionCerrar != undefined) vAccionCerrar = pAccionCerrar;
	
	if (pTexto.indexOf('SQL-448') != -1)
		vAccionCerrar += 'cancelarSesion(\'PRINCIPAL\');';
	
	// Hay que pasar un id u otro dependiendo del tipo de mensaje, para el getMessage().
	if('Error' == pTipo){
		id = 1;
	}else if('Alerta' == pTipo){
		id = 3;
	}else{
		id = 4;
	}
	
	// Historieja para coger el idioma (se supone q temporal... pero ya veremos)
	try {if (codidi != undefined) idiomaAlert = codidi;} catch(e) {}
	try {if (parent.codidi != undefined) idiomaAlert = parent.codidi;} catch(e) {}
	try {if (parent.idioma != undefined) idiomaAlert = parent.idioma;} catch(e) {}
	try {if (idioma != undefined) idiomaAlert = idioma;} catch(e) {}
	
	$('<div id="modal'+pTipo+'" title="' + getMessage('/js/lib/alerts.js', id, idiomaAlert, tituloModal) + '"></div>').insertAfter($('#appendAlert'));
	divDialogo = '#modal'+pTipo;
	$.ajaxSetup({cache:false, contentType: "application/x-www-form-urlencoded; charset=UTF-8" });
	$('#appendAlert').load('../../jsp/comun/alert.jsp', {texto: pTexto, botones: 'Aceptar', div: divDialogo, codidi: idiomaAlert}, function() {
		htmlDialogo = $('#appendAlert').html();
		$('#appendAlert').html('');
		$(divDialogo).html(htmlDialogo);
	 	crearDialog(divDialogo, pTipo, vAccionCerrar);
	});
}


function crearModalConfirm(pTexto, pTipo, pTitulo, pAccionAceptar, pAccionCerrar) {
	
	var htmlConfirm = '';

	$('<div id="modal'+pTipo+'" title="'+pTitulo+'"></div>').insertAfter($('#appendAlert'));
	divDialogo = '#modal'+pTipo;
	$.ajaxSetup({cache:false, contentType: "application/x-www-form-urlencoded; charset=UTF-8" });
	$('#appendAlert').load('../../jsp/comun/confirm.jsp', {texto: pTexto, nomModal: divDialogo, accionOK: pAccionAceptar, accionKO: pAccionCerrar}, function() {
		htmlConfirm = $('#appendAlert').html();
		$('#appendAlert').html('');
		$(divDialogo).html(htmlConfirm);
	 	crearDialog(divDialogo, pTipo, null, pTitulo);
	});
}

/**
 * Crea un dialogo a partir de una url (JSP)
 * 
 * @param pUrl Url del jsp que se cargará en el dialogo
 * @param pAccionCerrar Acción que se ejecuta al cerrar
 * @param pTitulo Titulo de la modal
 */
function crearModalLoadHtmlJsp(pUrl, pAccionCerrar, pTitulo) {
	
	var htmlDialogo = '';
	if (pTitulo != undefined && pTitulo != '') {
		$('<div id="modalDialogo" title="'+pTitulo+'"></div>').insertAfter($('#appendAlert'));
	} else {
		$('<div id="modalDialogo"></div>').insertAfter($('#appendAlert'));
	}
	divDialogo = '#modalDialogo';
	
	$('#appendAlert').load(pUrl, function() {
		htmlDialogo = $('#appendAlert').html();
		$('#appendAlert').html('');
		$(divDialogo).html(htmlDialogo);
	 	crearDialog(divDialogo, 'Dialogo', pAccionCerrar, pTitulo);
	});
}

/**
 * Crea un dialogo a partir de una capa ya construida
 * 
 * @param pDiv Div donde tenemos el html que queremos meter en el dialogo
 * @param pAccionCerrar Acción que se ejecuta al cerrar
 * @param pTitulo Titulo de la modal
 */

function crearModalLoadHtmlDiv(pDiv, pAccionCerrar, pTitulo, pWidth) {
	
	var htmlDialogo = '';
	if (pTitulo != undefined && pTitulo != '') {
		$('<div id="modalDialogo" title="'+pTitulo+'"></div>').insertAfter($('#appendAlert'));
	} else {
		$('<div id="modalDialogo"></div>').insertAfter($('#appendAlert'));
	}
	divDialogo = '#modalDialogo';
	
	htmlDialogo = $('#'+pDiv).html();
	$(divDialogo).html(htmlDialogo);
	crearDialog(divDialogo, 'Dialogo', pAccionCerrar, pTitulo, pWidth);
}


function crearDialog(divDialogo, pTipo, pAccionCerrar, pTitulo, pWidth) {
	if (pWidth == 'undefined'){
		pWidth = 'auto';
	} 
	$(divDialogo).dialog({ autoOpen:  false, 
							draggable: true , 
							dialogClass: 'ui-state-highlight', 
							modal: true, 
							resizable: true,
							width: pWidth
							/* buttons: { "Aceptar": function() { alert('aceptando..'); $(this).dialog("close"); },
										  "Cancelar": function() { alert('cancelando...'); $(this).dialog("close");}
								   }*/
	 });

		// Aqui tendriamos que condicionar por explorador
		// Ya que Chrome y Mozilla redimensionan bien
		// The problem is: la propiedad height en IE no coge la barra de titulo
	 	if ($.browser.msie) {
			if (pTipo != 'Dialogo') { 
				$(divDialogo).dialog("open");
				var altura = parseInt($(divDialogo).innerHeight()) + 40;			
				$(divDialogo).dialog("option", "height", altura);
				$(divDialogo).dialog("close");
				$(divDialogo).dialog("option", "draggable", false );
			}
		}
		
	 	if (pTipo == 'Dialogo'){
	 		$("#ui-dialog-title-modalDialogo").html(pTitulo);
	 	}
	 	
		$(divDialogo).bind( "dialogclose", function(event, ui) {
			if (pAccionCerrar != undefined && pAccionCerrar != null) {	 
				eval(pAccionCerrar);
			}
			try{				
				$(divDialogo).html('');
				$(divDialogo).remove();
			} catch (e) {} // Pendiente de ver xq peta en IE
		});
		
		$(divDialogo).dialog("open");
		$(divDialogo).dialog("option", "resizable", false );
}
