/* +++++++ CREDITOS & COPYRIGHT +++++++ 

   Funções de Javascript para controlar o Front-End do site da Docinho [www.docinho.pt]
   Criadas e adaptadas por alvaro Saraiva @ glups.pt @ julho 2006
   
   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 ;)

*/
//+++++++++++++++++++++++++++++++++++++++++++++++
//+++++++ DECLARAÇÃO DE VARIÁVEIS GERAIS ++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++

// host do site
var urlBaseSite			= 'http://' + document.location.host;
var nomeSite				= 'Ervas Finas';

//Controlo das classes de css dos campos dos Formulários
var cssFormInputErro='inputErro'; //Controla a class de CSS que é aplicada ao um campo do formulario qd dá erro no preenchimento
var cssFormInputFocus='inputOver'; //Controla a class de CSS que é aplicada ao um campo do formulario qd recebe focus no preenchimento
var cssFormInput='inputOut'; //Controla a class de CSS que é aplicada normalmente um campo do formulario

//Formatos de ficheiros permitidos nos inputs dos formulários
var formatosImagem=new Array('jpg','gif','png');
var formatosAnexos=new Array('doc','xls','pdf','pps','zip','rar');
var formatosSom=new Array('mp3');

//+++++++ NÃO MEXER DAKI PARA BAIXO ++++++++

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++ FUNÇÕES PARA CONTROLAR A APRESENTAÇÃO DAS PÁGINAS, NAVEGAÇÃO, ETC ++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//Função para saber o ano actual e apresentar no rodapé
function anoActual(){
	var tempo = new Date();
	var ano=tempo.getFullYear();
	return ano;
}

// função para um campo ganhar focus numa paágina
function ganharFocus(obj){
	document.getElementById(obj).focus();
}

// funcao para fazer o login dos utilizadores no menu do lado Dto
function loginUtilizadores(){
	if (verificarCampos('alert','inputUtilizador','R','Utilizador','inputSenha','R','Senha')){
		document.loginUtilizador.submit();
	}
	return false;
} 

// função para adicionar o site aos favoritos
function adFavoritos(){
	var URLSite = urlBaseSite;
	var tituloSite = nomeSite;
	if (document.all) {
		window.external.AddFavorite(URLSite,tituloSite);
	}
}

//Função para abrir as janelas
function abrirJanela(URL,nomeJanela,propriedades) { 
	window.open(URL,nomeJanela,propriedades);
}

/**
 /* @desc			Função que serve de handler para fechar todos os divs duma página, qd ela arranca, e usa o mostraDiv pra tratar do assunto
 /* @param Array	objArray: array com os id's dos objectos para fechar ;)
 /* @return Void
*/
function fechaDivs(objArray,btnImg){
	for(var i=0; i < objArray.length; i++){
		var obj = document.getElementById(objArray[i]);
		if(obj != undefined){
			obj.estado = true;
			slideDiv(obj.id,btnImg)
		}
	}
}

/**
 /* @desc			Função que serve de handler todas as funções que queiram alterar a visibilidade de divs com slides
 /* @param string	objNome: nome do objecto para 'slidar' ;)
 /* @param string	objNome: nome do da imagem para alterar ;)
 /* @return Void
*/
function slideDiv(objNome,btnImg){
	//alert(arguments.length);
	var obj = document.getElementById(objNome);
	var btn = document.getElementById(btnImg);
	//var caminhoImgs = (btn != undefined) ? btn.src.substring(0,btn.src.lastIndexOf('/')+1) : null ;
	obj.aberto = (obj.aberto == undefined || obj.aberto == true) ? true : false ;
	if(!obj.aberto){		
		Effect.SlideDown(obj, {duration:.50});
		if(btn != undefined){
			//alert(btn.src + '\n' + caminhoImgs);
			switch(btn.id){
				case 'btn_msg_editor':
					btn.src = caminhoImgs + 'tmpl_admin_fundotd_erro_btn_fechar.gif';
				break;
				case 'btn_msg_privada':
					btn.src = caminhoImgs + 'tmpl_admin_fundotd_erro_btn_fechar.gif';
				break;
				case 'txt_evento_1':
					btn.innerHTML = '[-]';
				break;
				case 'txt_evento_2':
					btn.innerHTML = '[-]';
				break;
				case 'txt_evento_3':
					btn.innerHTML = '[-]';
				break;
				default:
				
				break;
			}
		}	
	}
	else{						
		Effect.SlideUp(obj,{duration:.48});			
		if(btn != undefined){
			switch(btn.id){
				case 'btn_msg_editor':
					btn.src = caminhoImgs + 'tmpl_admin_fundotd_erro_btn_abrir.gif';
				break;
				case 'btn_msg_privada':
					btn.src = caminhoImgs + 'tmpl_admin_fundotd_erro_btn_abrir.gif';
				break;
				case 'txt_evento_1':
					btn.innerHTML = '[+]';
				break;
				case 'txt_evento_2':
					btn.innerHTML = '[+]';
				break;
				case 'txt_evento_3':
					btn.innerHTML = '[+]';
				break;
				default:
				
				break;
			}
		}
	}
	obj.aberto = !obj.aberto;
}

/**
 * @description		função mostrar ou esconder a opção de mostrar os divs dos grupos e famílias
 							Altera tb a classe de CSS do TR
 * @params String		ID do TR para controlar
 * @params String		Nome do div para mostrar ou esconder
 * @return Void		Não devolve nada... muda as visibilidades de div's	
 * @access public
*/
function expandirOpcao(objTr,objDiv){
	var div = document.getElementById(objDiv);
	var tr = document.getElementById(objTr);
	var nomeTr = tr.id.substring(tr.id.indexOf('_')+1,tr.id.length);
	//alert(tr.id + '- ' +tr.className);
	if(div.className=='opcaoInvisivel'){
		div.className='opcaoVisivel';
		tr.className= (tr.className=='listagemGrupoMenos')?'listagemGrupoMenos':'listagemGrupoMenosOn';
		tr.title = 'Ocultar famílias do grupo "'+nomeTr+'"';		
	}
	else{
		div.className='opcaoInvisivel';
		tr.className= (tr.className=='listagemGrupoMais')?'listagemGrupoMais':'listagemGrupoMaisOn';
		tr.title = 'Ver famílias do grupo "'+nomeTr+'"';
	}
}
/**
 * @description		função mudar a classe de CSS e o atributo 'title' dos TR's dos grupos de produtos
 							É activado nos eventos onMouseOver e onMouseOut nos TR's
 * @params String		ID do TR para controlar
 * @params String		Nome do TR para controlar
 * @return Void		Não devolve nada... change things ;) // fr3sh@glups was here	
 * @access public
*/
function controlaOverTr(objTr,nomeTr){
	var tr = document.getElementById(objTr);

	//alert(tr.className);
	switch(tr.className){
		case 'listagemGrupoMenos':
			tr.className='listagemGrupoMenosOn';
			tr.title='Ocultar famílias do grupo "'+nomeTr+'"';
		break;
		case 'listagemGrupoMenosOn':
			tr.className='listagemGrupoMenos';
			tr.title='Ocultar famílias do grupo "'+nomeTr+'"';
		break;
		case 'listagemGrupoMais':
			tr.className='listagemGrupoMaisOn';
			tr.title='Ver famílias do grupo "'+nomeTr+'"';
		break;
		case 'listagemGrupoMaisOn':
			tr.className='listagemGrupoMais';
			tr.title='Ver famílias do grupo "'+nomeTr+'"';
		break;
	}
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++ FUNÇÕES PARA VERIFICAR A ENTRADA DE INFORMAÇÃO (TEXTOS, IMAGENS E ANEXOS NO BACK-OFFICE ++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++ OUTRAS FUNCOES +++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

/*	Conjunto de funcoes criadas pela equipa da Adobe para contornar o problema do IE 
	Copyright 2006 Adobe Systems, Inc. All rights reserved.		// v1.0
*/
function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '<object ';
  for (var i in objAttrs)
    str += i + '="' + objAttrs[i] + '" ';
  str += '>';
  for (var i in params)
    str += '<param name="' + i + '" value="' + params[i] + '" /> ';
  str += '<embed ';
  for (var i in embedAttrs)
    str += i + '="' + embedAttrs[i] + '" ';
  str += ' ></embed></object>';
	
  document.write(str);
  //alert(str);
}

// alterei o nome desta função para uma coisa mais pt ;)
function activaFlash(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "id":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}
// End da cena do flash by Adobe (r)
