var WEB_SERVICE_BASE_URL = "http://www.busaodobrasil.com.br";
var VIDEOS_URL_HOME = WEB_SERVICE_BASE_URL+'/videos.ashx?pageIndex=${pageIndex}&pageSize=${pageSize}&codCategoria=${codCategoria}&callback=?';
var VIDEO_URL_PERFIL = WEB_SERVICE_BASE_URL+'/VideosTag.ashx?pageIndex=${pageIndex}&pageSize=${pageSize}&codCategoria=${codCategoria}&tag=${tag}&callback=?';
var VIDEO_URL = WEB_SERVICE_BASE_URL+'/VideosGrouped.ashx?pageIndex=${pageIndex}&pageSize=${pageSize}&codCategoria=${codCategoria}&callback=?';
var VIDEO_WEEK = WEB_SERVICE_BASE_URL+'/VideosWeek.ashx?pageIndex=${pageIndex}&pageSize=${pageSize}&codCategoria=${codCategoria}&callback=?';
var VIDEO_URL_TAG = WEB_SERVICE_BASE_URL+'/VideoTagGrouped.ashx?pageIndex=${pageIndex}&pageSize=${pageSize}&codCategoria=${codCategoria}&tag=${tag}&callback=?';
var VIDEO_ID_CATEGORIA = VIDEO_ID;
var VIDEO_URL_CATEGORIA = VIDEO_WEEK;
var FOTOS_URL  = '/Gallery.ashx?id=${idGaleria}';
var FOTOS_LIST_URL  = '/GalleryList.ashx?id=${id}';
var PARTICIPANTES  = '/services/Participants.ashx';
var NOTICIAS_URL  = '/ContentList.ashx';
var NOTICIAS_DESC_URL  = '/Content.ashx';
var PAGE_SIZE_VIDEOS_FULL  = 12;

Services = {
	_loadJson: function(url, fn){
		$.getJSON(url, fn);
	},

	// HOME
	_parseVideos: function(data){
		var html      = '',
			target    = $('#videos'),
			list      = target.find('ul'),
			legenda   = $('#legenda_video');

		for(var i=0; i<data.medias.length; i++){
			var data_publicacao = data.medias[i].subtitulo.substring(0, 2)+'/'+data.medias[i].subtitulo.substring(2,4),
				titulo          = escape(data.medias[i].titulo),
				resumo          = escape(data.medias[i].resumo),
				thumb           = data.medias[i].thumb_grande,
				embed           = escape(Services._forceWmodeOpaque(data.medias[i].embed));

			html   += '<li>'
				    +'<a href="/modal-video.aspx?titulo=' + encodeURIComponent(data.medias[i].titulo) + '" title="' + titulo +'">'
					+'<img src="' + thumb + '" alt="" width="150" />'
					+'</a>'
					+'<input type="hidden" name="embed" value="' + embed + '" />'
					+'<input type="hidden" name="data" value="' + data_publicacao + '" />'
					+'<input type="hidden" name="resumo" value="' +  resumo + '" />'
					+'</li>';

			if(i==0){
				legenda.html(
					'<strong>' + data_publicacao + '</strong>' + '<br />' + 
					unescape(titulo) + '<br />' + 
					unescape(resumo)
				);
			};
		};

		list
			.html('')
			.append(html);

		var w = list.find('a').width(),
			h = list.find('a').height();

		list
			.find('a')
			.each(
				function(i){
					$(this)
						.attr('title', unescape($(this).attr('title')))
						.click(
							function(){
								Services._slide('#videos');

								var embed = $(this).parent().find('input').val();

								modal(
									{url: $(this).attr('href')},
									function(){
										Services._navModal('V', i );
										$('.placeholder_modal div').html(unescape(embed).split('startPaused=true').join('startPaused=false'));
									}
								);
								return false;
							}
						);
				}
			)
			.hover(
				function(){
					$(this)
						.css({
							width: (w+30)+'px',
							height: (h+30)+'px'
						})
						.find('img')
						.css({
							width: (w+30)+'px',
							height: (h+30)+'px'
						});

						var data_publicacao = $(this).parent().find('input[name="data"]').val(),
							titulo          = $(this).attr('title'),
							resumo          = unescape($(this).parent().find('input[name="resumo"]').val());

						legenda.html('<strong>' + data_publicacao + '</strong>' + '<br />' + titulo + '<br />' + resumo);
				},
				function(){
					$(this)
						.css({
							width: w,
							height: h
						})
						.find('img')
						.css({
							width: w,
							height: h
						});
				}
			);

		Services._slide('#videos');
	},

	_parseVideosPerfil: function(data){
		var html          = '',
			video_content = $('#player_video'),
			target        = $('#videos_list'),
			list          = target.find('ul');

		for(var i=0; i<data.medias.length; i++){
			html   += '<li>'
					 +'<input type="hidden" name="embed" value="' + escape(Services._forceWmodeOpaque(data.medias[i].embed)) + '" />'
					 +'<a href="#" title="#">'
					 +'<img src="' + data.medias[i].thumb_grande + '" alt="" width="135" />'
					 +data.medias[i].titulo
					 +'</a>'
					 +'</li>';
		};

		list
			.html('')
			.append(html)
			.find('a')
			.click(function(){
				var embed = unescape($(this).parent().find('input').val());
				video_content.html(embed).find('embed, object').width(220).height(180).css('display', 'block');
				return false;
			})
			.eq(0)
			.click();

		html='';
	},

	_parseVideosFull: function(data){
		var html             = '',
			video_content    = $('#player'),
			title            = $('#titulo_video'),
			desc             = $('#desc_video'),
			data_video       = $('#data_video'),
			container        = $('#dados'),
			data_element,
			ul_element       = '<ul class="thumbs_video clearfix"></ul>';

		container.html('');
			
		for(var i=0; i<data.days.length; i++){
			var date = data.days[i].day;

			for(var x=0; x<data.days[i].medias.length; x++){
				var obj        = data.days[i].medias[x],
					titulo     = obj.titulo,
					resumo     = escape(obj.resumo),
					embed      = escape(Services._forceWmodeOpaque(obj.embed)),
					thumb      = obj.thumb_grande,
					txt_data   = obj.subtitulo.substring(0, 2)+'/'+obj.subtitulo.substring(2,4);

				html += '<li>'
						+'<input type="hidden" name="embed" value="' + embed + '" />'
						+'<input type="hidden" name="desc" value="' + resumo + '" />'
						+'<input type="hidden" name="date" value="' + txt_data + '" />'
						+'<a href="#" title="' + titulo + '">'
						+'<img src="' + thumb + '" alt="" width="90" />'
						+'<strong>' + titulo + '</strong>'
						+'</a>'
						+'</li>';
			};

			container
				.append(
					'<div class="box_info"><strong>' + date + '</strong></div>' + 
					'<ul class="thumbs_video clearfix">' + 
					html +
					'</ul>'
				);

			html='';
		};
		
		container
			.find('a')
			.click(function(){
				var parent    = $(this).parent(),
					embed     = unescape(parent.find('input[name="embed"]').val()),
					txt_desc  = unescape(parent.find('input[name="desc"]').val()),
					txt_data  = unescape(parent.find('input[name="date"]').val()),
					txt_title = $(this).text();

				video_content.html(embed).find('embed, object').width(420).height(340).css('display', 'block');
				data_video.html(txt_data);
				title.text(txt_title);
				desc.html(txt_desc);

				return false;
			})
			.eq(0)
			.click();		
	},
	
	_filtroVideos: function(){
		$('.filtro a').click(function(){
			var cat = $(this).attr('href').split('#')[1];

			switch(cat){
				case 'T':
					VIDEO_ID_CATEGORIA=VIDEO_ID;
					VIDEO_URL_CATEGORIA=VIDEO_WEEK;
				break
				case 'TV':
					VIDEO_ID_CATEGORIA=VIDEO_TV_ID;
					VIDEO_URL_CATEGORIA=VIDEO_URL;
				break
				case 'WEB':
					VIDEO_ID_CATEGORIA=VIDEO_WEB_ID;
					VIDEO_URL_CATEGORIA=VIDEO_URL;
				break
			};

			Services._loadJson(
				VIDEO_URL_CATEGORIA.replace('${pageIndex}', '1').replace('${pageSize}', PAGE_SIZE_VIDEOS_FULL).replace('${codCategoria}', VIDEO_ID_CATEGORIA),
				Services._parsePaginacao
			);

			$('.txt_filtro_escolhido strong').text( $(this).text() );

			$('#filtro_participantes option:eq(0), #filtro_categorias option:eq(0)').attr('selected', 'selected');

			return false;
		});
		
		$('#filtro_categorias').change(function(){
			var tag = encodeURIComponent($(this).val());

			VIDEO_URL_CATEGORIA=VIDEO_URL_TAG;

			Services._loadJson(
				VIDEO_URL_TAG
					.replace('${pageIndex}', '1')
					.replace('${pageSize}', PAGE_SIZE_VIDEOS_FULL)
					.replace('${codCategoria}', VIDEO_ID)
					.replace('${tag}', tag),
				Services._parsePaginacao
			);
			
			$('.txt_filtro_escolhido strong').text( $(this).find('option:selected').text() );
			
			$('#filtro_participantes option:eq(0)').attr('selected', 'selected');
			
			return false;
		});

		$('#filtro_participantes').change(function(){
			var tag = encodeURIComponent($(this).val());
		
			VIDEO_URL_CATEGORIA=VIDEO_URL_TAG;
		
			Services._loadJson(
				VIDEO_URL_TAG
					.replace('${pageIndex}', '1')
					.replace('${pageSize}', PAGE_SIZE_VIDEOS_FULL)
					.replace('${codCategoria}', VIDEO_ID)
					.replace('${tag}', tag),
				Services._parsePaginacao
			);
			
			$('.txt_filtro_escolhido strong').text( $(this).find('option:selected').text() );

			$('#filtro_categorias option:eq(0)').attr('selected', 'selected');
			
			return false;
		});
	},
	
	_parseFiltroVideosParticipantes: function(data){
		var option = '';
		for(var i=0; i<data.result.length; i++){
			option += '<option value="' + data.result[i].videos_cod + '">' + data.result[i].name + '</option>';
		};
		$('#filtro_participantes').append(option);
		Services._filtroVideos();
	},
	
	_parseGaleriaHome: function(data){
		var html      = '',
			target    = $('#fotos'),
			list      = target.find('ul'),
			legenda   = $('#legenda_foto');

		for(var i=0; i<data.length; i++){
			html   += '<li>'
					 +'<a href="/fotos/default.aspx?idGallery=' + data[i].id + '&title=' + escape(data[i].title) + '" title="' + data[i].title +'">'
					 +'<img src="' + data[i].photo + '" alt="" width="120" />'
					 +'<input type="hidden" name="data" value="' + data[i].date + '" />'
					 +'</a>'
					 +'</li>';

			if(i==0){
				legenda.html('<strong>'+ data[i].date + '</strong><br />' + data[i].title);
			};
		};

		list
			.html('')
			.append(html);

		var w = list.find('a').width(),
			h = list.find('a').height();

		list
			.find('a')
			.mouseover(function(){
				legenda.html('<strong>'+ $(this).parent().find('input').val() + '</strong><br />' + $(this).attr('title'));
			})
			.hover(
				function(){
					$(this).css({
						width: (w+10)+'px',
						height: (h+10)+'px'
					});
				},
				function(){
					$(this).css({
						width: w,
						height: h
					});
				}
			);
		html='';
		Services._slide('#fotos');
	},
	
	_parseGalerias: function(data){	
		var html           = '',
			target         = $('#galerias'),
			list           = target.find('ul'),
			titulo_galeria = $('#titulo_galeria'),
			legenda        = $('#legenda_foto');

		for(var i=0; i<data.length; i++){
			if(data[i].id!=''){
				html   += '<li>'
						  +'<a href="' + data[i].id + '" title="' + data[i].date + '|' + data[i].title +'">'
						  +'<img src="' + data[i].photo + '" alt="" width="100" />'
						  +'</a>'
						  +'</li>';
			};
			
			if(i==0){
				legenda.html('<strong>' + data[i].date + '</strong><br />' + data[i].title);
			};
		};

		list
			.html('')
			.append(html);

		var w = list.find('a').width(),
			h = list.find('a').height();

		list	
			.find('a')
			.click(function(){
				titulo_galeria.text( $(this).attr('title').split('|')[1] );
				
				var idGaleria = $(this).attr('href');
				if(idGaleria.indexOf('/') != -1) {
					idGaleria = idGaleria.substring( idGaleria.lastIndexOf('/')+1 );
				}
				
				Services._loadJson(
					FOTOS_URL.replace('${idGaleria}', idGaleria),
					Services._parseFotosFull
				);
				return false;
			})
			.hover(
				function(){
					$(this).css({
						width: (w+10)+'px',
						height: (h+10)+'px'
					});
					legenda.html('<strong>' + $(this).attr('title').split('|')[0] + '</strong><br />' + $(this).attr('title').split('|')[1]);
				},
				function(){
					$(this).css({
						width: w,
						height: h
					});
				}
			);
			
		if(FIRST_GALLERY_ID==undefined){
			list.find('a:eq(0)').click();
		};
		
		if(FIRST_GALLERY_TITLE!=undefined){
			$('#titulo_galeria').text(FIRST_GALLERY_TITLE);
		};
		
		Services._slide('#galerias');
	},
	
	_parseFotosFull: function(data){
		var html   = '',
			target = $('#fotos'),
			list   = target.find('ul');

		for(var i=0; data!=null && i<data.length; i++){
			html   += '<li>'
					 +'<a href="/modal-foto.aspx?img=' + escape(data[i].photo2) + '&titulo=' + encodeURIComponent(data[i].title) + '" title="' + data[i].title +'">'
					 +'<img src="' + data[i].photo2 + '" alt="" width="215" />'
					 +'</a>'
					 +'</li>';
		};

		list
			.html('')
			.append(html);

		var w = list.find('a').width(),
			h = list.find('a').height();

		list
			.find('a')
			.each(function(i){
				$(this)
					.click(function(){
						modal(
							{url: $(this).attr('href')},
							function(){
								Services._navModal('F', i );
							}
						);
						return false;
					})
					.hover(
						function(){
							$(this)
								.css({
									width: (w+30)+'px',
									height: (h+30)+'px'
								})
						},
						function(){
							$(this)
								.css({
									width: w,
									height: h
								})
						}
					);
			});

		html='';
		Services._slide('#fotos');
	},
	
	_navModal: function(type, index){	
		var galeria     = type=='F'?$('#fotos ul'):$('#videos ul'),
			arr         = [],
			prev        = $('a[rel="prev_nav_modal"]'),
			next        = $('a[rel="next_nav_modal"]'),
			placeholder = $('.placeholder_modal'),
			placeholder_content = type=='F'?$('.placeholder_modal img'):$('.placeholder_modal div'),
			h1          = $('.placeholder_modal').parent().find('h1'),
			status      = 0,
			x           = index;

		galeria.find('a').each(function(i){
			var content, title = $(this).attr('title');
			
			if(type=='F'){
				content = unescape($(this).attr('href').split('?')[1].split('&')[0].split('=')[1]);
			}else{
				content = unescape($(this.parentNode).find('input[name="embed"]').val());
			};
		
			arr.push([content, title]);
		});
		
		var arr_length = arr.length;

		next.height(placeholder_content.height());
		prev.height(placeholder_content.height());
		
		next
			.unbind('click')
			.click(function(){
				x++;
				if(x>=arr_length) x=0;
				
				if(type=='F'){
					placeholder_content.attr('src', arr[x][0]);
				}else{
					placeholder_content.html(arr[x][0].split('startPaused=true').join('startPaused=false'));
				};
					
				h1.text(arr[x][1]);
				return false;
			});

		prev
			.unbind('click')
			.click(function(){
				x--;
				if(x<0) x=arr_length-1;

				if(type=='F'){
					placeholder_content.attr('src', arr[x][0]);
				}else{
					placeholder_content.html(arr[x][0].split('startPaused=true').join('startPaused=false'));
				};

				h1.text(arr[x][1]);
				return false;
			});
	},

	_parseNoticias: function(data){	
		var html = '',
			list = $('#noticias_list');

		for(var i=0; i<data.length; i++){
			var img = (data.ext && data.ext!='') ? ('<img src="' + data.ext + '" alt="" width="155" height="115" />') : ('');

			html   += '<li class="' + (i%2==0 ? 'odd' : 'even') + ' clearfix">'
					  +'<a href="/noticias/descricao.aspx?id=' + data[i].id + '" title="veja mais">'
					  + img
					  +'<strong>' + (data[i].date!=null ? data[i].date : 'data') + '</strong><br />'
					  +data[i].title
					  +'</a>'
					  +'</li>';
		};

		list.html('').append(html);
		html='';
	},

	_parseDescNoticias: function(data){
		var img = (data.ext && data.ext!='') ? ('<img src="' + data.ext + '" alt="" width="400" class="left" />') : ('');

		$('.header_desc_noticia h3').html(data.title);
		$('.header_desc_noticia p').html(data.date);
		$('#txt_noticia').html(img + data.text);
	},

	_parsePaginacao: function(data){
		var html        = '',
			bt_prev     = '<li><a href="#" title="Anterior" class="rpl bt_prev_block">Anterior</a><li>',
			bt_next     = '<li><a href="#" title="Pr&oacute;xima" class="rpl bt_next_block">Pr&oacute;xima</a><li>',
			totalPages  = data.totalMedias <= data.pageSize ? 0 : data.totalMedias / data.pageSize,
			totalMedias = data.totalMedias,
			offset		= data.days.length == 0 ? 1 : 0;

		for(var i=offset; i<totalPages; i++){
			html += '<li><a href="#' + (i+1) + '" title="p&aacute;gina ' + (i+1-offset) + '">'+ (i+1-offset) +'</a></li>';
		};
		
		if(VIDEO_URL_CATEGORIA!=VIDEO_WEEK) {
			if(totalMedias == 0) {
				$('.txt_filtro_escolhido strong').append(' (nenhum v&iacute;deo encontrado)');
			} else {
				$('.txt_filtro_escolhido strong').append(' (' + totalMedias + ' v&iacute;deo' + (totalMedias>1?'s':'') + ')');
			}
		}
		
		if(offset > 0) {
			Services._loadJson(
				VIDEO_URL_CATEGORIA.replace('${pageIndex}', offset+1).replace('${pageSize}', PAGE_SIZE_VIDEOS_FULL).replace('${codCategoria}', VIDEO_ID_CATEGORIA),
				Services._parseVideosFull
			);
		} else {
			Services._parseVideosFull(data);
		}

		$('.paginacao').html('');
		
		if(totalPages==0) return false;

		$('.paginacao')
			.append(bt_prev + html + bt_next)
			.find('a')
			.not($('.bt_prev_block, .bt_next_block'))
			.click(
				function(){
					var index = $(this).attr('href').split('#')[1];

					Services._loadJson(
						VIDEO_URL_CATEGORIA.replace('${pageIndex}', index).replace('${pageSize}', PAGE_SIZE_VIDEOS_FULL).replace('${codCategoria}', VIDEO_ID_CATEGORIA),
						Services._parseVideosFull
					);

					$('.paginacao a').removeClass('selected');
					$(this).addClass('selected');
					return false;
				}
			)
			.eq(0)
			.addClass('selected');

		$('.bt_prev_block').click(function(){
			var index = parseInt($('.paginacao a.selected').attr('href').split('#')[1]);
			if(index==1) return false
			$('.paginacao a').not($('.bt_prev_block, .bt_next_block')).eq(index-2).click();
			return false;
		});
		
		$('.bt_next_block').click(function(){
			var index = parseInt($('.paginacao a.selected').attr('href').split('#')[1]);
			if(index==totalPages) return false
			$('.paginacao a').not($('.bt_prev_block, .bt_next_block')).eq(index).click();
			return false;
		});
	},

	_slide: function(target){
		var prev      = $(target+' a[rel="prev"]'),
			next      = $(target+' a[rel="next"]'),
			list      = $(target+' div ul'),
			list_li   = list.find('li'),
			list_li_l = list_li.length,
			list_li_w = list_li.width(),
			cont      = 1;
		
		list.css("left", "0");
		
		next.unbind('click').click(function(){
			if(cont==list_li_l) return false;
			list.animate({left: '-='+list_li_w+'px'}, 'fast');
			cont++;
			return false;
		});

		prev.unbind('click').click(function(){
			if(cont==1) return false;
			list.animate({left: '+='+list_li_w+'px'}, 'fast');
			cont--;
			return false;
		});
	},
	
	_forceWmodeOpaque: function(embed) {
		
		if(embed.indexOf("wmode") == -1) {
			var indexOpenObj = embed.indexOf("<object");
			var indexCloseObj = embed.indexOf(">", indexOpenObj);
			
			embed = embed.substring(0, indexCloseObj+1) + "<param name=\"wmode\" value=\"opaque\"/>" + embed.substring(indexCloseObj+1);
			
			var indexOpenEmbed = embed.indexOf("<embed");
			
			embed = embed.substring(0, indexOpenEmbed+6) + " wmode=\"opaque\"" + embed.substring(indexOpenEmbed+6);
		}
		
		return embed;
	}
};
