

/**
 * Javascript público
 *
 * @category javascript
 * @copyright Copyright 2008, Isertia
 * @filesource
 * @package javascript
 * @version 1.0 2008/10/01
 */


/**
 * Ruta web de instalación. Constante
 */
var INSTALATION_DIR = $('base').attr('href');
var LNG = $('html').attr('xml:lang');


/**
 * Mostrar símbolo de carga 
 * @param e object Elemento al que superponer el cargador
 */
function loading(e, opac)
{
	var opac = opac || '0.5';
	var lwidth = '100%';
	var lheight = $(window).height();
	var container = 'body';
	var ltop = 0;
	var lleft = 0;
	var lposition = 'fixed';
	//Ventana contenedora
	if(e == 'parent')
	{
		lwidth = '100%';
		lheight = '100%';
		container = window.parent.document.getElementById('content');		
	}
	else if(e)
	{
		lwidth = $(e).outerWidth(true);
		//lheight = ($(e).outerHeight(true) < lheight)? $(e).outerHeight(true) : lheight;
		lheight = $(e).outerHeight(true);
		container = e;
		ltop = (parseInt($(e).css('top')) > $(e).offset().top)? parseInt($(e).css('top')) : $(e).offset().top;
		lleft = (parseInt($(e).css('left')) > $(e).offset().left)? parseInt($(e).css('left')) : $(e).offset().left;
		lposition = 'absolute';
	}
	else
	{
		lwidth = '100%';
		lheight = $(window).height();
		container = window.document.getElementById('content');
	}

	//Crea loading si no existe
	if($('#loading').length < 1)
	{
		$('body').append('<div id="loading"></div>');
		$('#loading').css({opacity: opac, left: lleft, top: ltop, width: lwidth, height: lheight, position: lposition});
	}
	return true;
}
function loadingEnd()
{
	while($('#loading').length > 0)
	{
		$('#loading').remove();
	}
	return true;
}


/**
 * Cargar lightbox con parámetros 
 */
function loadLb()
{
	$('a[rel*=lightbox]').lightBox(
	{
		imageLoading: INSTALATION_DIR+'/img/lightbox-ico-loading.gif',
		imageBtnClose: INSTALATION_DIR+'/lng/'+LNG+'/lightbox-btn-close.gif',
		imageBtnPrev: INSTALATION_DIR+'/lng/'+LNG+'/lightbox-btn-prev.gif',
		imageBtnNext: INSTALATION_DIR+'/lng/'+LNG+'/lightbox-btn-next.gif',
		imageBlank: INSTALATION_DIR+'/img/lightbox-blank.gif',
		containerResizeSpeed: 250,
    noNavigation:true,
		txtImage: lng.image,
		txtOf: lng.of,
		keyToPrev: lng.lightbox_prev,
		keyToNext: lng.lightbox_next
	});
}


/**
 * JS propio de la página
 */
function loadPage()
{
	//Vaciar input en primer click
	$('#searcher input').unbind('click').bind('click', function()
	{
		if( ! $(this).hasClass('clicked'))
		{
			$(this).val("");
			$(this).addClass('clicked');
		}
	});

	//Calendario de eventos
	if($('#calendar_events').length > 0)
	{
		//Días seleccionados
		var selected_days = new Object();
		var $events = $('#events');
		var $events_list = $('#events_list');
                var $hoy = $('#hoy');
                var meses = ["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"];
		
		//Datos Json de dias a seleccionar
		function parse_dates(data)
		{		
			data = JSON.parse(data);
			
			var day = month = '';
			if(data==null)
				{
					data="";
					data.length=1;
				}
					
			for(var i=0; i < data.length; i++)
			{
				day = data[i]['time'].substring(0, data[i]['time'].indexOf('-'));
				month = data[i]['time'].substring(data[i]['time'].indexOf('-')+1, data[i]['time'].indexOf(' '));
				day=parseInt(day,10);
				
				//Objetos mes-año
				if( ! selected_days[month])
				{
					selected_days[month] = new Object();
				}
				//Cada dia es un array de eventos				
				if( ! $.isArray(selected_days[month][day]) )
				{
					selected_days[month][day] = new Array();
				}
				selected_days[month][day][selected_days[month][day].length] = data[i];
			}
		}
		
		//Calendario eventos
		var cal = $('#calendar_events').datepicker({
			yearRange: "2009:" + (new Date().getFullYear()+2),
			firstDay: 1,
			dateFormat: 'd-m-yy',
			clearText: lng.clear,
			clearStatus: '',
			closeText: lng.close,
			closeStatus: '',
			prevText: lng.prev,
			prevStatus: '',
			nextText: lng.next,
			nextStatus: '',
			currentText: lng.today,
			currentStatus: '',
			monthNames: lng.months,
			monthNamesShort: lng.months,
			weekHeader: 'Sm',
			dayNames: lng.days,
			dayNamesShort: lng.days_short,
			dayNamesMin: lng.days_min,
			dayStatus: 'DD',
			changeMonth: false,
			changeYear: false,
			onChangeMonthYear: function(year, month)
			{
				$events_list.attr('class', 'date_'+month+'-'+year);
				
				//Si class del input y del título es igual, carga datos del input
				if( $events_list.attr('class') == $events.attr('class') && $events.val() )
				{
					parse_dates($events.val());
				}
				else //Diferente, llamada ajax, actualizar
				{
					if( ! selected_days[month+'-'+year])
					{
						var id_categories=$("#id_categories").val();
						loading('#calendar_events');
						$.get(INSTALATION_DIR+'/public/ajax/events_dates.php', {'y':year, 'm':month, 'lng':LNG, 'id_categories':id_categories }, function(data)
						{								
							if(data && data != 'null' && data != 'ko')
							{
								//alert(data);
								//Parsear fechas
								parse_dates(data);
													
								//Mes actual en input y title
								$events.attr('class', 'date_'+month+'-'+year);
								//$events.val(data);                               															
								$events.val('');
								//Última fecha en este mes, marcarla					
								for(el in selected_days[month+'-'+year])
								{							
								}               							
								//Fecha a marcar
								date = new Date(year, month-1, el);									

								cal.datepicker('setDate', date);
							}
							loadingEnd();
						});
					}
				}
			},
			onSelect: function(date)
			{    			
				parts = date.split('-');
				date = new Date(parts[2], parts[1]-1, parts[0]);			              
				//Día seleccionado distinto al actual, actualizar
				if($('h4', $events_list).attr('class') != 'day_'+parts[0])
				{
					switch(LNG)
					{
						case "en":
							$('h4', $events_list).attr('class', 'day_'+parts[0]).text(lng.days[date.getDay()]+', '+lng.months[parts[1]-1]+' '+parts[0]+', '+parts[2]);
							hours = "hours";
							break;
							
						default:
							$('h4', $events_list).attr('class', 'day_'+parts[0]).text(lng.days[date.getDay()]+', '+parts[0]+' de '+lng.months[parts[1]-1].toLowerCase()+' de '+parts[2]);
							hours = "horas";
					}							
					if(selected_days[parts[1]+'-'+parts[2]]==undefined)
						selected_days[parts[1]+'-'+parts[2]]=0;
					if(selected_days[parts[1]+'-'+parts[2]][parts[0]])
					{
						var txt = time = '';
						for(el in selected_days[parts[1]+'-'+parts[2]][parts[0]])
						{
							el = selected_days[parts[1]+'-'+parts[2]][parts[0]][el];
							time = el.time.split(' ');
							txt = txt+'<li>'+
									'<a class="title" href="'+el.url+'" title="'+el.title+'">'+el.title+'</a> '+
									'<a class="more" href="'+el.url+'" title="Mas informacion">Más información</a> '+
									'</li>';
						}
                                                $hoy.html(parts[0]+' de '+meses[parts[1]-1]+' '+parts[2]);
						$('ul', $events_list).html(txt);
						$('p', $events_list).css('display', 'none');
					}
					else
					{
                                                $hoy.html(parts[0]+' de '+meses[parts[1]-1]+' '+parts[2]);						
						$('ul', $events_list).html('');
						$('p', $events_list).css('display', 'block');
					}
				}
			},
			beforeShowDay: function(date)//Marca los días seleccionados en el input
			{	
				var d = (date.getMonth()+1)+'-'+date.getFullYear();
				//Eventos en el dia, marcar
				if(selected_days[d] && selected_days[d][date.getDate()])
				{
					return [true, 'selected'];
				}
				
				return [true, ''];//Dia habilitado sin seleccionar
			}
		});
	}
	
	//Video embebido
	$(function()
	{
		var video=0;
		$( "#video_abrir" ).click(function(e)
		{
			if(!video)
			{
				e.preventDefault();
				$.get(INSTALATION_DIR+'/public/ajax/video.php',
				function(response, data)
				{
					
					$("#header").append(response);
					
					$("#video" ).dialog(
					{
						autoOpen: false,
						show: "blind",
						hide: "blind",
						width: 680,
					});
					
					$( "#video" ).dialog( "open" );
					video=1;
				});
			}
			else
			{
				$("#video" ).dialog(
					{
						autoOpen: false,
						show: "blind",
						hide: "blind",
						width: 680,
					});
					
				$( "#video" ).dialog( "open" );
			}
			return false;
		});
	});
	
	//Enlaces externos
/*	$('a[rel="nofollow"]').livequery('click', function(event)
	{
		event.preventDefault();
		if(event.target.nodeName == 'A')
		{
			window.open($(event.target).attr('href'));
		}
		else
		{
			window.open($($(event.target).parent('a')).attr('href'));
		}
	});*/
}


/**
 * Defuscador de email
 * Uso: $(enlace elemento).defuscate();
  
jQuery.fn.defuscate = function()
{
	return this.each(function()
	{
		var email = String($(this).html()).replace(/\s*\(.+\)\s*//*, "@");
		$(this).before('<a href="mailto:' + email + '">' + email + "</a>").remove();
	});
}; 
*/

/**
 * Cargar funcionalidades js tras cargar DOM
 */
$(document).ready(function()
{
	//$(".email a").defuscate();
	//LiveQuery. Bind eventos tras ajax automáticamente
	loadPage();
	//Carga de lightbox
	loadLb();
	
});

