//*************************Funcoes para Validacao dos Campos de Formularios*******************<!--
/*****************************************************************************
FUNCAO
	Abre uma janela para ser feito um upload de uma imagem
ARGUMENTOS
	FormName		- Nome do formulario
	FieldName		- Nome do campo do formulario
RETORNA
	Nada
******************************************************************************/
function UploadFile(FormName,FieldName)
{
	newWindow = window.open('attach_file.asp?form='+FormName+'&field='+FieldName,'Uploading','toolbar=no,location=no,directories=no,status=no,scrollbars=no,resizable=no,copyhistory=no,left=300,top=200,width=380,height=140');
}

/******************************************************************************
FUNCAO
	Abre uma janela para ser mostrar a imagem de upload
ARGUMENTOS
	FileName		- Nome do ficheiro que contem a imagem
RETORNA
	Nada
*******************************************************************************/
function ShowFile(FileName)
{
	if (FileName=="")
		alert("Não existe ficheiro!!!");
	else 
	{
		//newWindow = window.open('attach_file_show.asp?file='+FileName,'Uploading','toolbar=no,location=no,directories=no,status=no,scrollbars=no,resizable=yes,copyhistory=no,left=300,top=30,width=500,height=500');
		//newWindow.focus();
		window.location="../attachs/" + FileName;
	}
}

/******************************************************************************
FUNCAO
	Permite passar para o campo seguinte (XDestiny) de um form depois de terem sido
	inseridos n caracteres (nPos) no campo (XSource)
ARGUMENTOS
	XSource			- Campo actual
	XDestiny		- Campo seguinte
	nPos			- Numero de caracteres necessarios
RETORNA
	Nada
*******************************************************************************/
function change_input(XSource,XDestiny,nPos)
{
	if (typeof(XSource)=="object")
	{		if (XSource.value.length == nPos)		{			if (typeof(XDestiny)=="object")			{
				XDestiny.focus();
			}		}	}
}

//campo que indica qual e o valor da opcao que representa o campo de escolha de um DropDown
var RelatedEmpty = "0";
//campo que indica qual e o valor da opcao que representa um valor nao escolhido no DropDown de datas
var DateEmpty = "-1";

/************************************************
FUNCAO
	Verifica se um campo esta vazio. Da uma mensagem de erro se estiver vazio
ARGUMENTOS
	strchk			- Valor do campo a verificar
	strname			- Nome do campo
RETORNA
	True/False
************************************************/
function CheckEmpty(strchk,strname)
{
	if (strchk == "")
	{	
		alert("Favor introduzir um valor no campo \"" + strname + "\".");
		return (false);
	}
	else
	{
		return (true);
	}
}

function CheckEmptyDate(strday,strmonth,stryear,strname)
{
	if (strday == DateEmpty && strmonth == DateEmpty && stryear == DateEmpty)
	{	
		alert("Favor introduzir um valor no campo \"" + strname + "\".");
		return (false);
	}
	else
	{
		return (true);
	}
}

function CheckEmptyRelated(strchk,strname)
{
	if (strchk == RelatedEmpty)
	{	
		alert("Favor escolher um valor no campo \"" + strname + "\".");
		return (false);
	}
	else
	{
		return (true);
	}
}

function CheckEqual(strchk1,strname1,strchk2,strname2,msgstr)
{
	if (strchk1 != strchk2)
	{
		alert(msgstr + " nos campos \"" + strname1 + "\" e \"" + strname2 + "\". ");
		return (false);
	}
	else
	{
		return (true);
	}
}

function CheckSize(strvalue,strname,strminsize,strmaxsize)
{
	checkStr = strvalue ;
	
	if ((checkStr.length < strminsize))
	{
		alert("O campo \"" + strname + "\" tem que ter pelo menos " + strminsize + " caracteres (tem " + (strminsize - checkStr.length) + " a menos) .");
		return (false);
	}
	if (checkStr.length > strmaxsize)
	{
		alert("O campo \"" + strname + "\" excede os " + strmaxsize + " caracteres (tem " + (checkStr.length - strmaxsize) + " a mais) .");
		return (false);
	}
	return (true);
}

function CheckValid(strtochk,strchk,msgstr,strname)
{
	var checkOK = strchk;
	var checkStr = strtochk;
	var allValid = true;
	for (i = 0;  i < checkStr.length;  i++)
	{
		ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
			if (ch == checkOK.charAt(j))
				break;
			if (j == checkOK.length)
			{
				alert(msgstr + " no campo \"" + strname + "\".\nO caracter \"" + ch + "\" é inválido.");
				allValid = false;
				break;
			}
	}
	return (allValid) ;
}

function CheckInvalid(strtochk,strchk,msgstr,strname)
{
	var checkInvalid = strchk;
	var checkStr = strtochk;
	var allValid = true;
	for (i = 0;  i < checkStr.length;  i++)
	{
		ch = checkStr.charAt(i);
		for (j = 0;  j < checkInvalid.length;  j++)
			if (ch == checkInvalid.charAt(j))
				break;
			if (j != checkInvalid.length)
			{
				alert(msgstr + " no campo \"" + strname + "\".");
				allValid = false;
				break;
			}
	}
	return (allValid) ;
}

function CheckEMail(eaddress)
{
	var reEmail = /^.+\@.+\..+$/;
	if ((eaddress == null) || (eaddress.length == 0))
	{
       		return true;
    } 
    
	if (!(reEmail.test(eaddress))) 
	{
		alert("Favor introduzir um endereço de E-Mail válido.");
		return false;
	}
       return true;
}

function CheckDate(strday,strmonth,stryear,strname)
{
	var allValid = true;
	
	//se um dos elemntos da data estiver preenchido
	if (strday != DateEmpty || strmonth != DateEmpty || stryear != DateEmpty)
	{
		//se nem todos os lementos da data estiverem preenchidos
		if (strday == DateEmpty || strmonth == DateEmpty || stryear == DateEmpty)
		{
			alert("Favor introduzir todos os elementos no campo \"" + strname + "\".");
			return false;
		}
		else
		{
			if (strmonth=="4" || strmonth=="6" || strmonth=="9" || strmonth=="11")
			{

				if (strday=="31")
				{
					alert("Dia não existente no mês selecionado no campo \"" + strname + "\".");
					return false;
				}
			}
			if (strmonth=="2") 
			{
				if (strday == "30" || strday=="31")
				{
					alert("Dia não existente no mês selecionado no campo \"" + strname + "\".");
					return false;
				}
			}
			if (strmonth=="2")
			{
				if ((strday == "29") &&  ((stryear % 4!=0) || ((stryear % 4==0) && (stryear % 100==0) && (stryear % 400!=0))))
				{
					alert("Dia não existente no mês selecionado no campo \"" + strname + "\".");
					return false;
				}
			}
		}
	}
	return (allValid);
}

function CheckPeriod(strvalue,valuestart,valueend,strname)
{
	var intvalue;
	var allValid = true;
	
	//se um dos elementos da data estiver preenchido
	if (strvalue != "")
	{
		if (isNaN(strvalue))
		{
			alert("Introduza um valor entre " + valuestart + " e " + valueend + " no campo \"" + strname + "\".");
			return false;
		}
		else
		{
			intvalue = parseInt(strvalue);
			if ((intvalue<valuestart) || (intvalue>valueend))
			{
				alert("Introduza um valor entre " + valuestart + " e " + valueend + " no campo \"" + strname + "\".");
				return false;
			}
		}
	}
	return (allValid);
}
// -->