// Carga el contenido de la url parametrizada en el div parametrizado.
// Sincronismo de carga marcado por parámetro sync:
// 	true: carga síncrona de contenido
// 	false: carga asíncrona de contenido
function loadContent(div, url, sync){
	div.empty();
	div.html("<p align='center'>"+imgLoading+"</p>");	
	if (sync) {
		$.ajax({
			type: "POST",
			async: sync,
			url: url,
			dataType: "html",
			success: function(data, textStatus){
				if (data!=null) {
					if (data.charAt(0)=='[') {					
						data = JSON.parse(data, function (key, value) {
							var type;
							if (value && typeof value === 'object') {
								type = value.type;
								if (typeof type === 'string' 
										&& typeof window[type] === 'function') {
									return new (window[type])(value);
								}
							}
							return value;
						});				
					
						l_errores = new Array();
						l_avisos = new Array();
						$(data).each(function(i,item){
							if (item.error!=null && item.error!="") {
								l_errores.push(item.error);
							} else if (item.aviso!=null && item.aviso!="") {
								l_avisos.push(item.aviso);
							}
						});
							
						if (l_errores!=null && l_errores.length>0) {
							view_errors(l_errores, "Validación de acceso");				
						} else if (l_avisos!=null && l_avisos.length>0) {	
							view_avisos(l_avisos, "Validación de acceso");
						} else {
							
						}
					} else {
						div.html(data);
						div.contents().find('input[type!="hidden"]:first').focus(); // Set focus
					}
				}
			},
			error: function(XMLHttpRequest, textStatus, errorThrown){
				l_errores = new Array();
				l_errores.push("Error en acceso");
				view_errors(l_errores, "Error general");
			}
		});	
	} else {
		div.load(url, function(){});
		div.contents().find('input[type!="hidden"]:first').focus(); // Set focus
	}	
}






// Abre ventana de diálogo modal
function openView(div_destino, titulo, ancho, alto, botonera, destroy, fnCerrar){
	div_destino.dialog({
		autoOpen: false,
		title: titulo,	
		width: ancho,
		//height: alto,
		//show: 'fold',
		//hide: 'fold', 		
		close: function(){			
			if (destroy) {
				$(this).dialog("destroy");
				$(this).remove();
			}

			if (jQuery.isFunction(fnCerrar)) {
				fnCerrar();
			}
		},
		closeOnEscape: false,
		buttons: botonera,
		modal: true,
		overlay: {
			backgroundColor: '#000',
			opacity: 0.5
		}
	});
	
	div_destino.dialog("open");
}

// Visualiza en el elemento 'errores'  el contenido del array errores
// fn: función ejecutada tras pulsar el botón 'cerrar' del diálogo.
function view_errors(errores, titulo, fn){
	$("#acciones").append("<div id='errores' class='errores'></div>");
	if (errores.length>0) {
		$("#errores").empty();
		var cadena = "";
		while (errores.length>0) {
			cadena = cadena + "<span>"+errores.shift()+"</span><br />";
		}		
		$("#errores").html(cadena);
		var botones = {};
		botones['CERRAR'] = function(){
			$(this).dialog("close");
			if (jQuery.isFunction(fn)) {
				fn();
			} 
		};
		$('#errores').keyup(function(e) {
			if (e.keyCode == 13) {
				$(this).dialog("close");
				if (jQuery.isFunction(fn)) {
					fn();
				}
			}
		});
		if (titulo=='' || titulo==null) {
			titulo="Error en validación";
		} else {
			titulo="Error en " + titulo;
		}
		openView($("#errores"),"<b>"+titulo+"</b>",300,200,botones, true);		
	}
}

// Visualiza en el elemento 'avisos'  el contenido del array avisos
// fn: función ejecutada tras pulsar el botón 'cerrar' del diálogo.
function view_avisos(avisos, titulo, fn){
	$("#acciones").append("<div id='avisos' class='avisos' />");
	if (avisos.length>0) {
		$("#avisos").empty();
		var cadena = "";
		while (avisos.length>0) {
			cadena = cadena + "<span>"+avisos.shift()+"</span><br />";
		}		
		$("#avisos").html(cadena);
		var botones = {};
		botones['CERRAR'] = function(){
			$(this).dialog("close");
		};
		if (titulo==null || titulo=='') {
			titulo="Ojito";
		}
		openView($("#avisos"),"<b>"+titulo+"</b>",300,200,botones, true, fn);
	}
}


// Visualiza en el elemento 'confirmacion'  el contenido del array 'confirmaciones'
function view_confirmacion(confirmaciones, titulo, functionSI){
	$("#acciones").append("<div id='confirmaciones' class='confirmaciones' />");
	if (confirmaciones.length>0) {
		$("#confirmaciones").empty();
		var cadena = "";
		while (confirmaciones.length>0) {
			cadena = cadena + "<span>"+confirmaciones.shift()+"</span><br />";
		}		
		$("#confirmaciones").html(cadena);
		var botones = {};		
		botones['NO'] = function(){$(this).dialog("close");};
		botones['SI'] = function(){$(this).dialog("close"); functionSI(); };
		if (titulo=='' || titulo==null) {
			titulo="Confirmación";
		}
		openView($("#confirmaciones"),"<b>"+titulo+"</b>",300,200,botones, true);		
	}
}

// Visualiza mensaje de carga activa
function view_loading(titulo, abrir){
	if (abrir) {
		$("#acciones").append("<div id='loading' class='avisos' />");		
		$("#loading").html("<p align='center'>"+imgLoading+"</p>");
		openView($("#loading"),titulo,180,100,{},true);
	} else {
		if ($("#loading")!=null){
			$("#loading").dialog('close');
		}
	}
}

