var dyLightshow = function(settings)
{
	
	if (arguments.lenght == 0) return;
	
	// PARAM: Identificador del contenedor(ventana)
	settings.id     = typeof settings.id     == 'string'  ? settings.id     : Math.random().toString();
	// PARAM: Poner a true para emular ventana modal
	settings.modal  = typeof settings.modal  == 'boolean' ? settings.modal  : false;
	// PARAM: Width de la capa contenedora
	settings.width  = typeof settings.width  == 'number'  ? settings.width  : null;
	// PARAM: Height de la capa contenedora
	settings.height = typeof settings.height == 'number'  ? settings.height : null;		
	// PARAM: Opacidad de la capa de fondo (solo si settings.modal es true)
	settings.opacity = typeof settings.opacity == 'number'  ? settings.opacity : 0.8;	
	// PARAM: Color de fondo de la capa de fondo (solo si settings.modal es true)
	settings.bgColor = typeof settings.bgColor == 'string'  ? settings.bgColor : '#000';	
	// PARAM: Formato de la ventana(True para poner en formato modal)
	settings.modal = typeof settings.modal == 'boolean'  ? settings.modal : false;
		
	var public = {		
		id			: settings.id,		// Guardamos Identificador en la parte publica
		bopacity	: settings.opacity,	// Guardamos opacidad en la parte publica
		bbackground	: settings.bgColor,	// Guardamos color de fondo(solo para formato modal) en la parte publica
		mMode		: settings.modal,	// Guardamos formato ventana en la parte publica				
		backWidth	: $(window).width(),// Width de la capa de fondo (solo cuando modal es true). Idem con el Height	
		backHeight  : $(window).height() > $(document).height() ? $(window).height() : $(document).height(),
		
		// Estilo basico de la ventana (solo ancho y alto, posicionamiento y opacidad)
		// Para estilos de aspecto usar el fichero css correspondiente
		basic_style	: { 
			position : 'absolute',
			width	 : settings.width+'px',
			height	 : settings.height+'px',
			display	 : 'none',
			opacity	 : '1',
			left	 : settings.left ? settings.left : ((parseInt(public.backWidth)/2)  - ((parseInt(settings.width)+10)/2)) + ( $.browser.msie ? document.documentElement.scrollLeft : window.scrollX),
			top		 : 200 + ( $.browser.msie ? document.documentElement.scrollTop : $.browser.opera ? document.body.scrollTop : window.scrollY)
			
		},		
		
		show: function()
		{
			$("#MD_"+public.id+',#MDbrowserArea').remove();
						
			if (public.mMode) 
			{	//Si la ventana tiene que ser modal creamos antes una capa de fondo
				var backDiv = document.createElement('div');				
				$(backDiv)
					.attr("id","MDbrowserArea"+public.id)
					.css( { 
							position	: 'absolute',
							left		: 0,
							top			: 0,
							width		: public.backWidth, //$(window).width()+'px',
							height		: public.backHeight, //$(document).height(),
							background	: public.bbackground,
							opacity		: public.bopacity
						} );
			}
			
			// Creamos la ventana modal
			var modalDiv = document.createElement('div');
			$(modalDiv)
				// Asignamos atributos
				.attr({
					id 	    : 'MD_'+public.id,
					'class' : 'lightshow'
				})
				// Asignamos estilo basico
				.css(public.basic_style);
				
			// Si modal es true asignamos aņadimos capa de fondo al cuerpo del documento
			if (public.mMode) document.body.appendChild(backDiv);
			
			// Aņadimos ventana al cuerpo del docuemnto
			document.body.appendChild(modalDiv);

			// Mostramos ventana
			$(modalDiv).fadeIn("slow");
		},					
		
		ajaxShow: function(url,params,callback)
		{
			public.show();
			
			$.ajax(
			{
				type		: "GET",
				url			: url,
				data		: params,
				timeout		: 2000,
				success		: function(data)
				{ 
					empty();
					append(data);
					if (callback) callback(); 
				},
				beforeSend	: function()
				{ 
					$("div#MD_"+public.id+" p").append('Loading...');
				},
				error		: function() 
				{ 
					empty();
					append("ERROR!!"); 
				}
			});
		}
	};
	function append(content)
	{
		if ( document.getElementById("MD_"+public.id) ) $("div#MD_"+public.id).append(content);
	}		
	
	function empty()
	{
		if ( document.getElementById("MD_"+public.id) ) $("div#MD_"+public.id).empty();
	}	
	return public;
}