//debug var_dump / dump
function var_dump(obj) { if(typeof obj == "object") { return "Type: "+typeof(obj)+((obj.constructor) ? "\nConstructor: "+obj.constructor : "")+"\nValue: " + obj; } else { return "Type: "+typeof(obj)+"\nValue: "+obj; } }
function dump(arr,level) { var dumped_text = ""; if(!level) level = 0; var level_padding = ""; for(var j=0;j<level+1;j++) level_padding += "    "; if(typeof(arr) == 'object') { for(var item in arr) { var value = arr[item]; if(typeof(value) == 'object') { dumped_text += level_padding + "'" + item + "' ...\n"; dumped_text += dump(value,level+1); } else { dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n"; } } } else { dumped_text = "===>"+arr+"<===("+typeof(arr)+")"; } return dumped_text; } 
//----

// global vars
var base = 'http://'+location.host; // var base = "http://www.sfm.pt"; // fica location.host por causa do avaliar.sfm.pt
var basesearch = "http://www.sfm.pt/resources/sphider/search.php";
var loginurl = base+'/resources/Login'; //var loginurl = "http://www.sfm.pt/Login";
var online = true;
if (!online) {
	base = "http://shine/site";
	basesearch = "http://shine/sphider/search.php";
	loginurl = "http://shine/site/resources/Login";
}

/*if (document.getElementsByTagName) {
	var elems = document.getElementsByTagName('base');
	if (elems.length>0) {
		host = elems[0].href;
	} else {
		host = "http://"+location.hostname;
	}
} else {
	host = "http://"+location.hostname;
}
if (host != "undefined") {
	base = host;
	loginurl = host+"/Login";
}*/

// dialogs
var okDialogs=0;
function okDialog(title,text,w,func) {
	if (!w) w=200;
	okDialogs++;
	new DialogBox("okDialog"+okDialogs,"fullscreen",title,"<div style='text-align:center'>"+text+"</div>","ok",func,true,w,false).show();
}
var errDialogs=0;
function errDialog(title,text,w) {
	if (!w) w=200;
	errDialogs++;
	new DialogBox("errDialogs"+errDialogs,"fullscreen",title,"<div style='text-align:center'>"+text+"</div>","ok",false,true,w,false,'errorDialog').show();
}

function login_validation(ajaxCall) {
	var u=$('logU'),p=$('logP');
	if (empty(u.value)) {
		alert('Preencha o E-mail');
		u.focus();
		return false;
	}
	if (empty(p.value)) {
		alert('Preencha a password');
		p.focus();
		return false;
	}
	if (ajaxCall) {
		validateLoginInfo(u.value,p.value);
		return false;
	}
	return true;
}

function loginWindow(act) {
	if (!act) act = "default";
	var loginBox = DIALOGS.get("loginWindow");
	if (loginBox === false) {
		loginBox = new DialogBox("loginWindow","fullscreen","Login","Processando...",false,false,true,220,false);
	} else {
		loginBox.changeContent("Processando...");
	}
	loginBox.show();
	new Ajax.Updater(loginBox.getElementID(),base+'/resources/forms/login.php',{
	    method:'post',
		parameters:{action:act},
		onComplete:function(transport) {
			loginBox.recalculatePosition();
		}
	});
}
function closeLoginWindow() {
	try {
		var loginBox = DIALOGS.get("loginWindow");
		if (loginBox!==false) {
			loginBox.destroy();
		}
	} catch(ex){}
	return false;
}
function validateLoginInfo(uname,pwd) {
	new Ajax.Request(base+'/resources/forms/login.php', {
		method: 'POST',
		parameters:{action:'ajax',u:uname,p:pwd},
		onSuccess: function(transport) {
			if (transport.responseText.substring(0,1) == "N") {
				try { loginWasValid(transport.responseText.substring(2)); } catch(ex) {};
				try { DIALOGS.get("loginWindow").hide(); } catch(ex) {};
			} else {
				errDialog('Erro','Login inv&aacute;lido.');
			}
		}
	});
}
function resetPasswordWindow() {
	loginWindow("lostPassword");
	return false;
}
function sendLostPassword() {
	var vars = $('lostpassword').serialize(true);
	var loginBox = DIALOGS.get("loginWindow");
	if (loginBox === false) {
		loginBox = new DialogBox("loginWindow","fullscreen","Login","Processando...",false,false,true,220,false);
	} else {
		loginBox.changeContent("Processando...");
	}
	new Ajax.Updater(loginBox.getElementID(),loginurl+'/recoverpwd.php',{
	    method:'post',
		parameters: vars,
		onComplete:function(transport) {
			loginBox.recalculatePosition();
		}
	});
	return false;
}
function newsletterWindow() {
	var newsletterBox = DIALOGS.get("newsletterWindow");
	if (newsletterBox === false) {
		newsletterBox = new DialogBox("newsletterWindow","fullscreen","Newsletter","Processando...",false,false,true,200,false);
	} else {
		newsletterBox.changeContent("Processando...");
	}
	newsletterBox.show();
	new Ajax.Updater(newsletterBox.getElementID(),base+'/resources/forms/newsletter.php',{
		onComplete:function(transport) {
			newsletterBox.recalculatePosition();
		}
	});
}
function newsletter_validate() {
	var m=$('newsM');
	if (empty(m.value)) {
		errDialog('Erro','Escreva o seu e-mail');
		m.focus();
		return false;
	} else if (!checkMail(m.value)) {
		errDialog('Erro','E-mail invalido');
		m.focus();
		return false;
	}
	return true;
}
function subscribeNewsletter() {
	if (newsletter_validate()) {
		var vars = $('newsletterForm').serialize(true);
		var newsletterBox = DIALOGS.get("newsletterWindow");
		if (newsletterBox === false) {
			newsletterBox = new DialogBox("newsletterWindow","fullscreen","Newsletter","Processando...",false,false,true,200,false);
		} else {
			newsletterBox.changeContent("Processando...");
		}
		new Ajax.Updater(newsletterBox.getElementID(),base+'/resources/forms/newsletter.php',{
			method:'post',
			parameters: vars,
			onComplete:function(transport) {
				newsletterBox.recalculatePosition();
			}
		});
		return false;
	}
	return false;
}
function registerWindowShowStep(nextstep,goBack) {
	try {
		if (!goBack) {
			var currentstep = nextstep-1;
			if (!register_validate(currentstep)) return;
		}
		if (!isInteger(nextstep)) return;
		var total = 3;
		for (var i=1;i<=total;i++) {
			$('regStep'+i).style.display = (nextstep==i)?'block':'none';
		}
	} catch(ex) {
	}
}
function contactWindow(lnk,selectBox,textareatitle,singleperson) {
	if (!textareatitle) textareatitle = '';
	if (!selectBox) selectBox = '';
	try { var baseLink = htmlentities(lnk.innerHTML); } catch(ex) { var baseLink = ""; }
	var _base = location.href;
	var contactBox = DIALOGS.get("contactWindow");
	if (contactBox === false) {
		contactBox = new DialogBox("contactWindow","fullscreen","Contacto","Processando...",false,false,true,200,false);
	} else {
		contactBox.changeContent("Processando...");
	}
	contactBox.show();
	if (baseLink) {
		contactBox.setTitle(baseLink);
	}

	var vars = "sp="+(singleperson?true:false)+"&selectBox="+selectBox+"&textareatitle="+textareatitle+"&info_base="+_base+"&info_baselnk="+baseLink;
	new Ajax.Updater(contactBox.getElementID(),base+'/resources/forms/contact.php',{
		method:'post',
		parameters: vars,
		onComplete:function(transport) {
			contactBox.setWidth(540);
			contactBox.recalculatePosition();
		}
	});
}
function contacts_send(singleperson,included) {
	if (validate_info_form(singleperson)) {
		if (!included) {
			var contactBox = DIALOGS.get("contactWindow");
		} else {
			var contactBox = {
				show:function() {},
				getElementID:function() { return $("contactBOXformHolder"); },
				setWidth:function(w) {},
				recalculatePosition:function(){},
				destroy:function() {}
			}
		}
		if (contactBox === false) {
			errDialog("Erro","Erro a enviar pedido. Tente mais tarde.");
			return false;
		}
		contactBox.show();
		
		/*var nome = $('info_nome');
		var empresa = $('info_empresa');
		var tlf = $('info_tlf');
		var email = $('info_mail');
		var msg = $('info_msg');
		var _base = $('info_base').value;
		var baselnk = $('info_baselnk').value;
		var info_subj = $('info_subj');
		var info_pais = $('info_pais');
		var info_pais_val = info_pais.options[info_pais.selectedIndex].value;
		var selectedSubjs = '';
		if (info_subj != null) {
			for (var i=0; i < info_subj.options.length; i++) {
				if (info_subj.options[i].selected) {
				   selectedSubjs += "&subject[]=" + info_subj.options[i].value;
				}
			}
		}
		var vars = "sendinfo=true&sp="+singleperson+"&baselnk="+baselnk+"&base="+_base+"&pais="+info_pais_val+"&tlf="+tlf.value+"&empresa="+empresa.value+"&name="+nome.value+"&mail="+email.value+"&msg="+msg.value+selectedSubjs;*/
		
/*		$('contact_form').request({
			method: 'post',
			parameters: { sendinfo:true,sp:singleperson },
			onComplete:function(transport) {
				if (transport.responseText.substring(0,1)=='1') {
					contactBox.destroy();
					okDialog("Pedido enviado com sucesso","Agradecemos o seu pedido de informa&ccedil;&atilde;o.");
				} else {
					contactBox.setWidth(600);
					contactBox.recalculatePosition();
					errDialog("Erro",transport.responseText.substring(2));
				}
			}
		});*/
var vars = $('contact_form').serialize(true);
vars.sendinfo = true
vars.sp = singleperson;

		new Ajax.Request(base+'/resources/forms/contact.php',{
			method:'post',
			parameters: vars,
			onSuccess:function(transport) {
				if (transport.responseText.substring(0,1)=='1') {
					contactBox.destroy();
					okDialog("Pedido enviado com sucesso","Agradecemos o seu pedido de informa&ccedil;&atilde;o.");
				} else {
					contactBox.setWidth(600);
					contactBox.recalculatePosition();
					errDialog("Erro",transport.responseText.substring(2));
				}
			}
		});
	}
	return false;
}
function validate_info_form(singleperson) {
	var nome = $('info_nome');
	var empresa = $('info_empresa');
	var tlf = $('info_tlf');
	var email = $('info_mail');
	if (empty(nome.value)) { errDialog("Erro","Preencha o campo Nome"); nome.focus(); return false; }
	if (!singleperson && empty(empresa.value)) { errDialog("Erro","Preencha o campo Empresa"); empresa.focus(); return false; }
	if (empty(tlf.value)) { errDialog("Erro","Preencha o campo Telefone"); tlf.focus(); return false; }
	if (empty(email.value)) { errDialog("Erro","Preencha o campo Email"); email.focus(); return false; }
	if (!checkMail(email.value)) { errDialog("Erro","Email inv&aacute;lido"); email.focus(); return false; }
	return true;
}
function registerWindow() {
	var registerBox = DIALOGS.get("registerWindow");
	if (registerBox === false) {
		registerBox = new DialogBox("registerWindow","fullscreen","Registo","Processando...",false,false,true,200,false);
	} else {
		registerBox.changeContent("Processando...");
	}
	registerBox.show();
	new Ajax.Updater(registerBox.getElementID(),base+'/resources/forms/register.php',{
		onComplete:function(transport) {
			registerBox.setWidth(600);
			registerBox.recalculatePosition();
			rform.populate();
		}
	});
}
function hideRegisterWindow() {
	var registerBox = DIALOGS.get("registerWindow");
	if (registerBox !== false) registerBox.destroy();
}
function register() {
	if (register_validate()) {
		var vars = $('registerForm').serialize(true);
		var registerBox = DIALOGS.get("registerWindow");
		if (registerBox === false) {
			registerBox = new DialogBox("registerWindow","fullscreen","Registo","Processando...",false,false,true,220,false);
		} else {
			registerBox.setWidth(220);
			registerBox.changeContent("Processando...");
		}
		new Ajax.Updater(registerBox.getElementID(),base+'/resources/forms/register.php',{
			method:'post',
			parameters: vars,
			onComplete:function(transport) {
				registerBox.recalculatePosition();
			}
		});
		return false;
	}
	return false;
}
//-----------
function searchInputFocus(e) {
	if (!e) e = window.event;
	var targ = false;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3)	targ = targ.parentNode;
	if (targ !== false && targ.className == "texto search") {
		targ.value="";
		targ.className = "texto";
		targ.onfocus = function() {};
	}
}
/*IE6 fix*/
var im=document.createElement('img');im.width="1";im.height="1";im.src=base+"/imagens/max.gif";
var firefox = (navigator.userAgent.indexOf("Firefox")!=-1);
function id(id) { return document.getElementById(id); } // devolve obj através da id

// quiz
function quiz_ajuda() {
	DIALOGS.destroyAll();
	var sacHelp = DIALOGS.get("sacHelpWindow");
	if (sacHelp === false) {
		sacHelp = new DialogBox("sacHelpWindow","fullscreen","Ajuda","Processando...",false,false,true,800,false);
	} else {
		sacHelp.changeContent("Processando...");
	}
	sacHelp.show();
	new Ajax.Updater(sacHelp.getElementID(),base+'/testes/ajuda.html',{
	    method:'get',
		onComplete:function(transport) {
			sacHelp.recalculatePosition();
		}
	});
	/*	
	showPopWindow('quizBox');
	id('quizBox').style.top = "10px";
	openWindowGET(base+"/testes/ajuda.html",'','quizBox','quizBoxHandle',true);
	*/
}
// geral
function htmlentities(s) { // php htmlentities
	var d = document.createElement('div'),t = document.createTextNode(s);
	d.appendChild(t);
	var html = d.innerHTML;
	d = null;
	return html;
}
function isInteger(i) { // é numero?
	try {
		if (empty(i)) return false;
		return !isNaN(Math.max(i,10));
	} catch(ex) {
		return false;
	}
}
function empty(s) { // string vazia?
	try {
		if ((!s) ||	(s == 'undefined')) return true;
		s = s.replace(" ","");
		s = s.replace(/\n/,"");
		s = s.replace(/\t/,"");
		if (s=="") return true;
		return false;
	} catch(ex) {
		return false;	
	}
}
// minimizar/maximizar, id = obj, conteudo = id do conteudo (opcional)
// se não for dado id do conteudo, ele procura a 1ª div acima do botao que chama a função, e depois procura a div seguinte
function minmax_content(id_,conteudo) {
	try {
		if (typeof(conteudo) == "string")	{
			var div = id(conteudo);
		} else {
			var div = id_.parentNode;
			while (div.tagName.toLowerCase() != "div") {
				if (!div.parentNode) return false; // prevenir loops, assim no máximo devolve o body
				div = div.parentNode;
			}
			for (var i = 0,x = 0; x<2 ;i++) {
				if (div.parentNode.childNodes.length <= i)
					break;
				var node = div.parentNode.childNodes[i];
				if (node.tagName)
					if (node.tagName.toLowerCase() == "div")
						x++;
				if (x == 2) {
					div = node;
					break;
				}
			}
		}
		if (div) {
			div.style.display = (div.style.display != "none")?"none":"block";
		}
		try {
			var img = id_.childNodes[0];
			if (img.src.indexOf("min.gif") != -1) {
				img.src = img.src.replace("min.gif","max.gif");
			} else {
				img.src = img.src.replace("max.gif","min.gif");
			}
			img.style.display = "none"; img.style.display = "block"; // IE6 fix
		} catch(e) {};
	} catch(e) {}
}
function favs(url,title) { // adicionar a favoritos
	if (!url) return false;
	if (!title) title = "SFM - Sistemas de Formação Multimédia";
	if (window.sidebar) { // FF - mas fica no sidepanel... não é propriamene o que se quer
		window.sidebar.addPanel(title, url,"");
	} else if( window.external ) { // IE 
		window.external.AddFavorite( url, title); }
	else if(window.opera && window.print) { // Opera
		var elem = document.createElement('a');
		elem.setAttribute('href',url);
		elem.setAttribute('title',title);
		elem.setAttribute('rel','sidebar');
		elem.click();
	}
}
function checkMail(mail) { // versao simples do mailIsValid (para quando não se quer alerts)
	var badchars = /[\(\)\<\>\,\;\:\\\/\"\[\]]/;
	var formato = /^.+@.+\..{2,3}$/;
	if ((!(formato.test(mail))) || (mail.match(badchars)))
		return false;
	else
		return true;
};
function maximize(j){ if (!j) j=window;	j.moveTo(0,0); j.resizeTo(screen.availWidth,screen.availHeight); }
function janelaTestes(pre) { // pre, caminho de onde é chamada até ao testes-online.php (excluindo o filename)
	var opt = "status=yes,resizable=yes,scrollbars=yes"; // tem de ter pelo menos uma propriedade, ou o FF abre numa nova TAB
	var j = abrirJanela(base+'/testes/',opt,'SFMtestesOnline'); // nao usar hifen no nome pq o IE dá erro
	var w = Math.min(screen.width,1040);
	var h = Math.min(screen.height,800);
	var x = Math.max(Math.round((screen.width-w)/2),0);
	var y = Math.max(Math.round((screen.height-h)/2),0);
	j.resizeTo(w,h);
	j.moveTo(x,y);
}
function abrirJanela(url,opt,nome,maxi) { // url, opções(width=20,height=20,etc), nome (opcional), maximizado (true|false)
	if (!url) return; if (!nome) nome="defaultSFMWindow"; if (!opt) opt="";
	x = window.open(url,nome,opt);
	if (maxi) maximize(x);
	return x;
}
function mostrarBloco(obj) {
	try {
		var sibling=(obj.nextSibling.nodeType==3)? obj.nextSibling.nextSibling : obj.nextSibling;
		if(sibling.style.display=='block') sibling.style.display='none';
		else sibling.style.display='block';
	} catch(e) {}
}
function mailIsValid(id){
	x=document.getElementById(id).value;
	var badchars = /[\(\)\<\>\,\;\:\\\/\"\[\]]/
	var formato = /^.+@.+\..{2,3}$/;
	if ((!(formato.test(x))) || (x.match(badchars))) {
		if ((x == "") || (x == 'undefined')) alert('Preencha o email');
		else alert("Verifique o email, por favor.");
		document.getElementById(id).focus();
		return false;
	} 
	return true;
}
// mostrar links
function showLinkage() {
	DIALOGS.destroyAll();
	var showLinks = DIALOGS.get("showLinksWindow");
	if (showLinks === false) {
		showLinks = new DialogBox("showLinksWindow","fullscreen","Aponte para esta p&aacute;gina","Processando...",false,false,true,600,false);
	} else {
		showLinks.changeContent("Processando...");
	}
	showLinks.show();
	new Ajax.Updater(showLinks.getElementID(),base+'/resources/includes/mostrarlinks.php',{
	    method:'get',
		onComplete:function(transport) {
			showLinks.recalculatePosition();
		}
	});
	/*
	var d=document,x=id('showLinks');
	if (!x) {
		var element = d.createElement("div");
		element.setAttribute("id", "showLinks");
		d.body.appendChild(element);
		showPopWindow('showLinks');
		var a = openWindow(base+"/resources/includes/mostrarlinks.php",'showLinks','showLinksHandle',true);
	} else { x.style.display = "block"; }*/
}
// enviar a amigo
function enviarAmigo_preview() {
	var nome=id('enviarAmigo_nome_self').value;
	var email=id('enviarAmigo_email_self').value;
	var msg=id('enviarAmigo_mensagem').value;
	var greeting=id('enviarAmigo_textarea_h').value;
	var prefixo = "<br>Estou a ver testes da SFM no endere&ccedil;o: <b>http://www.sfm.pt/</b><br><br>";
	var sufixo = ((nome)?(nome+" "):"");
	var sufixo = sufixo + ((email)?((nome)?"("+email+")":email):"");

	var y = "<table class='enviarAmigo_tabela' cellpading='0' cellspacing='0'><tr><td height='15px' valign='top' align='left'><b>Mensagem que o seu amigo ir&aacute; receber:</b></td></tr><tr><td valign='top' align='left'>";
	var y = y+greeting+prefixo+msg+((sufixo != "")?("<hr>Enviado por "+sufixo):"");
	var obj = 'document.getElementById("enviarAmigo_preview")';
	var y = y + "</td></tr></table>";
	new okDialog('Preview',y,623);
}
function enviarAmigo_checkEmail(x,y,z) {
	var emails = x.value.split(";");
	for (var a = 0;a<emails.length;a++) {
		if (!checkMail(emails[a])) {
			alert('Email do amigo invalido'); 
			x.focus();
			return false;
			break; // reforçar, embora não deva fazer nada
		}
	}
	if ((y.value != "") && (y.value != 'undefined') && (!checkMail(y.value))) { 
		alert('Email invalido');
		y.focus();
		return false;
	} if ((!z.value) && (!y.value)) return confirm("Deixou o nome e o E-mail em branco. Deseja enviar na mesma?");
	return true;
}
function enviarAmigo_send() {
	var email_self = id('enviarAmigo_email_self');
	var email_amigo = id('enviarAmigo_email_amigo');
	var nome = id('enviarAmigo_nome_self');
	var msg = id('enviarAmigo_mensagem');
	var premsg = id('enviarAmigo_textarea_h');
	if (enviarAmigo_checkEmail(email_amigo,email_self,nome)) {
		
		DIALOGS.destroyAll();
		var sendFriends = DIALOGS.get("sendFriendsWindow");
		if (sendFriends === false) {
			sendFriends = new DialogBox("sendFriendsWindow","fullscreen","Enviar a amigos","Processando...",false,false,true,600,false);
		} else {
			sendFriends.changeContent("Processando...");
		}
		sendFriends.show();
		new Ajax.Updater(sendFriends.getElementID(),base+'/resources/includes/enviaramigo.php',{
			method:'post',
			parameters: {"enviarAmigo_email_self":email_self.value,"email_amigo":email_amigo.value,"enviarAmigo_nome_self":nome.value,"enviarAmigo_mensagem":msg.value,"greeting":premsg.value},
			onComplete:function(transport) {
				sendFriends.recalculatePosition();
			}
		});
		
/*		var x = openWindowPOST(base+"/resources/includes/enviaramigo.php",vars,'enviarAmigoBox','enviarAmigoBoxHandle',true);*/
	}
}
function enviarAmigoWindow() {
	DIALOGS.destroyAll();
	var sendFriends = DIALOGS.get("sendFriendsWindow");
	if (sendFriends === false) {
		sendFriends = new DialogBox("sendFriendsWindow","fullscreen","Enviar a amigos","Processando...",false,false,true,600,false);
	} else {
		sendFriends.changeContent("Processando...");
	}
	sendFriends.show();
	new Ajax.Updater(sendFriends.getElementID(),base+'/resources/includes/enviaramigo.php',{
	    method:'get',
		onComplete:function(transport) {
			sendFriends.recalculatePosition();
		}
	});
	
/*	showPopWindow('enviarAmigoBox');
	openWindowGET(base+"/resources/includes/enviaramigo.php",'','enviarAmigoBox','enviarAmigoBoxHandle',true);*/
}
// usage <element onEvent="newsShowBox(event);"></element>
function newsShowBox(e) {
	var d=document;
	if (!id('newsletterDivBox')) {
		var div=d.createElement('div');
		div.setAttribute('id','newsletterDivBox');
		div.setAttribute('class','floatingBox');
		d.body.appendChild(div);
	}
	showPopWindow('newsletterDivBox',e);
	openWindowPOST(base+'/blocos/newsletter.php','boxMode=true','newsletterDivBox','newsLetterBOXTitleDiv',true);
}
function newsDeleteBox() {
	if (!id('newsletterDivBox')) return;
	var b = id('newsletterDivBox'),d=document;
	d.body.removeChild(b);
}
// login
function showHideLogin() { try { var box=id('loginFormContainer');	box.style.display=(box.style.display!="none")?"none":"block"; } catch(e) {} }
function showLogin(ret,site,pagerefresh) {
	unlockLogin();
	try { var x = id('logP').value; id('loginFormContainer').style.display = "block"; } // existem os elementos de login?
	catch(e) { openWindowPOST(loginurl+"/makelogin.php","interface=true"+((pagerefresh)?"&refresh=true":"")+((site)?"&site=true":""),'loginFormContainer'); };
	if (ret) return false;
}
function hideLogin(ov) { if ((!noclose) || (ov)) { try { id('loginFormContainer').style.display = "none"; } catch(e) {}; try { id('ErrLogin').style.display="none"; } catch(e) {} } if (ov) unlockLogin(); }
var logtimer = "";
var noclose=false;
function mouseoverLogin() {
	clearTimeout(logtimer);
	id('loginFormContainer').style.display = "block";
}
function mouseoutLogin() {
	clearTimeout(logtimer);
	logtimer = setTimeout("hideLogin()",1000);
}
function unlockLogin() { noclose=false; }
function lockLogin() { noclose=true; }
function site_recoverPwd(site) {
	var u=id('logU');
	if (empty(u.value)) {
		alert('Preencha o E-mail. \n\n Sem o seu E-mail nÃ£o Ã© possivel recuperar a passsword.');
		u.focus();
		return false;
	}
	/*if (!checkMail(u.value)) {
		alert('E-mail invalido. \n\n Sem um E-mail vÃ¡lido nÃ£o Ã© possivel recuperar a passsword.');
		u.focus();
		return;
	}*/
	var vars = "mail="+u.value+((site)?"&site=true":"");
	openWindowPOST(loginurl+"/recoverpwd.php",vars,'loginFormContainer');
	return false;
}
function site_loginForgotPwd(site) {
	openWindowPOST(loginurl+"/recoverpwd.php",''+((site)?"site=true":""),'loginFormContainer');
	return false;
}
function site_loginUniversal(logout,pagerefresh) {
	var vars = "";
	if (!pagerefresh) pagerefresh=false;
	if (!logout) if (!site_login()) return false;
	if (!logout) vars += "username="+id('logU').value+"&password="+id('logP').value;
	else vars += "logout=true";
	if (pagerefresh) vars += "&refresh=true";
	if (xmlhttp != null && xmlhttp.readyState != 0 && xmlhttp.readyState !=4) xmlhttp.abort();
	document.body.style.cursor = "wait";
	var url = loginurl+"/makelogin.php";
	try { xmlhttp.open("POST", url, true); }
	catch (e) { url = url.replace(/www./i,""); xmlhttp.open("POST", url, true); }
	xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xmlhttp.setRequestHeader("Connection", "close");
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4) {
			xmlhttp.onreadystatechange=function() { };
			site_login_response(xmlhttp.responseText,pagerefresh);
			document.body.style.cursor = "";
		}
	}
	xmlhttp.send(vars);
	return false;
}
function site_login_response(logged,pagerefresh) {
	if (logged.substring(0,1) == "N") {
		try { id('luname').innerHTML = logged.substring(2); } catch(e) {}
		logged = "true"; 
	}
	switch(logged) {
		case "true":
			id('loginFormContainer').style.display = 'none';
			try { id('welcomeLogin').style.display = 'block'; 
			id('ErrLogin').style.display = 'none';
			id('Lin').style.display = 'none';
			id('Lout').style.display = 'inline'; } catch(e) {}
			if (pagerefresh) { document.location.reload(true); }
			break;
		case "false":
			try { id('ErrLogin').style.display = 'block'; } catch(e) {}
			try { id('welcomeLogin').style.display = 'none'; 
			id('Lin').style.display = 'inline';
			id('Lout').style.display = 'none'; } catch(e) {}
			break;
		case "logout":
			try { id('welcomeLogin').style.display = 'none'; 
			id('Lin').style.display = 'inline';
			id('Lout').style.display = 'none'; } catch(e) {}
			if (pagerefresh) { document.location.reload(true); }
			break;
	}
}
var rform = new Form_Fields(new Array({'id':'email','value':''},
						  {'id':'entidade','value':''},
						  {'id':'firstname','value':''},
						  {'id':'morada','value':''},
						  {'id':'localidade','value':''},
						  {'id':'cod_post_1','value':''},
						  {'id':'cod_post_2','value':''},
						  {'id':'telefone','value':''},
						  {'id':'fax','value':''},
						  {'id':'nl','value':'true'},
						  {'id':'div_serv','value':'true'},
						  {'id':'pais','value':''},
						  {'id':'actividade','value':''},
						  {'id':'lastname','value':''}),"reg_");
// objecto para guardar info de formularios
// arr = array com campos no formato: {'id':'nomedocampo','value':'valor inicial'}
// pre = prefixo dos campos. (opcional)
function Form_Fields(arr,pre) {
	var prefix = (pre)?pre:"";
	var fields = arr;
	this.iniEvents = function(varname) {
		for (var i=0;i<fields.length;i++) {
			var f=this.getEl(prefix+fields[i].id);
			f.onblur= function() { varname+".saveField('"+fields[i].id+"')"; };
		}
	}
	this.getEl = function(id) { return document.getElementById(id); }
	this.populate = function() {
		for (var i=0;i<fields.length;i++) {
			try { 
				var el=this.getEl(prefix+fields[i].id);
				switch (el.getAttribute("type")) {
					case "text":
						el.value=fields[i].value;
						break;
					case "select":
						el.selectedIndex=fields[i].value;
						break;
					case "checkbox":
						el.checked=fields[i].value;
						break;
					default :
						el.value=fields[i].value;
						break;
				}
			} catch(e) {}
		}
	}
	this.saveField = function(f) {
		for (var i=0;i<fields.length;i++) {
			if (fields[i].id==f) {
				try {
					var fi = this.getEl(prefix+f);
					switch (fi.getAttribute("type")) {
						case "text":
							fields[i].value=fi.value;
							break;
						case "select":
							fields[i].value=fi.selectedIndex;
						case "checkbox":
							fields[i].value=fi.checked;
							break;

						default:
							fields[i].value=fi.value;	
							break;
					}
				} catch(e) {}
			}
		}
	}
	this.getField = function(f) {
		for (var i=0;i<fields.length;i++) {
			if (fields[i].id==f) {
				return fields[i]; // o return faz break.
			}
		}
	}
}
function register_validate(step) {
	var mail=id('reg_email');
	var pwd=id('reg_password');
	var pwd2=id('reg_password_c');
	var fn=id('reg_firstname');
	var ln=id('reg_lastname');
	var tos=id('reg_tos'); //checkbox TOS

		// validacao campos obrigatorios
	if (!step || step==1) {

		if (empty(mail.value)) { errDialog("Erro","Preencha o ID (E-mail)"); mail.focus(); return false; }
		if (!checkMail(mail.value)) { errDialog("Erro","ID (E-mail) invÃ¡lido"); mail.focus(); return false;	}
		if (empty(pwd.value)) { errDialog("Erro","Preencha a password"); pwd.focus(); return false; }
		if (pwd.value != pwd2.value) { errDialog("Erro","As passwords nÃ£o correspondem"); pwd.focus(); return false; }
		if (pwd.value.length<6) { errDialog("Erro","A password tem de ter no minimo 6 caracteres."); pwd.focus(); return false; }
		if (empty(fn.value)) { errDialog("Erro","Preencha o nome"); fn.focus(); return false; }
		if (empty(ln.value)) { errDialog("Erro","Preencha o apelido"); ln.focus(); return false; }
	}
	if (!step || step==3) {
		if (!tos.checked) { errDialog("Erro",'Tem de aceitar os termos de serviÃ§o para continuar com o registo.'); tos.focus(); return false; }
	}
	return true;
}
function site_search(vars) {
	var qobj = id("query");
	var ret = false;
	var query = qobj.value;
	if (!vars) { vars = "query="+query+"&search=1"; ret = true; }
	openWindowPOST(basesearch,vars,'conteudoDiv');
	if (ret) return false;
}