// fold < creditos & copyright >
/* +++++++ CREDITOS & COPYRIGHT +++++++ 

   Funções de Javascript com várias ferramentas (Tools) para o interface dos sites
   É instanciada pela classe _coreTmpl e usa classes/métodos da superClasse Prototype.js
   
   Criadas por alvaro Saraiva @ glups.pt @ fevereiro 2007
   
   Glups - Atelier de Novas Tecnologias, Lda
   Rua Jaime Campos, Bloco D, Piso 3 Esq., 5000-431 Vila Real | Portugal
   Tel. [351] 259 322 183 | E-mail: info@glups.pt | URL: www.glups.pt

   Se utilizarem estas funções para os vossos trabalhos,
   a Glups agradece que ao menos no retirem estas linhas de cdigo,
   por respeito e agradecimento ao trabalho das pessoas que a criaram
   e ao trabalho que vocs pouparam. Keep Cool. Peace ;)

*/
// endfold

/*	+++++++++++++++++++++++++++++++++++++++++++++++
			DECLARAÇÃO DE VARIÁVEIS GERAIS 
	+++++++++++++++++++++++++++++++++++++++++++++++ */

// criamos a classe
var coreTools = Class.create();

/*
*	@desc			Método 'prototype' da classe coreTools que define quais os métodos que torna público e disponíveis 
*					a quem instanciar esta classe
*	@retutn void
*/
coreTools.prototype = {
	
	/*
	*	@desc			Método constructor 'prototype' da classe coreTools
	*	@param string	nomeCanal: nome do canal onde estamos a executar a classe
	*	@param string	idioma: código do idioma do user, qd se inicializa a clase
	*	@retutn void
	*/
	initialize: function(){ 
		// toDo se for preciso
	},
	
	/*	+++++++++++++++++++++++++++++++++++++++++++++++
			SETTERS E GETTERS DE CONFIGS DA CLASSE 
		+++++++++++++++++++++++++++++++++++++++++++++++*/
	
	/*	+++++++++++++++++++++++++++++++++++++++++++++++
			MÉTODOS PÚBLICO PARA ALTERAR INTERFACE 
		+++++++++++++++++++++++++++++++++++++++++++++++*/
		
	/*
	*	@desc			Método que devolve o ano actual
	*	@return	String	Ano no formato aaaa
	*/
	getAnoActual: function(){
		var tempo	= new Date();
		var ano		= tempo.getFullYear();
		return ano;
	},
	
	/*
	*	@desc			Método que devolve a data actual 
	*	@return	String	Ano no formato aaaa
	*/
	getDataActual: function(){
		var tempo		= new Date();
		// array com os meses e dias da semana em vários idiomas
		var diasSemana	= {	'pt' : ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'],
							'en' : ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],
							'es' : ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'],
							'fr' : ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
							'de' : ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag']
						  };
		var meses		= {	'pt' : ['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
							'en' : ['January','February','March','April','May','Juin','July','August','September','October','November','December'],
							'es' : ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],
							'fr' : ['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
							'de' : ['Januar','Februar','März','April','Mag','Juin','Juli','August','September','Oktober','November','Dezember']
						  };
						  
		switch(tmpl.getIdioma()){
			case 'en':
				var dia = tempo.getDate();
				var sufix = '';
				switch(dia % 10)
				{
					case 1:
						if(dia != 11)
							sufix = '<sup>st</sup>';
						else
							sufix = '<sup>th</sup>';
						break;
					case 2:
						if(dia != 12)
							sufix = '<sup>nd</sup>';
						else
							sufix = '<sup>th</sup>';
						break;
					case 3:
						if(dia != 13)
							sufix = '<sup>rd</sup>';
						else
							sufix = '<sup>th</sup>';
						break;
					default:
						sufix = '<sup>th</sup>'
				}
				var dataActual	= diasSemana[tmpl.getIdioma()][tempo.getDay()]+', ' + meses[tmpl.getIdioma()][tempo.getMonth()] + ' ' + tempo.getDate() + sufix + ', ' + tempo.getFullYear();
			break;
			
			case 'pt':
				var dataActual	= diasSemana[tmpl.getIdioma()][tempo.getDay()]+', ' + tempo.getDate()+ ' de ' + meses[tmpl.getIdioma()][tempo.getMonth()] + ' de ' + tempo.getFullYear();
			break;
			
			case 'fr':
				var dataActual	= diasSemana[tmpl.getIdioma()][tempo.getDay()]+', ' + tempo.getDate()+ ' ' + meses[tmpl.getIdioma()][tempo.getMonth()] + ' ' + tempo.getFullYear();
			break;
			
			case 'es':
				var dataActual	= diasSemana[tmpl.getIdioma()][tempo.getDay()]+', ' + tempo.getDate()+ ' de ' + meses[tmpl.getIdioma()][tempo.getMonth()] + ' de ' + tempo.getFullYear();
			break;
			
			case 'de':
				var dataActual	= diasSemana[tmpl.getIdioma()][tempo.getDay()]+', ' + tempo.getDate()+ ' ' + meses[tmpl.getIdioma()][tempo.getMonth()] + ' ' + tempo.getFullYear();
			break;
			
			default:
				var dataActual	= diasSemana[tmpl.getIdioma()][tempo.getDay()]+', ' + tempo.getDate()+ ' of ' + meses[tmpl.getIdioma()][tempo.getMonth()] + ' ' + tempo.getFullYear();
			break;
			
		}
		return dataActual;
	},

	/*
	*	@desc			Método para dar foco a um campo no template de HTML
	*	@param String	nomeObj: nome do elemento de HTML para dar focus
	*	@retun void		Não devolve nada
	*/
	setFocusCampo: function(nomeObj){
		$(nomeObj).focus();
	},
	
	/*
	*	@desc			Método para adicionar o site aos favoritos
						Funciona com IE, Firefox, Opera 
	*	@return void
	*/
	addFavoritos: function(){
		// apanhamos as variáveis definidas no _init_JS_crc.js
		var URLSite 	= urlBaseSite;
		var tituloSite 	= nomeSite;
		if(window.sidebar){
			window.sidebar.addPanel(tituloSite, URLSite,"");
		}
		else if( window.opera && window.print ){
			var mbm = document.createElement('a');
			mbm.setAttribute('rel','sidebar');
			mbm.setAttribute('href',URLSite);
			mbm.setAttribute('title',tituloSite);
			mbm.click();
		}
		else if(document.all){
			window.external.AddFavorite(URLSite, tituloSite);
		}
	},
	
	/*
	*	@desc			Método para desenhar os links para definir homepage. Só funciona em IE
	*	@return string	devolve o codigo com o btn em texto com link de chamada ao javascript
	*/
	setHomepage: function(){
		var browser = navigator.appName.indexOf('Microsoft');
		return (browser != -1) ? '&nbsp;|&nbsp;<a href="#" style="cursor:hand" onclick="this.style.behavior=\'url(#default#homepage)\'; this.setHomePage(\''+urlBaseSite+'\');">Definir <b>euromilhoes.com</b> como Homepage</a>' : '';
	},
	
	/*
	*	@desc			Método para abrir pop-ups
	*	@param string	URL: Endereço para abrir na janelas
	*	@param string	nomeJanela: Nome para dar à Janela de HTML
	*	@param object	propriedades: Objecto com várias propriedades para definir o pop-up
		@retun void
	*/
	abrirJanela: function(URL,nomeJanela,propriedades) { 
		window.open(URL,nomeJanela,propriedades);
	},
	
	/*
	*	@desc			Método para limpar um campo de texto qd tem um texto por defeito
	*	@param mixed	obj: Tanto pode ser refª ao obj, como o id do elemento
	*	@param string	txt: Taexto para verificar se é igual. Se for, limpa o campo
	*	@retun void
	*/
	_limpaCampo: function(obj,txt){
		$(obj).value = ($(obj).value==txt) ? '' : $(obj).value; 
	},
	
	/*
	*	@desc			Método para o texto de um campo para o outro
	*	@param string	campoDestino: campo de origem do texto
	*	@param string	campoOrigem: campo para clonar o texto
	*	@retun void
	*/
	copiaValorCampo: function(campoOrigem, campoDestino){
		if($(campoOrigem).value!=null && $(campoDestino)!=null){
			$(campoDestino).value = $F(campoOrigem);
		}
	},
	
	
	/*	+++++++++++++++++++++++++++++++++++++++++++++++
				MÉTODOS PÚBLICOS PARA FORMS 
		+++++++++++++++++++++++++++++++++++++++++++++++*/
	
	formCombo_add: function(comboObj,txtLabel,valorOpcao){
		if($(comboObj)!=null){
			
			var  nova_opcao = document.createElement("option");
			nova_opcao.appendChild(document.createTextNode(txtLabel));
			// so colocamos valor na combo se trouxer o parametro do valor
			if(arguments.length==3){	
				nova_opcao.setAttribute("value",valorOpcao);
			}
			$(comboObj).appendChild(nova_opcao);
		}
	},
	
	formCombo_remove: function(comboObj,indexOpcaoRemover){
		if($(comboObj)!=null){
			$(comboObj).options[indexOpcaoRemover] = null;
		}
	},
	
	formCombo_limpa: function(comboObj){
		if($(comboObj)!=null){
			for(var i=$(comboObj).options.length-1; i>=0; i--){
				tmpl.tools.formCombo_remove(comboObj,i);
			}
		}
	},
	
	formCombo_selectFirstOption: function(comboObj){
		if($(comboObj)!=null){
			optionActiva = false;
			for(var i=$(comboObj).options.length-1; i>=0 && !optionActiva; i--){
				if($(comboObj).options[i].selected){
					$(comboObj).options[i].selected = false;
					optionActiva = true;
				}
			}
			$(comboObj).options[0].selected = true;
		}
	}
}
