function fReset(o,p) {
if (o.value==p) { o.value='';}
}
function validate(form,lang,action) {
var errmsg='', errOut='', posn, ifocuselem, pass=true;
aErro = new Array(12);

switch (lang) {
	case "PT":
		aErro[0] = "\tO título\n";
		aErro[1] = "\tA sua morada\n";
		aErro[2] = "Por favor, verifique o(s) campo(s) obrigitório(s)\n";
		aErro[3] = "\tO seu nome\n";
		aErro[4] = "\tO nome do utilizador\n";
		aErro[5] = "\tO seu e-mail\n";
		aErro[6] = "\tO seu pedido\n";		
		aErro[7] = "\tO tipo de pedido\n";	
		aErro[8] = "\tA palavra-passe\n";
		aErro[9] = "\tAs palavra-passes não são iguais\n";
		aErro[10] = "\tO seu telefone\n";
		aErro[11] = "\tA sua localidade\n";
		aErro[12] = "\tO seu país\n";
	break;
}
bPass = true;
switch (form.name) {
	case "frm_Pedido_Informacao" :
		for (x=0; x<form.elements.length; x++) {
			switch (form.elements[x].name) {
				case "nome":if (form.elements[x].value.length < 3) {
					errmsg+=aErro[3]
					ifocuselem = x;
				}
				break;
				case "email":
					posn=form.elements[x].value.indexOf('\u0020');
					if (form.elements[x].value.length < 5) {
						errmsg+=aErro[5];
						ifocuselem=x; }
					else if (posn>=0) {
							errmsg+=aErro[5];
							ifocuselem=x; }
					else {
						var posn=form.elements[x].value.indexOf('@');
						if (posn==-1) {
							errmsg+=aErro[5];
							ifocuselem=x; } 
						else {
						posn=form.elements[x].value.indexOf('.',posn+2);
						if (posn==-1) {
							errmsg+=aErro[5];
							ifocuselem=x;}
						}
					}
				break;
				case "categoria":if (form.elements[x].value.length = 0) {
					errmsg+=aErro[7]
					ifocuselem = x;
				}
				break;				
				case "pedido":if (form.elements[x].value.length < 3) {
					errmsg+=aErro[6]
					ifocuselem = x;
				}
				break;
			} }
	break;
	case "frm_Pedido" :
		for (x=0; x<form.elements.length; x++) {
			switch (form.elements[x].name) {
				case "nome":if (form.elements[x].value.length < 3) {
					errmsg+=aErro[3]
					ifocuselem = x;
				}
				break;
				case "email":
					posn=form.elements[x].value.indexOf('\u0020');
					if (form.elements[x].value.length < 5) {
						errmsg+=aErro[5];
						ifocuselem=x; }
					else if (posn>=0) {
							errmsg+=aErro[5];
							ifocuselem=x; }
					else {
						var posn=form.elements[x].value.indexOf('@');
						if (posn==-1) {
							errmsg+=aErro[5];
							ifocuselem=x; } 
						else {
						posn=form.elements[x].value.indexOf('.',posn+2);
						if (posn==-1) {
							errmsg+=aErro[5];
							ifocuselem=x;}
						}
					}
				break;
				case "categoria":if (form.elements[x].value.length = 0) {
					errmsg+=aErro[7]
					ifocuselem = x;
				}
				break;				
				case "pedido":if (form.elements[x].value.length < 3) {
					errmsg+=aErro[6]
					ifocuselem = x;
				}
				break;
			} }
	break;
	case "frm_Pedido_Audiencia" :
		for (x=0; x<form.elements.length; x++) {
			switch (form.elements[x].name) {
				case "nome":if (form.elements[x].value.length < 3) {
					errmsg+=aErro[3]
					ifocuselem = x;
				}
				break;
				case "email":
					posn=form.elements[x].value.indexOf('\u0020');
					if (form.elements[x].value.length < 5) {
						errmsg+=aErro[5];
						ifocuselem=x; }
					else if (posn>=0) {
							errmsg+=aErro[5];
							ifocuselem=x; }
					else {
						var posn=form.elements[x].value.indexOf('@');
						if (posn==-1) {
							errmsg+=aErro[5];
							ifocuselem=x; } 
						else {
						posn=form.elements[x].value.indexOf('.',posn+2);
						if (posn==-1) {
							errmsg+=aErro[5];
							ifocuselem=x;}
						}
					}
				break;
				case "categoria":if (form.elements[x].value.length = 0) {
					errmsg+=aErro[7]
					ifocuselem = x;
				}
				break;				
				case "pedido":if (form.elements[x].value.length < 3) {
					errmsg+=aErro[6]
					ifocuselem = x;
				}
				break;
			} }
	break;

	case "frm_Registo":
		for (x=0; x<form.elements.length; x++) {

			switch (form.elements[x].name) {
				case "nome":if (form.elements[x].value.length < 3) {
					errmsg+=aErro[3]
					ifocuselem = x;
				}
				break;
				case "localidade":if (form.elements[x].value.length < 3) {
					errmsg+=aErro[11]
					ifocuselem = x;
				}
				break;
				case "pais":if (form.elements[x].value.length < 3) {
					errmsg+=aErro[12]
					ifocuselem = x;
				}
				break;				
				case "telefone":if (form.elements[x].value.length < 3) {
					errmsg+=aErro[10]
					ifocuselem = x;
				}
				break;				
				case "username":if (form.elements[x].value.length < 3) {
					errmsg+=aErro[4]
					ifocuselem = x;
				}
				break;				
				case "email":
					posn=form.elements[x].value.indexOf('\u0020');
					if (form.elements[x].value.length < 5) {
						errmsg+=aErro[5];
						ifocuselem=x; }
					else if (posn>=0) {
							errmsg+=aErro[5];
							ifocuselem=x; }
					else {
						var posn=form.elements[x].value.indexOf('@');
						if (posn==-1) {
							errmsg+=aErro[5];
							ifocuselem=x; } 
						else {
						posn=form.elements[x].value.indexOf('.',posn+2);
						if (posn==-1) {
							errmsg+=aErro[5];
							ifocuselem=x;}
						}
					}
				break;
			} }
			if ((form.password1.value != form.password2.value) || (form.password1.value.length == 0) || (form.password2.value.length == 0)) {
				errmsg+=aErro[9];
			}
	break;
}

if (errmsg!='') {
	errOut= "_______________________________________________________________\n";	
	errOut+=aErro[2];
	errOut+=errmsg;
	errOut+="\n_______________________________________________________________\n";
	alert(errOut);
	if (parseInt(ifocuselem)) eval("form.elements[" + ifocuselem + "].focus();");
	pass=false;
}
else {
	form.action = action;
	form.submit();	
	pass=true;
}
return (pass);
}
function isDate(dateparam) {
	var elems = dateparam.split("-");   // extrai as 3 componentes da data
	result = (elems.length == 3); // verifica se são 3 componentes
	if (result) {
		var today = new Date();
		var year   = parseInt(elems[0],10);
		var month = parseInt(elems[1],10);
		var day  = parseInt(elems[2],10);
		result    = allDigits(elems[0]) && (elems[0].length == 4) && 
			allDigits(elems[1]) && (month > 0) && (month < 13) &&
			allDigits(elems[2]) && (day > 0) && (day < 32);
	}
	return result;
}
function allDigits(str)
{
	return inValidCharSet(str,"0123456789");
}
function inValidCharSet(str,charset)
{
	var result = true;
	// Note: doesn't use regular expressions to avoid early Mac browser bugs	
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)
		{
			result = false;
			break;}
	return result;
}

<!--
function getkey(e)
{
if (window.event)
   return window.event.keyCode;
else if (e)
   return e.which;
else
   return null;
}

function goodchars(e, goods)
{
var key, keychar;
key = getkey(e);

if (key == null) return true;

// get character
keychar = String.fromCharCode(key);
keychar = keychar.toLowerCase();
goods = goods.toLowerCase();

//alert("KEY: " + key);

// check goodkeys
if (goods.indexOf(keychar) != -1)
	return true;

// control keys
if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
   return true;

// else return false
return false;
}