/*
 * O ajuste de resolucao deve ser executado pelo lado do usuario, portanto por meio de um .JS ou
 * via CSS
 *
 *TODO EXTERNALIZAR ARQUIVOS COM RESOLUÇÕES ESPECIFICAS
 */

	/**
	 * Para obter a resolução/browser/OS no cliente
	 */
	var resolucao = new Object;

	/// Detecta configurações do computador
	var agt=navigator.userAgent.toLowerCase();
	var is_ie = ( /msie/i.test(agt) && !/opera/i.test(agt) );
	var is_ie5 = ( is_ie && /msie 5\.0/i.test(agt) );
	var is_opera = /opera/i.test(agt);						/// opera
	var is_firefox = /firefox[\/\s](\d+\.\d+)/.test(agt)	/// firefox
	var is_khtml = /Konqueror|Safari|KHTML/i.test(agt);		/// detect KHTML-based browsers
	var is_win   = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
	var is_linux = (agt.indexOf("inux")!=-1);

	// Obtem a resolucao usada pelo usuario
	function getResolucao()
	{
		if( typeof(window.innerWidth) =='number' ) {	// N�o IE
			resolucao.x = window.innerWidth;
			resolucao.y = window.innerHeight;
		} else if(document.documentElement &&
			( document.documentElement.clientWidth || document.documentElement.clientHeight )) {
		// IE 6+ in 'standards compliant mode'
			resolucao.x = document.documentElement.clientWidth;
			resolucao.y = document.documentElement.clientHeight;
		} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		// IE 4
			resolucao.x = document.body.clientWidth;
			resolucao.y = document.body.clientHeight;
		} else {
		// caso padr�o
			resolucao.x = 1024;
			resolucao.y = 768;
		}
	}

	/**
	 * Ajusta a tela de acordo com a resolução adotada
	 */
	function ajustaTela()
	{
		getResolucao();
		ajustaBaloes(BALAO_TOP, BALAO_LARGURA_MIN);
		
		// Redimensiona os textos
							// ------------------- /web/administrarVideosEventos.jsp
		ADMVIDEV_TITULO_TAM				= calculaLargura(ADMVIDEV_TITULO_TAM); 
		ADMVIDEV_NOME_TAM				= calculaLargura(ADMVIDEV_NOME_TAM);
				// ------------------- /web/eventos.jsp
		EVENTOS_TITULO_TAM				= calculaLargura2(EVENTOS_TITULO_TAM);
		EVENTOS_DESCRICAO_TAM			= calculaLargura2(EVENTOS_DESCRICAO_TAM);
				// ------------------- /web/grupos.jsp
		GRUPOS_TEXTO_TAM				= calculaLargura(GRUPOS_TEXTO_TAM);
				// ------------------- /web/gruposProjetos.jsp
		GRUPOSPROJETOS_GRUPO_TAM		= calculaLargura(GRUPOSPROJETOS_GRUPO_TAM);
		GRUPOSPROJETOS_PROJETO_TAM		= calculaLargura(GRUPOSPROJETOS_PROJETO_TAM);
				//-------------------- /web/grupo.jsp
//		GRUPO_TITULO_TAM				= calculaLargura(GRUPO_TITULO_TAM);			// AINDA NAO USADO AQUI
		GRUPO_CABECALHO_TAM				= calculaLargura(GRUPO_CABECALHO_TAM);
		GRUPO_NOME_TAM					= calculaLargura(GRUPO_NOME_TAM);
		// GRUPO_LINKS_TAM					= calculaLargura(GRUPO_LINKS_TAM);
		GRUPO_COMUNIDADES_TAM			= calculaLargura(GRUPO_COMUNIDADES_TAM);
		GRUPO_VIDEO_TAM					= calculaLargura(GRUPO_VIDEO_TAM);
		GRUPO_TRANSMISSOES_TAM			= calculaLargura(GRUPO_TRANSMISSOES_TAM);
		GRUPO_TRANSMISSOES_TITULO_TAM	= calculaLargura(GRUPO_TRANSMISSOES_TITULO_TAM);
		GRUPO_TRANSMISSOES_NOME_TAM		= calculaLargura(GRUPO_TRANSMISSOES_NOME_TAM);
		GRUPO_CAIXA_TEXTO_X				= calculaLargura(GRUPO_CAIXA_TEXTO_X);	// (1280x1024=420px)
		GRUPO_CAIXA_TEXTO_Y				= calculaAltura(GRUPO_CAIXA_TEXTO_Y);
				// ------------------- /web/???/infosVideo.jsp
		VISUALIZARVIDEO_TITULO_TAM		= calculaLargura(VISUALIZARVIDEO_TITULO_TAM);	// 
				// ------------------- /web/projetos.jsp
		PROJETOS_TEXTO_TAM				= calculaLargura(PROJETOS_TEXTO_TAM);
				// ------------------- /web/projeto.jsp
//		PROJETO_TITULO_TAM				= calculaLargura(PROJETO_TITULO_TAM);		// AINDA NAO USADO AQUI
		PROJETO_CABECALHO_TAM			= calculaLargura(PROJETO_CABECALHO_TAM);
		PROJETO_NOME_TAM				= calculaLargura(PROJETO_NOME_TAM);
		// PROJETO_LINKS_TAM				= calculaLargura(PROJETO_LINKS_TAM);
		PROJETO_GRUPOS_TAM				= calculaLargura(PROJETO_GRUPOS_TAM);
		PROJETO_VIDEO_TAM				= calculaLargura(PROJETO_VIDEO_TAM);
		PROJETO_TRANSMISSOES_TAM		= calculaLargura(PROJETO_TRANSMISSOES_TAM);
		PROJETO_TRANSMISSOES_TITULO_TAM = calculaLargura(PROJETO_TRANSMISSOES_TITULO_TAM);
		PROJETO_TRANSMISSOES_NOME_TAM	= calculaLargura(PROJETO_TRANSMISSOES_NOME_TAM);
		PROJETO_CAIXA_TEXTO_X			= calculaLargura(PROJETO_CAIXA_TEXTO_X);
		PROJETO_CAIXA_TEXTO_Y			= calculaAltura(PROJETO_CAIXA_TEXTO_Y);
				// ------------------- /web/visualizarEvento.jsp
		VISUALIZAREVENTO_TITULO_TAM		= calculaLargura(VISUALIZAREVENTO_TITULO_TAM);
		VISUALIZAREVENTO_RESUMO_TAM		= calculaLargura(VISUALIZAREVENTO_RESUMO_TAM);
		VISUALIZAREVENTO_AUTOR_TAM		= calculaLargura(VISUALIZAREVENTO_AUTOR_TAM);
		VISUALIZAREVENTO_URL_TAM		= calculaLargura(VISUALIZAREVENTO_URL_TAM);
		VISUALIZAREVENTO_EMBED_TAM		= calculaLargura(VISUALIZAREVENTO_EMBED_TAM);
	}
	
	// Calcula a largura do texto com base na resolucao (empírico)
	function calculaLargura(larguraInicial)
	{
		if (resolucao.x < 900) {
			if(is_linux) {
				x = parseInt( 1.3*larguraInicial * (1 - (resolucao.x/resolucao.y)*(1024-resolucao.x)/1024 ) );
			} else if(is_win && is_firefox) {
				x = parseInt( 1.06* larguraInicial * (1 - (resolucao.x/resolucao.y)*(1024-resolucao.x)/1024 ) );
			} else {
				x = parseInt( 1.2* larguraInicial * (1 - (resolucao.x/resolucao.y)*(1024-resolucao.x)/1024 ) );
			}
		} else if (resolucao.x >= 1100) {
			x = parseInt( larguraInicial * (1 + (resolucao.x/resolucao.y)*(resolucao.x-1024)/1024 ) );	
		} else {	// 1024x768 - default
			x = larguraInicial;
		}

		return x;
	}

	// Formula alternativa para calculo da largura do texto
	// (PS: ambas totalmente empiricas)
	function calculaLargura2(larguraInicial)
	{
		var x;
		if(resolucao.x > 1024) {
			x = parseInt( 0.8 * larguraInicial * (1 + (resolucao.x/resolucao.y)*(resolucao.x-1024)/1024 ) );	
		} else if(resolucao.x < 1024) {
			x = parseInt( larguraInicial * (1 - 0.4*(resolucao.x/resolucao.y)*(1024-resolucao.x)/1024 ) );
		}
		return x;
	}

	// Calcula a altura do texto com base na resolucao
	function calculaAltura(alturaInicial)
	{
		var y;
		if(resolucao.y > 768) {
			y = parseInt( 2*alturaInicial * ( (resolucao.y/resolucao.x)*(resolucao.y-768)/768 + 1) );	
		} else {
			y = parseInt( 2*alturaInicial * (1 - (resolucao.y/resolucao.x)*(768 - resolucao.y)/768) );
		}
		return y;
	}

	/**
	 * Ajusta todas as posições necessárias dos balões.
	 * É chamado pelo balloon.js (modificado) com as posições originais calculadas
	 * antes de desenhar o balão na tela
	 * 
	 * RETORNA:
	 * retorno[0] - largura do balão (pixels)
	 * retorno[1] - tamanho máximo do texto (caracteres)
	 */
	function ajustaBaloes(texto) {
		var TAM_TEXTO_MAX, WIDTH;
		var retorno		= new Array(2);
		var TAM_TEXTO	= texto.lenght;
		var Y			= resolucao.y;
		var X			= resolucao.x;
		var rate		= Y / X;
		
		WIDTH = 200;
		
		/**
		 * caixa de texto em baixo do video
		 */
		if(rate > 0.63) {
			// defaults (1152x864)
			WIDTH = 570;
			TAM_TEXTO_MAX = 500;
			
			BALAO_TOP				= resolucao.y/2+30;
			BALAO_LARGURA_MIN		= 400;
			BALAO_LARGURA_MAX		= 401;
			
			if(X>1200 && Y>850) {			//1280x1024 (encontrado como 1280x894)
				BALAO_TOP = resolucao.y/2-30;
				WIDTH = WIDTH*1.2;
				TAM_TEXTO_MAX = TAM_TEXTO_MAX*2.8;
			} else if(X>1200 && Y>800) {	//1280x960 (encontrado como 1280x830)
				BALAO_TOP = resolucao.y/2;
				WIDTH = WIDTH*1.2;
				TAM_TEXTO_MAX = TAM_TEXTO_MAX*1.5;
			}

			if(TAM_TEXTO < TAM_TEXTO_MAX) {
				WIDTH = WIDTH*0.6;
			}

			BALAO_RIGHT				= resolucao.x/2-WIDTH/2+20;
		}
		
		/**
		 * caixa de texto do lado do video
		 */
		if(rate < 0.63) {
			// default 1024x768
			WIDTH = 280;
			TAM_TEXTO_MAX = 800;
			
			if(X > 1200) {			//1280x768
				WIDTH = WIDTH*1.4;
				TAM_TEXTO_MAX = TAM_TEXTO_MAX*1.3;
			}
		}
		
		/**
		 * Elimina caracteres inválidos e corta palavras grandes
		 */
		
		retorno[0] = WIDTH;
		retorno[1] = TAM_TEXTO_MAX;
		return retorno;
	}

	// --------------------------------------------------------------- 1024x768
	BALAO_LARGURA_MIN				= 280;	// largura (minima) do balão
	BALAO_LARGURA_MAX				= 281;	// largura (maxima) do balão
	BALAO_RIGHT						= 30;	// posição X do balão na tela
	BALAO_TOP						= 95;	// posição Y do balão na tela
							// ------------------- /web/administrarVideosEventos.jsp
	ADMVIDEV_TITULO_TAM				= 40;	// 
	ADMVIDEV_NOME_TAM				= 40;	// 

							// ------------------- /web/eventos.jsp
	EVENTOS_TITULO_TAM				= 38;	// 38
	EVENTOS_DESCRICAO_TAM			= 48;	// 48

							// ------------------- /web/grupos.jsp
	GRUPOS_TEXTO_TAM				= 60;	//

							// ------------------- /web/gruposProjetos.jsp
	GRUPOSPROJETOS_GRUPO_TAM		= 35;	// 
	GRUPOSPROJETOS_PROJETO_TAM		= 35;	// 

							// ------------------- /web/grupo.jsp
//	GRUPO_TITULO_TAM				= 40;	// titulo da pagina
	GRUPO_CABECALHO_TAM				= 60;	// cabecalho no projeto (USP > IPTV-USP > Comunidades > CABE�ALHO)
	GRUPO_NOME_TAM					= 35;	// campo 'nome' no projeto 1024:40 1280:55
	GRUPO_LINKS_TAM					= 27;	// campo 'link' no projeto
	GRUPO_COMUNIDADES_TAM			= 40;	// "Comunidades compostas pelo grupo" - nomes
	GRUPO_VIDEO_TAM					= 45;	// Itens relacionados com os videos
	GRUPO_TRANSMISSOES_TAM			= 45;	// Itens relacionados com a transmissao ("Requisicoes para publica��o de transmiss�es", etc) 
	GRUPO_TRANSMISSOES_TITULO_TAM	= 35;	// campo 'titulo' nas 'Transmissoes'
	GRUPO_TRANSMISSOES_NOME_TAM		= 40;	// campo 'nome' nas 'Transmissoes'
  if(is_win) {
	GRUPO_CAIXA_TEXTO_X				= 48;	// dimensoes da caixa de texto ('Descricao')
	if(is_firefox) {
		GRUPO_CAIXA_TEXTO_X			= 43;	// dimensoes da caixa de texto ('Descricao')
	}
  } else {
	GRUPO_CAIXA_TEXTO_X				= 32;	// dimensoes da caixa de texto ('Descricao')
  }
	GRUPO_CAIXA_TEXTO_Y				= 04;	// dimensoes da caixa de texto ('Descricao')

												// ------------------- /web/???/infosVideo.jsp
	VISUALIZARVIDEO_TITULO_TAM		= 50;	// 

							// ------------------- /web/projetos.jsp
	PROJETOS_TEXTO_TAM				= 60;	//

							// ------------------- /web/projeto.jsp
//	PROJETO_TITULO_TAM				= 40;	// titulo da pagina
	PROJETO_CABECALHO_TAM			= 60;	// cabecalho no projeto (USP > IPTV-USP > Comunidades > CABE�ALHO)
	PROJETO_NOME_TAM				= 35;	// campo 'nome' no projeto
	PROJETO_LINKS_TAM				= 27;	// campo 'link' no projeto
	PROJETO_GRUPOS_TAM				= 50;	// "Grupos que compoem a comunidade" - nomes
	PROJETO_VIDEO_TAM				= 45;	// Itens relacionados com os videos
	PROJETO_TRANSMISSOES_TAM		= 45;	// Itens relacionados com a transmissao
	PROJETO_TRANSMISSOES_TITULO_TAM = 35;	// campo 'titulo' nas 'Transmissoes'
	PROJETO_TRANSMISSOES_NOME_TAM	= 40;	// campo 'nome' nas 'Transmissoes'
  if(is_win) {
	PROJETO_CAIXA_TEXTO_X			= 48;	// dimensoes da caixa de texto ('Descricao')
    if(is_firefox) {
    	PROJETO_CAIXA_TEXTO_X		= 43;	// dimensoes da caixa de texto ('Descricao')
	}
  } else {
	PROJETO_CAIXA_TEXTO_X			= 32;	// dimensoes da caixa de texto ('Descricao')
  }
	PROJETO_CAIXA_TEXTO_Y			= 04;	// dimensoes da caixa de texto ('Descricao')

							// ------------------- /web/visualizarEvento.jsp
	VISUALIZAREVENTO_TITULO_TAM		= 45;	// 
	VISUALIZAREVENTO_RESUMO_TAM		= 45;	// 
	VISUALIZAREVENTO_AUTOR_TAM		= 45;	// 
	VISUALIZAREVENTO_URL_TAM		= 30;	// Caixa de texto 'url'
	VISUALIZAREVENTO_EMBED_TAM		= 30;	// Caixa de texto 'embed'
