/************************************************************************
*	Powered by
*		Sinapse - Tecnologia da Informacao
*			Av. Sao Paulo, 172 - 14 andar - sala 1415
*			Maringa - Pr	(44)227-3562
************************************************************************/
function DateMask(keypress, objeto)
{
	campo = eval(objeto);	
	caracteres = '01234567890';
	separacoes = 2;
	separacao1 = '/';
	separacao2 = '/';
	conjuntos = 3;
	conjunto1 = 2;
	conjunto2 = 2;
	conjunto3 = 4;

	if(caracteres.indexOf(String.fromCharCode(keypress))== -1)
	{
		event.returnValue=false;
		return false;
	}

	if ((caracteres.search(String.fromCharCode(keypress))!=-1) && campo.value.length < (conjunto1 + conjunto2 + conjunto3 + 2))
	{
		 if (campo.value.length == conjunto1)
		 {
		 	campo.value = campo.value + separacao1;
		 }
		 if (campo.value.length == (conjunto1 + conjunto2 + 1))
		 {
		 	campo.value = campo.value + separacao2;
		 }
	}
	else
	{
		event.returnValue=false;
		return false;
	}
}

function HourMask(keypress, objeto)
{
	campo = eval(objeto);	
 	caracteres = '01234567890';
 	separacoes = 1;
 	separacao1 = ':';
 	conjunto1 = 2;
 	conjunto2 = 2;
 	conjunto3 = 2;	
 	if ((caracteres.search(String.fromCharCode(keypress))!=-1) && campo.value.length < (conjunto1 + conjunto2 + conjunto3 + 2))
 	{
 		 if (campo.value.length == conjunto1)
		 	campo.value = campo.value + separacao1;
			
		 if (campo.value.length == conjunto1 + conjunto2 + 1)
		 {
			campo.value = campo.value + separacao1;
		 }			
	}
	else
	{
		event.returnValue=false;
	}
}

function validateDate(txDate, nameField)
{	
	campo = txDate;
 	var err=0
 	a = campo.value;
				
  	if (a.length != 10) err=1
  	d = a.substring(0, 2)// day
  	c = a.substring(2, 3)// '/'
  	b = a.substring(3, 5)// month
  	e = a.substring(5, 6)// '/'
  	f = a.substring(6, 10)// year
  	if (b<1 || b>12) err = 1
  	if (c != '/') err = 1
  	if (d<1 || d>31) err = 1
  	if (e != '/') err = 1		
	if (f<1800 || f>2100) err = 1 //o sistema n� aceita datas menores que 1800	
  	if (b==4 || b==6 || b==9 || b==11)
	{
    	if (d==31) err = 1
	}
	if (b==2)
	{
		var g=parseInt(f/4)
		if (isNaN(g)) 
		{
		  err=1
		}
	    if (d>29) err=1
	    if (d==29 && ((f/4)!=parseInt(f/4))) err=1
	}
  	if (err==1) 
	{																
		setError("O campo "+nameField+" deve estar no formato DD/MM/AAAA");
		return false;
	}  
	return true;		
}

function validaHora(campo, descricao)
{
	var hasError = true;
	if(trim(campo.value)=='')
	{
		hasError = false;
	}
	var item = campo.value;
	var limiteHoraInicial = 0;
	var limiteHoraFinal	  = 23;

	var hh = item.substring(0,2);
	var p  = item.substring(2,3);
	var mm = item.substring(3,5);
	var p2 = item.substring(5,6);
	var ss = item.substring(6,8);
	
	if (item.length == 0)
 		hasError = false;
	
	if (item.length < 8)
 		hasError = false;
	
	if (!validaCaracteres(item, "0123456789:"))
		hasError = false;

	if (hh < limiteHoraInicial || hh > limiteHoraFinal)
		hasError = false;
	
	if (mm < 0 || mm > 59)
		hasError = false;

	if (ss < 0 || ss > 59)
		hasError = false;

	if(hasError == false)
	{
		setError("O campo "+descricao+" deve estar no formato HH:MM:SS");
		return false;
	}
	else
	{	
		return true;
	}
}

function validaHoraSemSeg(campo, descricao)
{
	var hasError = true;
	if(trim(campo.value)=='')
	{
		hasError = false;
	}
	var item = campo.value;
	var limiteHoraInicial = 0;
	var limiteHoraFinal	  = 23;

	var hh = item.substring(0,2);
	var p  = item.substring(2,3);
	var mm = item.substring(3,5);
	
	if (item.length == 0)
 		hasError = false;
	
	if (item.length < 5)
 		hasError = false;
	
	if (!validaCaracteres(item, "0123456789:"))
		hasError = false;

	if (hh < limiteHoraInicial || hh > limiteHoraFinal)
		hasError = false;
	
	if (mm < 0 || mm > 59)
		hasError = false;

	if(hasError == false)
	{
		setError("O campo "+descricao+" deve estar no formato HH:MM");
		return false;
	}
	else
	{	
		return true;
	}
}

function validaHoraWithBlank(campo, descricao, canEmpty)
{
	if(trim(campo.value)== '')
	{
		if(canEmpty == false)
		{
			setError("O campo "+descricao+" é obrigatório");
			return false;
		}
		else
		{
			return true;
		}
	}
	
	if(trim(campo.value)== '')
	{
		return true;
	}
	var hasError = true;
	var item = campo.value;
	var limiteHoraInicial = 0;
	var limiteHoraFinal	  = 23;

	var hh = item.substring(0,2);
	var p  = item.substring(2,3);
	var mm = item.substring(3,5);
	
	if (item.length == 0)
 		hasError = false;
	
	if (item.length < 5)
 		hasError = false;
	
	
	if (!validaCaracteres(item, "0123456789:"))
		hasError = false;

	if (hh < limiteHoraInicial || hh > limiteHoraFinal)
		hasError = false;
	
	if (mm < 0 || mm > 59)
		hasError = false;
		
	if(hasError == false)
	{
		setError("O campo "+descricao+" deve estar no formato HH:MM:SS");
		return false;
	}
	else
	{	
		return true;
	}
}


function validateDateAsBlank(txDate, nameField, canEmpty)
{	
	var campo = txDate;
 	var err=0
 	a = trim(campo.value);

	if (canEmpty == true)
	{	
		if (a.length == 0)
		{
			return true;
		}
	}

  	if (a.length != 10) err=1
  	d = a.substring(0, 2)// day
  	c = a.substring(2, 3)// '/'
  	b = a.substring(3, 5)// month
  	e = a.substring(5, 6)// '/'
  	f = a.substring(6, 10)// year
  	if (b<1 || b>12) err = 1
  	if (c != '/') err = 1
  	if (d<1 || d>31) err = 1
  	if (e != '/') err = 1
	if (f<1800 || f>2100) err = 1
  	if (b==4 || b==6 || b==9 || b==11)
	{
    	if (d==31) err = 1
	}
	if (b==2)
	{
		var g=parseInt(f/4)
		if (isNaN(g)) 
		{
		  err=1
		}
	    if (d>29) err=1
	    if (d==29 && ((f/4)!=parseInt(f/4))) err=1
	}
  	if (err==1) 
	{																
		setError("O campo "+nameField+" deve estar no formato DD/MM/AAAA");
		return false;
	}  
	return true;		
}

function isInformedDateSmallerThanServerDate(pInformedDate,  pServerDate, canEqualsDate, dsField)
{	
	parts = pServerDate.split("/");
	actualDay=parts[0];			
	actualMonth=parts[1];
	actualYear=parts[2];
	
	day    = pInformedDate.substring(0,2);
	month  = pInformedDate.substring(3,5);
	year   = pInformedDate.substring(6,10);

	if(actualYear < 1000)
	{
		actualYear = actualYear + 1900;
	}
	
	actualDate = actualYear+actualMonth+actualDay;
	informedDate = year+month+day;
	
	if(canEqualsDate == true)
	{
		if(informedDate > actualDate)
		{		
			setError("O campo " + dsField + " deve ser menor ou igual que a data atual.");
			return false;
		}								
	}
	else
	{
		if(informedDate >= actualDate)
		{		
			setError("O campo " + dsField + " deve ser menor que a data atual.");
			return false
		}
	}
	return true;
}

function isNotInformedDateSmallerThanServerDate(pInformedDate,  pServerDate, canEqualsDate, dsField)
{	
	parts = pServerDate.split("/");
	actualDay=parts[0];			
	actualMonth=parts[1];
	actualYear=parts[2];
	
	day    = pInformedDate.substring(0,2);
	month  = pInformedDate.substring(3,5);
	year   = pInformedDate.substring(6,10);

	if(actualYear < 1000)
	{
		actualYear = actualYear + 1900;
	}
	
	actualDate = actualYear+actualMonth+actualDay;
	informedDate = year+month+day;
	
	if(canEqualsDate == true)
	{
		if(informedDate < actualDate)
		{		
			setError("O campo " + dsField + " deve ser maior ou igual que a data atual.");
			return false;
		}								
	}
	else
	{
		if(informedDate <= actualDate)
		{		
			setError("O campo " + dsField + " deve ser maior que a data atual.");
			return false
		}
	}
	return true;
}

function data2MaiorQueData1(fDataI, fDataF, fHoraI, fHoraF)
{
	var dataI = fDataI.value;
	var dataF = fDataF.value;
	var horaI = fHoraI.value;
	var horaF = fHoraF.value;
	
	var isFinalDateSmallerThanInitialDate = true;
	var diaI =  dataI.substring(0,2);
	var mesI =  dataI.substring(3,5);
	var anoI =  dataI.substring(6,10);
	
	var diaF =  dataF.substring(0,2);
	var mesF =  dataF.substring(3,5);
	var anoF =  dataF.substring(6,10);
		
	if(anoF < anoI)
		isFinalDateSmallerThanInitialDate = false;
	
	if(anoF == anoI && mesF < mesI)
		isFinalDateSmallerThanInitialDate = false;
	
	if(anoF == anoI && mesF == mesI && diaF < diaI)
		isFinalDateSmallerThanInitialDate = false;

	if(anoF == anoI && mesF == mesI && diaF == diaI)//para datas iguais
	{		
		if(hora2MaiorQueHora1(fHoraI, fHoraF) == false)
		{			
			return false;
		}
		else
		{			
			return true;
		}			
	}
	
	if(isFinalDateSmallerThanInitialDate == false)
	{
		setError("A data final (" + dataF + ") deve ser maior ou igual a data inicial ("+dataI+").");		
		return false;
	}
	else
	{	
		return true;
	}
}


//function date2MaiorQueDate1(fDataI, fDataF)
function compareDate1WithDate2(fDataI,comparacao,canEquals, fDataF)
{
	var resultadoComparacao;
	var dataI = fDataI;
	var dataF = fDataF;

	var diaI =  dataI.substring(0,2);
	var mesI =  dataI.substring(3,5);
	var anoI =  dataI.substring(6,10);
	
	var diaF =  dataF.substring(0,2);
	var mesF =  dataF.substring(3,5);
	var anoF =  dataF.substring(6,10);
		
	var dateInicial = anoI + mesI + diaI;
	var dateFinal = anoF + mesF + diaF;
	
	if(parseInt(dateInicial) > parseInt(dateFinal)) 
	{
		resultadoComparacao =  1;
	}
	else
	{
		if(parseInt(dateInicial) < parseInt(dateFinal))
		{
			resultadoComparacao =  -1;
		}
		else
		{
			resultadoComparacao =  0;//iguais
		}
	}	
	if((canEquals == true) || (comparacao == '=='))
	{
		if(resultadoComparacao == 0)
		{
			return true;
		}		
	}

		if(comparacao == '<')
		{
			if(resultadoComparacao == -1)
			{
				return true;
			}
			else
			{
				return false;
			}
		}
		else
		{
			if(comparacao == '>')
			{
				if(resultadoComparacao == 1)
				{
					return true;
				}
				else
				{
					return false;
				}
			}
		}
						
}

function hora2MaiorQueHora1(fHoraI, fHoraF)
{	
	var auxHoraF = fHoraF.value;
	var auxHoraI = fHoraI.value;
	
	var isFinalHourSmallerThanInitialHour = true;
	
	var horaI =  auxHoraI.substring(0,2);
	var minI =  auxHoraI.substring(3,5);
	
	var horaF =  auxHoraF.substring(0,2);
	var minF =  auxHoraF.substring(3,5);
	
	if(horaF < horaI)	
		isFinalHourSmallerThanInitialHour = false;
	
	if(horaF == horaI && minF < minI)	
		isFinalHourSmallerThanInitialHour = false;
	
	if(horaF == horaI && minF == minI)		
		isFinalHourSmallerThanInitialHour = false;

	if(isFinalHourSmallerThanInitialHour == false)
	{		
		setError("A hora final (" + auxHoraF + ") deve ser maior ou igual a hora inicial ("+auxHoraI+").");
		return false;
	}
	else
	{
		return true;
	}
}

//fun�o provisoria telas de pesquia
function validaData(item)
{
	var anoLimiteInicial = 1800;
	var anoLimiteFinal	 = 2030;
	
	if (!validaCaracteres(item, "0123456789/"))
		return false;
	
	if (item.length < 10)
 		return false;
	
	if (item.substring(2,3) != "/" || item.substring(5,6) != "/")
		return false;
	
	var dd = Number(item.substring(0,2));
	var mm = Number(item.substring(3,5)-1);
	var aa = Number(item.substring(6,10));
	
	if (aa < anoLimiteInicial || aa > anoLimiteFinal)
		return false;
	
	var test = new Date(aa, mm, dd);
	
    if ( (validaAno(test.getYear()) != aa) || (mm != test.getMonth()) || (dd != test.getDate()) )
		return false;
	
	return true;
}

//fun�o provisoria telas de pesquia
function validaAno(number)
{
	/*
	verifica se ano menor que 1000
	para browser netscape por exemplo que retorna 101 para ano 2001
	*/
	return ((number < 1000) ? number + 1900 : number); 
}

function sumDays(dtStart, nDays)
{
	var day=0,month=0,year=0,aux=0,retorno = "";
	if (dtStart != "")
	{
		day = eval(Number(dtStart.substring(0,2)));
		month = eval(Number(dtStart.substring(3,5)));
		year = eval(Number(dtStart.substring(6,10)));
        aux = eval(Number(nDays));
		
		month = month - 1;
		day = day + aux;		
		birthday = new Date(year,month,day);

		day = birthday.getDate();
		month = birthday.getMonth() + 1;
		year = birthday.getYear();
		
		// usar linha abaixo qdo for Opera
		year = year +1900;
	
		retorno = (day < 10)?("0"+day.toString()+"/"):(day.toString()+"/");
		retorno += (month < 10)?("0"+month.toString()+"/"):(month.toString()+"/");
		retorno += year;
	}
	return retorno;
}

function validaCampoData(form,field)
{
	if (!validaData(field) && trim(field) != '')
	{
		form.focus();
		form.select();
		alert("Data inv�ida!");
		return false;
	}
}


function lastDay(date)
{
	var mes;

	mes = date.substring(3,5);
	if (mes == "02")
	{
		return 28;
	}
	else
	{
		if ((mes == "04") || (mes == "06") || (mes == "09") || (mes == "11"))
		{
			return 30;
		}
		else
		{
			return 31;
		}
	}
}

function dtFinalMaiorQueDtInicial(fDataI, fDataF)
{
	var dataI = fDataI.value;
	var dataF = fDataF.value;
	
	var isFinalDateSmallerThanInitialDate = true;
	var diaI =  dataI.substring(0,2);
	var mesI =  dataI.substring(3,5);
	var anoI =  dataI.substring(6,10);
	
	var diaF =  dataF.substring(0,2);
	var mesF =  dataF.substring(3,5);
	var anoF =  dataF.substring(6,10);

	if(anoF < anoI)
		isFinalDateSmallerThanInitialDate = false;
	
	if(anoF == anoI && mesF < mesI)
		isFinalDateSmallerThanInitialDate = false;
	
	if(anoF == anoI && mesF == mesI && diaF < diaI)
		isFinalDateSmallerThanInitialDate = false;

	if(isFinalDateSmallerThanInitialDate == false)
	{
		setError("A data final (" + dataF + ") deve ser maior ou igual a data inicial ("+dataI+").");		
		return false;
	}
	else
	{
		return true;
	}
}

