jQuery(document).ready(function () {
	//Carrusel.
	//loadCarousel();
	//Cargamos y asignamos eventos.
	//loadLinksEvents();
	//loadVotesEvents();
	//loadToggleEvents();
	//loadUploadify('uploadify');
	//loadTooltip();
	loadFormEvents();
});

function loadCarousel()
{
	jQuery('#mycarousel_galeria').jcarousel({
	    vertical: false,
	    initCallback: mycarousel_initCallback_galeria,
	    animation:1000,
	    scroll:3
	});
}

function mycarousel_initCallback_galeria(carousel) 
{
	jQuery('#carousel_galeria_control a').live('click', function() {
	    carousel.scroll(jQuery.jcarousel.intval(jQuery(this).text()));
	    return false;
	});
	jQuery('#carousel_galeria_control select').live('change', function() {
	    carousel.options.scroll = jQuery.jcarousel.intval(this.options[this.selectedIndex].value);
	    return false;
	});
}

function loadLinksEvents()
{
	jQuery('a[class*=enlace]').live('click', function() {
		return goTo(this);
	});
}

function loadVotesEvents()
{
	jQuery('a[class^=voto]').live('click', function() {
		return vote(this);		
	});
	jQuery('ul[class=votos]').live('mouseover mouseout', function(event) {
		if (event.type == 'mouseover') {
			jQuery(this).children().children().removeClass('activo');
		} else {
			jQuery(this).children().children().each(function (index, element) {
				if (!jQuery(element).hasClass('noActivo')) jQuery(element).addClass('activo');
			});
		}
	});
}

function loadToggleEvents()
{
	jQuery('a[class*=toggleLink]').live('click', function () {
		var capa = '#' + jQuery(this).attr('rel');
		jQuery(capa).toggle('slow');
		if (jQuery(this).html() == '- Ocultar') jQuery(this).html('+ Mostrar');
		else jQuery(this).html('- Ocultar');
	});
}

function vote(element)
{
	var url = jQuery(element).attr('href');
	var capa = '#' + jQuery(element).attr('rel');
	jQuery.ajax({
		url:		url,
		type: 		'post',
		dataType:	'json',
		success:	function (data, textStatus, XMLHttpRequest) {
						if (data.result == 'ok') {
							jQuery(capa).children().children().each(function (index, element) {
								jQuery(element).removeClass('activo');
								if (data.data.avg >= jQuery(element).html()) {
									jQuery(element).removeClass('noActivo');
									jQuery(element).addClass('activo');
								} else jQuery(element).addClass('noActivo');
							});
						}
						return false;
					},
		complete:	function (XMLHttpRequest, textStatus) {
						return false;
					},
		error:		function (XMLHttpRequest, textStatus, errorThrown) {
						return true;
					}
	});
	return false;
}

function goTo(enlace)
{
	var url = jQuery(enlace).attr('href');
	//Calculamos también la capa en el que va el cargando.
	var rel = jQuery(enlace).attr('rel');
	var relParts = rel.split('#');
	var capa = '#' + relParts[0];
	var capaCargando = '#' + relParts[1];
	jQuery.ajax({
		url:		url,
		type: 		'post',
		dataType:	'json',
		beforeSend:	function() {
						jQuery(capaCargando).addClass('cargando');
					},
		success:	function (data, textStatus, XMLHttpRequest) {
						jQuery(capaCargando).removeClass('cargando');
						if ((data != null) && (data != undefined) && (data.result == 'ok')) {
							jQuery(capa).html(data.data);
							loadCarousel(); //Cargamos el carrusel para el contenido que lo lleve.
							loadCommentsFormEvents(); //Cargamos los eventos de formulario.
							return false;
						} else return true;
					},
		complete:	function (XMLHttpRequest, textStatus) {
						jQuery(capaCargando).removeClass('cargando');
						if (XMLHttpRequest.status == 404) return true;
						else return false;
					},
		error:		function (XMLHttpRequest, textStatus, errorThrown) {
						return true;
					}
	});
	return false;
}

function loadUploadify(layer)
{
	jQuery('#' + layer).uploadify({
	    'uploader'       : APP_URL + 'media/swf/upload/uploadify.swf',
	    'script'         : APP_URL + 'media/admin/upload/uploadify.php',
	    'folder'         : APP_HOME + 'tmp/uploads',
	    'queueID'        : 'fileQueue',
	    'auto'           : true,
	    'fileExt'        : 'jpg;jpeg;gif;png',
	    'buttonText'     : 'Examinar...',
	    'buttonImg'		 : APP_URL + 'media/img/btn_examinar.gif',
	    'wmode'			 : 'Transparent',
	    'width'          : 110,
	    'height'         : 30,
	    'sizeLimit'      : 3145728,
	    'method'         : 'POST',
	    'onComplete'     : function(event, a, b, response, data) {
	    	var srcImage = APP_URL + 'television/thumbComments?width=140&filename=' + b.name;
	    	jQuery('input[type=hidden][id=imageName]').val(b.name);
	    	jQuery('#imgPreview').attr('src', srcImage);
	    	jQuery('#commentsErrors').html('<div class="ok">La imagen se ha adjuntado correctamente.</div>');
	    	jQuery('#commentsErrors').removeClass('hidden');
	    }
	});
}

function loadTooltip()
{
	jQuery.extend(jQuery.fn.Tooltip.defaults, {
		track: true,
		delay: 2,
		showURL: false,
		showBody: " - "
	});
	jQuery('#galerias_detalle .fotografias_listado_item_mosca a').Tooltip();
}

function loadFormEvents()
{
	 //find all form with class jqtransform and apply the plugin
	//jQuery(".options_form").jqTransform();
	//loadCheckBoxComments();
	loadCaptchaReload();
	//loadUploadYoutube();
	//loadSubmitCommentForm();
	//loadSearchForm();
	loadContactForm();
}

function loadCheckBoxComments()
{
	jQuery('input[type=radio][class*=checkBoxComments]').live('click', function () {
		var value = jQuery(this).val();
		var imageLayer = jQuery(this).attr('alt');
		var videoLayer = jQuery(this).attr('alt');
		console.log(imageLayer + ' _ ' + videoLayer);
		jQuery('div[id=' + imageLayer + ']').addClass('hidden');
		jQuery('div[id=' + videoLayer + ']').addClass('hidden');
		switch (value) {
			case 'NADA':
				jQuery('div[id=' + imageLayer + ']').addClass('hidden');
				jQuery('div[id=' + videoLayer + ']').addClass('hidden');
				break;
			case 'FOTOGRAFIA':
				jQuery('div[id=' + imageLayer + ']').removeClass('hidden');
				break;
			case 'VIDEO':
				jQuery('div[id=' + videoLayer + ']').removeClass('hidden');
				break;
		}
	});
}

function loadCaptchaReload()
{
	jQuery('a[class*=captcha_reload]').live('click', function () {
		var capa = jQuery(this).attr('rel');
		var randomnumber = Math.floor(Math.random() * 10000000);
		var url = jQuery(this).attr('href') + '/' + randomnumber;
		jQuery('img[id=' + capa + ']').attr('src', url);
		return false;
	});
}

function loadUploadYoutube()
{
	jQuery('a[id=uploadVideo]').click(function () {
		var urlYoutube = jQuery('input[id=urlYoutube]').val();
		if ((urlYoutube != '') || (urlYoutube != 'http://')) {
			var partes = urlYoutube.split('=');
			if (partes[1] != '') {
				var videoObject = '<object width="130" height="110"><param name="movie" value="'+'http://www.youtube.com/v/'+ partes[1] +'&rel=1"></param><param name="wmode" value="transparent"></param><embed src="'+'http://www.youtube.com/v/'+ partes[1] +'&rel=1" type="application/x-shockwave-flash" wmode="transparent" width="130" height="110"></embed></object>';
				jQuery('div[id=videoPreview]').html(videoObject);
			}
		}
	});
}

function loadSubmitCommentForm()
{
	jQuery('a[id=submitFormComment]').live('click', function () {
		var form = jQuery(this).attr('rel');
		var url = jQuery('form[id=' + form + ']').attr('action');
		var parametros = jQuery('form[id=' + form + ']').serialize();
		//Realizamos la llamada por ajax y recargamos comentarios.
		jQuery.ajax({
			url:		url,
			type: 		'post',
			data:		parametros,
			dataType:	'json',
			beforeSend:	function () {
							jQuery('div[id=commentsErrors').children().remove();
							jQuery('div[id=commentsErrors').addClass('hidden');
							jQuery('div[id=divCommentForm]').addClass('cargando');
						},
			success:	function (data, textStatus, XMLHttpRequest) {
							if (data.result == 'ok') {
								jQuery('div[id=commentsErrors]').html('<div class="ok">' + data.message + '</div>');
								if ((data.hide != null) && (data.hide != undefined) && (data.hide)) {
									jQuery('div[id=divCommentForm]').hide('slow');
								}
							} else if (data.result = 'ko') {
								jQuery('div[id=commentsErrors]').html('<div class="ko">' + data.message + '</div>');
							}
							jQuery('div[id=commentsErrors]').removeClass('hidden');
						},
			complete:	function (XMLHttpRequest, textStatus) {
							jQuery('div[id=divCommentForm]').removeClass('cargando');
						},
			error:		function (XMLHttpRequest, textStatus, errorThrown) {
							var html = '<div class="ko">Se ha producido un error al enviar el comentario. Vuelva a intentarlo.</div>';
							jQuery('div[id=commentsErrors]').html(html);
							jQuery('div[id=commentsErrors]').removeClass('hidden');
						}
		});
		return false;
	});
}

function ampliarYoutube(elemento, url)
{
	if ((url != null) && (url != undefined)) {
		var capa = jQuery(elemento).attr('rel');
		jQuery('span[id=' + capa + ']').width(521);
		jQuery('span[id=' + capa + ']').width(320);
		var html =	'<object width="521" height="320">' +
						'<param name="movie" value="' + url + '"></param>' + 
						'<param name="wmode" value="transparent"></param>' +
						'<embed src="' + url + '" type="application/x-shockwave-flash" wmode="transparent" width="521" height="320"></embed>' +
					'</object>';
		jQuery('span[id=' + capa + ']').html(html);
		jQuery('span[id=' + capa + ']').parent().css('width', '100%');
	}
}

function ampliarImagen(elemento)
{
	var capa = 'span[id=' + jQuery(elemento).attr('rel') + ']';
	var img = jQuery(elemento).children().attr('src');
	var newImg = img.replace(/width=[\d]+/g, 'width=521');
	jQuery(elemento).children().attr('src', newImg);
	jQuery(capa).width(521);
	jQuery(elemento).children().width(521);
	jQuery(capa).parent().css('width', '100%');
}

function showCommentForm(elemento)
{
	//TODO: Realizar carga por ajax y estandarizar la vista de comentarios
//	var idCapa = jQuery(elemento).attr('rel');
//	var idComment = idCapa.split('_')[1];
//	var capa = 'div[id=' + jQuery(elemento).attr('rel') + ']';
//	var html = jQuery('div[id=divCommentForm]').html();
//	jQuery('div[id=divCommentForm]').remove();
//	//var html = html.replace(/uploadify/, 'uploadify_' + idComment);
//	jQuery(capa).html(html);
//	jQuery('<input type="hidden" name="parentId" value="' + idComment + '" />').appendTo(capa + ' form[id=commentForm]');
//	jQuery(capa + ' img[id=captchaImg]').attr('id', 'captchaImg_' + idComment);
//	jQuery(capa + ' a[id=aCaptcha]').attr('rel', 'captchaImg_' + idComment);
//	jQuery(capa + ' div[id=apicture]').attr('id', 'apicture_' + idComment);
//	jQuery(capa + ' div[id=avideo]').attr('id', 'avideo_' + idComment);
//	jQuery(capa + ' input[id=uploadify]').attr('id', 'uploadify_' + idComment);
//	jQuery(capa + ' ul[id=checkOptions]').html('');
//	var html =	'<li class="check_opcion options_form_item"><input type="radio" name="atach" value="NADA" id="NADA" class="checkBoxComments" /><label class="">No quiero añadir nada.</label></li>' +
//				'<li class="check_opcion options_form_item"><input type="radio" name="atach" value="FOTOGRAFIA" id="FOTOGRAFIA" class="checkBoxComments" alt="apicture_' + idComment + '" /><label class="">Una fotografía.</label></li>' +
//				'<li class="check_opcion options_form_item"><input type="radio" name="atach" value="VIDEO" id="VIDEO" class="checkBoxComments" alt="avideo_' + idComment + '" /><label class="">Un vídeo de YouTube.</label></li>';
//	jQuery(capa + ' ul[id=checkOptions]').html(html);
//	jQuery(capa + ' ul[id=checkOptions]').removeClass('jqtransformdone');
//	jQuery(capa + ' ul[id=checkOptions]').jqTransform();
//	//loadUploadify('uploadify_' + idComment);
}

function loadSearchForm()
{
	loadDataPickers();
	loadSelect();
	jQuery('input[id=searchKeywords]').live('focus', function () {
		jQuery(this).val('');
	});
	jQuery('a[id=searchButton]').live('click', function () {
		var url = jQuery(this).attr('href');
		var rel = jQuery(this).attr('rel').split('#');
		var searchKeywords = (jQuery('input[id=searchKeywords]').val() != '') ? jQuery('input[id=searchKeywords]').val() : jQuery('input[id=searchKeywords404]').val();
		var advancedSearch = 1;
		if (rel == '') advancedSearch = 0;
		var errorsLayer = rel[0];
		var loadingLayer = rel[1];
		var params = {searchKeywords: searchKeywords, advancedSearch: advancedSearch};
		if (advancedSearch) params = jQuery('form[id=searchForm]').serialize() + '&advancedSearch=' + advancedSearch;
		jQuery.ajax({
			url:		url,
			type:		'post',
			dataType:	'json',
			data:		params,
			beforeSend:	function () {
				if (advancedSearch) {
					jQuery('div[id=' + errorsLayer + ']').addClass('hidden');
					jQuery('#' + loadingLayer).addClass('cargando');
				}
			},
			success:		function (data, textStatus, XMLHttpRequest) {
							if (advancedSearch) jQuery('#' + loadingLayer).removeClass('cargando');
							if (data.result == 'ok') {
								window.location = url + '/resultado/' + data.data;
							} else if (advancedSearch) {
								var html = '<div class="' + data.result + '">' + data.message + '</div>';
								jQuery('div[id=' + errorsLayer + ']').html(html);
								jQuery('div[id=' + errorsLayer + ']').removeClass('hidden');
							}
			},
			complete:	function (XMLHttpRequest, textStatus) {
							if (advancedSearch) jQuery('#' + loadingLayer).removeClass('cargando');
			},
			error:		function (XMLHttpRequest, textStatus, errorThrown) {
							if (advancedSearch) {
								var html = '<div class="ko">Se ha producido un error al enviar el comentario. Vuelva a intentarlo.</div>';
								jQuery('div[id=' + errorsLayer + ']').html(html);
								jQuery('div[id=' + errorsLayer + ']').removeClass('hidden');
							}
			} 
		});
		return false;
	});
}

function loadDataPickers()
{
	jQuery.datepicker.regional['es'] = {
		closeText: 'Cerrar',
		prevText: '&#x3c;Ant',
		nextText: 'Sig&#x3e;',
		currentText: 'Hoy',
		monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio',
		'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],
		monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun',
		'Jul','Ago','Sep','Oct','Nov','Dic'],
		dayNames: ['Domingo','Lunes','Martes','Mi&eacute;rcoles','Jueves','Viernes','S&aacute;bado'],
		dayNamesShort: ['Dom','Lun','Mar','Mi&eacute;','Juv','Vie','S&aacute;b'],
		dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','S&aacute;'],
		weekHeader: 'Sm',
		dateFormat: 'dd/mm/yy',
		firstDay: 1,
		isRTL: false,
		showMonthAfterYear: false,
		yearSuffix: ''
	};
	jQuery.datepicker.setDefaults(jQuery.datepicker.regional['es']);
	jQuery('input[id=datepicker_from]').datepicker();
	jQuery('input[id=datepicker_until]').datepicker();
}

function loadSelect()
{
	jQuery('select[id=channelsListSelect]').selectmenu({maxHeight: 210, width:201,transferClasses:true,style:'dropdown'});
}

function loadContent(url, urlCrop, programUrl)
{
	var player =	'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + "\n" +
					'	id="player" width="100%" height="100%"' + "\n" +
					'	codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">' + "\n" +
					'	<param name="movie" value="' + APP_URL + 'media/swf/player_live/player.swf" />' + "\n" +
					'	<param name="quality" value="high" />' + "\n" +
					'	<param name="bgcolor" value="#000000" />' + "\n" +
					'	<param name="allowScriptAccess" value="sameDomain" />' + "\n" +
					'	<param name="allowFullScreen" value="true" />' + "\n" +
					'	<param name="flashVars" value="_width=511&_height=288&_url_xml_datos=' + url + '" />' + "\n" +
					'	<embed src="' + APP_URL  + 'media/swf/player_live/player.swf" quality="high" bgcolor="#000000"' + "\n" +
					'		width="100%" height="100%" name="player" align="middle"' + "\n" +
					'		flashVars="_width=511&_height=288&_url_xml_datos=' + url + '"' + "\n" +
					'		allowFullScreen="true"' + "\n" +
					'		play="true"' + "\n" +
					'		loop="false"' + "\n" +
					'		quality="high"' + "\n" +
					'		allowScriptAccess="sameDomain"' + "\n" +
					'		type="application/x-shockwave-flash"' + "\n" +
					'		pluginspage="http://www.adobe.com/go/getflashplayer">' + "\n" +
					'	</embed>' + "\n" +
					'</object>';
	var style = 'background: #000 url(' + urlCrop + ') no-repeat scroll 0 0;';
	jQuery('div[id=playerBackgroundImage]').attr('style', style);
	jQuery('a[id=playerLink]').attr('href', programUrl);
	jQuery('div[id=playerHome]').html(player);
}

function loadContactForm()
{	
	jQuery('form[id=contactForm] input').live('focus', function () {
		jQuery(this).val('');
	});
	jQuery('form[id=contactForm] textarea').live('focus', function () {
		jQuery(this).val('');
	});
	
	jQuery('a[id=submitContactForm]').live('click', function () {
		
		
		var url	= jQuery(this).attr('href');
		var layers = jQuery(this).attr('rel');
		var layerErrors = layers.split('#')[0];
		var layerForm = layers.split('#')[1];
		//Ocultamos errores.
		jQuery('div[id=' + layerErrors + ']').hide();
		//console.log(jQuery('form[id=contactForm]').serialize());
		jQuery.ajax({
			url:		url,
			type:		'post',
			dataType:	'json',
			data:		'sendContactForm=true&' + jQuery('form[id=contactForm]').serialize(),
			beforeSend:	function () {
				jQuery('div[id=sendOk]').show();
			},
			success:	function (data, textStatus, XMLHttpRequest) {
				
							jQuery('div[id=sendOk]').hide();
							if (data.result == 'ok') {
								jQuery('div[id=' + layerForm + ']').hide();
								jQuery('div[id=contactOk]').show();
								//Se ha enviado. Mostramos vista de cargando.
								//console.log('ok ' + layerForm);
							} else {
								//Errores. Mostramos errore
								jQuery('a[class*=captcha_reload]').click();
								var html = '<div class="ko">' + data.message + '</div>';
								jQuery('div[id=' + layerErrors + ']').html(html);
								jQuery('div[id=' + layerErrors + ']').show();
							}
			},
			error:		function (XMLHttpRequest, textStatus, errorThrown) {
								jQuery('div[id=sendOk]').hide();
								var html = '<div class="error">Se ha producido un error al enviar el mensaje. Inténtelo de nuevo.</div>';
								jQuery('div[id=' + layerErrors + ']').html(html);
								jQuery('div[id=' + layerErrors + ']').show();
			}
		});
		return false;
	});
}

//Select
function mostrar(div){
	if(document.getElementById(div).style.display=='none')
		document.getElementById(div).style.display='block';
	else ocultar(div);
}
function ocultar(div){
	divIdioma=div;
	setTimeout(ocultarDelayed,300);
}
function ocultarDelayed(){
	document.getElementById(divIdioma).style.display='none';
}
function seleccionar(valor,origen,destino){
	document.getElementById(origen).value=valor;
	document.getElementById(destino).value=valor;
}

//Funciones para el módulo de programación.
function loadEPGChannel(channelEPG, date, element)
{
	//Cargamos epg.
	jQuery.ajax({
		url:		APP_URL + 'inicio/getProgramacionChannel',
		type:		'post',
		dataType:	'json',
		data:		{channelEPG: channelEPG, date: date},
		beforeSend:	function () {
			jQuery('div[id=contenedorProgramacion]').addClass('cargando');
		},
		success:	function (data, textStatus, XMLHttpRequest) {
			if (data.result == 'ok') {
				//Cargamos la vista.
				jQuery('div[id=programacionContent]').html(data.data);
				//Cambiamos la clase custom de la parrilla.
				var channelClass = 'custom_at';
				switch (channelEPG) {
					case 1: channelClass = 'custom_cstv'; break;
					case 2: channelClass = 'custom_csdos'; break;
					case 3: channelClass = 'custom_at'; break;
				}
				jQuery('div[id=programacion]').attr('class', 'capaseccionl ' + channelClass);
				//Vuelvo a llamar a iniciar el flexcroll.
				fleXenv.fleXcrollMain('programacionScroll');
				if ((element != null) && (element != undefined)) {
					jQuery('.ajaxDay').attr('class', '');
					jQuery('a[id=ajaxDay' + date + ']').attr('class', 'ajaxDay activo');
				}
			}
			jQuery('div[id=contenedorProgramacion]').removeClass('cargando');
		}
	});
}
