/*
**********************************************************
function IsValid(Source,Valid)
function filled( obj, txt, anchor )
function selected( obj, txt, anchor )
function cknome( obj, txt, anchor )
function cknum( obj, txt, anchor )
function ckfloat( obj, txt, anchor )
function ckpercent( obj, txt, anchor )
function ckemail( obj, txt, anchor )
function ckddd( obj, txt, anchor )
function cktel( obj, txt, anchor )
function ckcpf( obj, txt, anchor )
function ckcep( obj, txt, anchor )
function ckdata( obj1, obj2, obj3, txt, anchor )
function cksdata( obj, txt, anchor )
function cksmes( obj, txt, anchor )
function ckano( obj, txt, anchor )
function ckradio( obj, txt, anchor )
function ckchecklist_pelomenosum( txt, obj1, obj2, obj3, ... )
function ckchecklist( txt, min, obj1, obj2, obj3, ... )
function noempty( obj )
function geracheck( obj )
function geravb( obj )
**********************************************************
*/

//**********************************************************************
// VERIFICA SE O NUMERO INDICA UM CPF
// PARAMETROS:
// Source -> TEXTO ORIGINAL
// RETORNO:
// TRUE SE E' UM CPF
// DEPENDENCIAS:
// IsInteger
// AUTOR:
// Sergio Araripe
//**********************************************************************
function IsCPF(Source)
{
	var Total=0;			//SOMA DOS DIGITOS
	var Digito1=0;			//DIGITO INFERIOR
	var Digito2=0;			//DIGITO SUPERIOR
	var Texto="";			//VARIAVEL DE TRABALHO
	
	Texto=Source;
	if (Texto!="")
	{//EXISTE VALOR
		if (Texto.length!=11)
		{// TAMANHO IMPROPRIO
			return(false);
		}//if
		if (!IsInteger(Texto))
		{// EXISTEM CARACTERES NAO NUMERICOS
			return(false);
		}//if
		Total=Texto.charAt(9)*2+Texto.charAt(8)*3+Texto.charAt(7)*4+Texto.charAt(6)*5+Texto.charAt(5)*6+Texto.charAt(4)*7+Texto.charAt(3)*8+Texto.charAt(2)*9+Texto.charAt(1)*10+Texto.charAt(0)*11;
		Digito1=Total%11;
		if (Digito1<=1)
		{//DIGITO PREJUDICADO
			Digito1=0;
		}//if
		else
		{//COMPLEMENTO
			Digito1=11-Digito1;
		}//else
		Total=Texto.charAt(8)*2+Texto.charAt(7)*3+Texto.charAt(6)*4+Texto.charAt(5)*5+Texto.charAt(4)*6+Texto.charAt(3)*7+Texto.charAt(2)*8+Texto.charAt(1)*9+Texto.charAt(0)*10;
		Digito2=Total%11;
		if (Digito2<=1)
		{//DIGITO PREJUDICADO
			Digito2=0;
		}//if
		else
		{//COMPLEMENTO
			Digito2=11-Digito2;
		}//else
		if ((Digito2!=Texto.charAt(9)) || (Digito1!=Texto.charAt(10)))
		{//DIGITO NAO CONFERE
			return(false);
		}//if
	}//if
	return(true);
}

//**********************************************************************
// VERIFICA SE E' UMA DATA NO FORMATO DD/MM/AAAA
// PARAMETROS:
// Source -> TEXTO A SER TESTADO
// RETORNO:
// TRUE SE FOR UMA DATA VALIDA
// DEPENDENCIAS:
// IsInteger
// AUTOR:
// Sergio Araripe
// Revisado por Marcelo Ramos
//**********************************************************************
function IsDDMMYYYY(Source)
{
	var strDia="";		//DIA
	var strMes="";		//MES
	var strAno="";		//ANO
	var Dia=0;			//DIA
	var Mes=0;			//MES
	var Ano=0;			//ANO
	var Texto="";		//VALOR A SER TESTADO
	var fields="";
		
	Texto=Source;

	if (Texto!="")
	{//EXISTE VALOR
		fields = Texto.split( '/' );
		strDia=fields[0];
		if (!(IsInteger(strDia)))
		{// DIA INVALIDO
			return(false);
		}//if
		strMes=fields[1];
		if (!(IsInteger(strMes)))
		{// MES INVALIDO
			return(false);
		}//if
		strAno=fields[2];
		if (!(IsInteger(strAno)) || (strAno.length>4))
		{// ANO INVALIDO
			return(false);
		}//if
		Dia=parseInt(strDia,10);
		Mes=parseInt(strMes,10);
		Ano=parseInt(strAno,10);
		if ((Dia<1) || (Dia>31))
		{//FAIXA DO DIA INVALIDO
			return(false);
		}//if
		if ((Mes<1) || (Mes>12))
		{//FAIXA DO MES INVALIDA
			return(false);
		}//if
		if ((Dia>=31) && ((Mes==4) || (Mes==6) || (Mes==9) || (Mes==11)))
		{//DIA INVALIDO PARA ESTE MES
			return(false);
		}//if
		if (Mes==2)
		{//MES DE FEVEREIRO
			if (Dia>=30)
			{//DIA INVALIDO PARA FEVEREIRO
				return(false);
			}//if
			if ((Dia==29) && (((Ano % 4) != 0) || (((Ano % 100) == 0) && ((Ano % 400) != 0))))
			{//NAO E' BISSEXTO
				return(false);
			}//if
		}//if
	}//if
	return(true);
}


//**********************************************************************
// VERIFICA SE E' UMA DATA NO FORMATO DD/MM/AAAA
// PARAMETROS:
// Source -> TEXTO A SER TESTADO
// RETORNO:
// TRUE SE FOR UMA DATA VALIDA
// DEPENDENCIAS:
// IsInteger
// AUTOR:
// Sergio Araripe
// Revisado por Marcelo Ramos
//**********************************************************************
function IsMMYYYY(Source)
{
	var strDia="";		//DIA
	var strMes="";		//MES
	var strAno="";		//ANO
	var Dia=0;			//DIA
	var Mes=0;			//MES
	var Ano=0;			//ANO
	var Texto="";		//VALOR A SER TESTADO
	var fields="";
		
	Texto=Source;

	if (Texto!="")
	{//EXISTE VALOR
		fields = Texto.split( '/' );
		strMes=fields[0];
		if (!(IsInteger(strMes)))
		{// MES INVALIDO
			return(false);
		}//if
		strAno=fields[1];
		if (!(IsInteger(strAno)) || (strAno.length>4))
		{// ANO INVALIDO
			return(false);
		}//if
		Mes=parseInt(strMes,10);
		Ano=parseInt(strAno,10);
		if ((Mes<1) || (Mes>12))
		{//FAIXA DO MES INVALIDA
			return(false);
		}//if
	}//if
	return(true);
}



//**********************************************************************
// VERIFICA SE TODOS OS CARACTERES SAO NUMEROS
// PARAMETROS:
// Source -> TEXTO A SER TESTADO
// RETORNO:
// TRUE SE TEXTO SO POSSUI CARACTERES VALIDOS
// DEPENDENCIAS:
// IsValid
// AUTOR:
// Sergio Araripe
//**********************************************************************
function IsInteger(Source)
{
	return(IsValid(Source,"0123456789"));
}


function IsFloat(Source)
{
	return(IsValid(Source,"0123456789.,"));
}

//**********************************************************************
// VERIFICA SE E' UM NOME VALIDO
// PARAMETROS:
// Source -> VALOR A SER VERIFICADO
// RETORNO:
// TRUE SE E' UM NOME VALIDO
// AUTOR:
// Sergio Araripe
//**********************************************************************
function IsName(Source)
{
	var Texto="";
	
	Texto=Source;
	if (Texto!="")
	{//EXISTE VALOR
		if (Texto.length<3)
		{// NOME MUITO PEQUENO
			return(false);
		}//if
		if ((Texto.charAt(0)==Texto.charAt(1)) && (Texto.charAt(1)==Texto.charAt(2)))
		{//TRES PRIMEIRAS LETRAS IGUAIS, NAO E' UM NOME
			return(false);
		}//if
		if( IsInteger(Source) )
		{// E' NUMERO E NAO NOME - Marcelo Ramos
			return(false);
		}
	}//if
	return(true);
}


//**********************************************************************
// VERIFICA SE O NUMERO E' UM TELEFONE
// PARAMETROS:
// Source -> VALOR A SER TESTADO
// RETORNO:
// TRUE SE E' UM TELEFONE
// DEPENDENCIAS:
// IsInteger
// AUTOR:
// Sergio Araripe
//**********************************************************************
function IsTelephone(Source)
{
	var Texto="";			//VARIAVEL DE TRABALHO
	
	Texto=Source;
	if (Texto!="")
	{//EXISTE VALOR
		if (Texto.length<7)
		{// TAMANHO IMPROPRIO
			return(false);
		}//if
		if (Texto.charAt(0)=="0")
		{// NAO PODE COMECAR POR ZERO
			return(false);
		}//if
		if (!IsInteger(Texto))
		{// TEM CAMPOS NAO NUMERICOS
			return(false);
		}//if
	}//if
	return(true);
}

//**********************************************************************
// INDICA SE TODOS OS CARACTERES DE UM TEXTO PERTENCEM A UMA LISTA
// VALIDA
// PARAMETROS:
// Source -> TEXTO ORIGINAL
// Filter -> TEXTO COM TODOS OS CARACTERES VALIDOS
// RETORNO:
// TRUE SE TEXTO SO POSSUI CARACTERES VALIDOS
// AUTOR:
// Sergio Araripe
//**********************************************************************
function IsValid(Source,Valid)
{
	var I=0;			//CONTADOR DE USO GERAL
	var Texto="";		//VALOR A SER TESTADO
	var Lista="";		//LISTA DE VALORES VALIDOS
	
	Texto=Source;
	Lista=Valid;
	for (I=0;I<Lista.length;I++)
	{//CAMINHA EM CADA CARACTERE DO FILTRO
		if (Lista.indexOf(Texto.charAt(I),0)==-1)
		{//ACHOU UM CARACTERE INVALIDO
			return(false);
		}//if
	}//for
	return(true);
}

function filled( obj, txt, anchor )
{
	if( obj.value == '' )
	{
		obj.focus();
//		document.location.replace( '#' + anchor );
		alert( 'O campo "' + txt + '" é de preenchimento obrigatório!' );
		return 0;
	}
	return 1;
}


function selected( obj, txt, anchor )
{
	if( obj.selectedIndex == 0 )
	{
		obj.focus();
		document.location.replace( '#' + anchor );
		alert( 'O campo "' + txt + '" é de preenchimento obrigadorio!' );
		return 0;
	}
	return 1;
}

function cknome( obj, txt, anchor )
{
	if( !IsName( obj.value ) )
	{
		obj.focus();
//		document.location.replace( '#' + anchor );
		alert( 'O campo "' + txt + '" deve ser um nome!' );
		return 0;
	}
	return 1;
}

function cknum( obj, txt, anchor )
{
	if( !IsInteger( obj.value ) )
	{
		obj.focus();
//		document.location.replace( '#' + anchor );
		alert( 'O campo "' + txt + '" deve ser numérico!' );
		return 0;
	}
	return 1;
}

function ckfloat( obj, txt, anchor )
{
	var val = obj.value;

	val = troca( val, ',', '.' );
	if( !IsFloat( val ) )
	{
		obj.focus();
//		document.location.replace( '#' + anchor );
		alert( 'O campo "' + txt + '" deve ser numérico!' );
		return 0;
	}
	return 1;
}

function ckpercent( obj, txt, anchor )
{
	if( obj.value == '' ) return 1;
	if( IsFloat( obj.value ) )
	{
		f = parseFloat( obj.value );
		if( f >= 0.0 && f <= 100.0 )
			return 1;
	}
	obj.focus();
	alert( 'O campo "' + txt + '" deve ser um percentual válido!' );
	return 0;
}

function ckemail( obj, txt, anchor )
{
	var val;
	val = obj.value;
	if( val == '' ) { return 1; }
	if( obj.value.indexOf( '@' ) == -1 || obj.value.indexOf( '.' ) == -1 )
	{
		obj.focus();
//		document.location.replace( '#' + anchor );
		alert( 'O campo "' + txt + '" deve ser um E-mail válido!' );
		return 0;
	}
	return 1;
}

function ckcep( obj, txt, anchor )
{
	var val, sub, i, res, c;
	val = obj.value;
	if( val == '' ) { return 1; }

	if( !IsValid(val,"0123456789-") )
	{
		obj.focus();
		alert( 'O campo "' + txt + '" deve ser número de CEP válido' );
		return 0;
	}

	res = '';
	for( i = 0 ; i < val.length ; i++ )
	{
		c = val.charAt(i);
		if( c >= "0" && c <= "9" ) { res = res + c; }
	}
	sub = res.substr( 0, res.length-3 ) + '-' + res.substr( res.length-3, 3 );
	if( !IsValid(res,"0123456789-") || res.length != 8 )
	{
		obj.focus();
//		document.location.replace( '#' + anchor );
		alert( 'O campo "' + txt + '" deve ser número de CEP válido' );
		return 0;
	}
	obj.value = sub;
	return 1;
}



function ckddd( obj, txt, anchor )
{
	var val, sub;
	val = obj.value;
	if( val == '' ) { return 1; }

	if( !cknum( obj, txt, anchor ) ) return 0;
	sub = val.substr( val.length-2, 2 );
	if( parseInt(sub) < 10 )
	{
		obj.focus();
//		document.location.replace( '#' + anchor );
		alert( 'O campo "' + txt + '" deve ser número DDD válido ( Ex: 11 )' );
		return 0;
	}
	obj.value = sub;
	return 1;
}

function cktel( obj, txt, anchor )
{
	var val, sub, i, res, c;
	val = obj.value;
	if( val == '' ) { return 1; }

	if( !IsValid(val,"0123456789-") )
	{
		obj.focus();
		alert( 'O campo "' + txt + '" deve ser número de telefone válido' );
		return 0;
	}

	res = '';
	for( i = 0 ; i < val.length ; i++ )
	{
		c = val.charAt(i);
		if( c >= "0" && c <= "9" ) { res = res + c; }
	}
	sub = res.substr( 0, res.length-4 ) + '-' + res.substr( res.length-4, 4 );
	if( !IsValid(res,"0123456789-") || res.length < 7 || res.length > 8 )
	{
		obj.focus();
//		document.location.replace( '#' + anchor );
		alert( 'O campo "' + txt + '" deve ser número de telefone válido' );
		return 0;
	}
	obj.value = sub;
	return 1;
}

function ckcpf( obj, txt, anchor )
{
	var val, sub, i, res, c;
	val = obj.value;
	if( val == '' ) { return 1; }

	if( !cknum( obj, txt, anchor ) ) return;
	res = '';
	for( i = 0 ; i < val.length ; i++ )
	{
		c = val.charAt(i);
		if( c >= "0" && c <= "9" ) { res = res + c; }
	}
	if( !IsCPF(res) )
	{
		obj.focus();
//		document.location.replace( '#' + anchor );
		alert( 'O campo "' + txt + '" deve ser número CPF válido' );
		return 0;
	}
	obj.value = res;
	return 1;
}


function ckdata( obj1, obj2, obj3, txt, anchor )
{
	if( !IsDDMMYYYY( obj1.value + '/' + obj2.value + '/' + obj3.value ) )
	{
		obj1.focus();
		alert( 'O campo "' + txt + '" deve ser uma data válida!' );
		return 0;
	}
	return 1;
}


function ckano( obj, txt, anchor )
{
	var ano = parseInt( obj.value );
	if ( ano < 1900 || ano > 2010 )
	{
		obj.focus();
		alert( 'O campo "' + txt + '" deve ser um ano válido!' );
		return 0;
	}
	return 1;
}


function cksdata( obj, txt, anchor )
{
	if( obj.value == '' ) return 1;
	if( obj.value.lastIndexOf( '/' ) == -1 || !IsDDMMYYYY( obj.value ) )
	{
		obj.focus();
		alert( 'O campo "' + txt + '" deve ser uma data válida!' );
		return 0;
	}
	return 1;
}

function cksmes( obj, txt, anchor )
{
	if( obj.value == '' ) return 1;
	if( obj.value.lastIndexOf( '/' ) == -1 || !IsMMYYYY( obj.value ) )
	{
		obj.focus();
		alert( 'O campo "' + txt + '" deve ser uma data válida!' );
		return 0;
	}
	return 1;
}


function ckradio( obj, txt, anchor )
{
	var i, s = 0, o;
	for( i = 0 ; i < obj.length ; i++ )
	{
		o = obj[i];
		if( o.checked ) s++;
	}
	
	if( s == 0 )
	{
		obj[0].focus();
		document.location.replace( '#' + anchor );
		alert( 'O campo "' + txt + '" Deve ser assinalado!' );
		return 0;
	}
	return 1;
}


function ckchecklist_pelomenosum( txt )
{
	var i, s = 0, o;

	var obj = ckchecklist_pelomenosum.arguments;
	for( i = 1 ; i < obj.length ; i++ )
	{
		o = obj[i];
		if( o.checked ) s++;
	}
	
	if( s == 0 )
	{
		obj[1].focus();
		alert( 'Alguma opção em "' + txt + '" deve ser assinalada!' );
		return 0;
	}
	return 1;
}

function checkmin( num, lab )
{
	var obj = checkmin.arguments;
	var i, count = 0;

	for( i = 2 ; i < obj.length ; i++ )
	{
		if( obj[i].checked ) count++;
	}
	if( count != num )
	{
		obj[2].focus();
		if( num == 1 )
			alert( 'Você deve escolher pelo menos 1 opção entre:`\n' + lab );
		else
			alert( 'Você deve escolher pelo menos ' + num + ' opções entre:\n' + lab );
		return 0;
	}
	return 1;
}

function noempty( obj )
{
	var el = obj.elements;
	var i, out, sep;

	for( i = 0 ; i < el.length ; i++ )
	{
		if( (el[i].type == 'text' || el[i].type == 'textarea') && el[i].value == '' ) 
			el[i].value = ' ';
	}
}



function geracheck( obj )
{
	var el = obj.elements;
	var i, out, sep;
	var lastname = 'asdlkfjasdfa';

	out = '<br clear=all>if( ';
	sep = '';
	
	for( i = 0 ; i < el.length ; i++ )
	{
		if( lastname != el[i].name )
		{
			aname = el[i].name.split('_');
			sname = aname.join(' ');
			if( el[i].type == 'select-one' ) 
				out += sep + "!selected( document.frm." + el[i].name + ', "' + sname + '", "" )<br>\n';
			else if( el[i].type == 'radio' )
				out += sep + "!ckradio( document.frm." + el[i].name + ', "' + sname + '", "" )<br>\n';
			else if( el[i].type == 'checkbox' )
			{  }
			else if( el[i].type == 'hidden' )
			{  }
			else if( el[i].type == 'submit' )
			{  }
			else if( el[i].type == 'reset' )
			{  }
			else 
				out += sep + "!filled( document.frm." + el[i].name + ', "' + sname + '", "" )<br>\n';
			sep = '|| ';
		}
		lastname = el[i].name;
	}
	out += ')<br>\n{<br>\n		event.returnValue = false;<br>\n		return;<br>\n	}<br>\n';

	document.body.insertAdjacentHTML("beforeEnd", out );
}


function geravb( obj )
{
	var el = obj.elements;
	var i, out, sep;
	var lastname = 'asdlkfjasdfa';

	out = new Array;
	tab = new Array;
	names = new Array;
	for( j = i = 0 ; i < el.length ; i++ )
	{
		if( lastname != el[i].name )
		{
			aname = el[i].name.split('_');
			sname = aname.join(' ');
			if( el[i].type == 'submit' )
			{  }
			else if( el[i].type == 'reset' )
			{  }
			else 
			{
				out[j] = el[i].name + ' = Request.Form("' + el[i].name + '")\n';
				tab[j] = 'Tab = Tab & "&lt;tr&gt;&lt;td&gt;' + sname + '&lt;/td&gt;&lt;td&gt;" & ' + el[i].name +  ' & 	"&lt;/td&gt;&lt;/tr&gt;" & nl\n';
				names[j++] = el[i].name;
			}
		}
		lastname = el[i].name;
	}
	document.body.insertAdjacentHTML("beforeEnd", '<br clear=all>' + out.join( '<br>' ) + '<br><br><br>( ' + names.join( ', ' ) + ' )<br><br><br>' +  '<br><br><br>( \'" &' + names.join( ' & "\', \'" & ' ) + ' & "\' )<br><br><br>' +  tab.join( '<br>' ) + '<br><br><br>' + names.join( '<br>' ));
}

function outroscheck( obj1, id )
{
	if( obj1.type == 'select' )
	{
		return obj1.selectedIndex == (id-1);
	}

	if( obj1.length > 0 )
	{
		id = id-1 > obj1.length ? obj1.length-1 : id-1;
    	obj1 = obj1[id];
	}
	return obj1.checked;
}

function outrosclick( obj1, obj2, id )
{
	var ck;

	if( obj1.type == 'select' )
	{
		obj2.style.display = obj1.selectedIndex == (id-1) ? 'Block' : 'none';
		return;
	}
	if( obj1.length > 0 )
	{
		id = id-1 > obj1.length ? obj1.length-1 : id-1;
    	obj1 = obj1[id];
	}

	ck = obj1.checked;
	obj2.style.display = ck ? 'Block' : 'none';
}

function troca( str, val, novo )
{
	var j;
	var len = val.length;
	if( (j=str.indexOf(val)) != -1 )
		str = str.substr( 0, j) + novo + str.substr( j+len, str.length-j-1 );
	return str;
}

function poedata()
{
   TDay = new Array('Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sabado');
   TMonth = new Array('Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro');
   TDate = new Date();
   CurYear = TDate.getYear();
   CurMonth = TDate.getMonth();
   CurDayOw = TDate.getDay();
   CurDay= TDate.getDate();
   TheDate = TDay[CurDayOw] + ', ';
   TheDate += CurDay + ' de ';
   TheDate += TMonth[CurMonth] + ' de ';
   TheDate += ((CurYear%1900)+1900);
   document.write( TheDate );
}

function selectset( o, v )
{
	for( i = 0 ; i < o.options.length ; i++ )
		if( o.options[i].text == v || o.options[i].value == v ) 
		{
			o.selectedIndex = i;
			return;
		}
}
