/* navegador de url com menu Dropdown; 
obj  = nome(id) do objeto dropdown 
modo = 0 -> exibe a url em outra janela
modo = 1 -> exibe a url na mesma janela

*/

function getCheckedRadio(obj){
var count = 0;
  for(i=0;i<obj.length;i++){
     if (obj[i].checked) count++;
  }
  return count;
}



function menuDropDown(obj, modo){
  var myindex = obj.selectedIndex
  
  if (obj.options[myindex].value !="") {
    if (modo ==0){
          window.open(obj.options[myindex].value,"","toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes");
    }else location.href = obj.options[myindex].value;
  }
}

/* Abre a caixa de adiçao nos favoritos; 
url    = endereço a adicionar
titulo = título referente a página
*/

function AddFavoritos(url, titulo){

  if((navigator.appName == "Microsoft Internet Explorer")&&(parseInt(navigator.appVersion) >=4)){
     window.external.AddFavorite(url,titulo);
  } 
}

/* Verifica se o caractere é um numero

*/

function isNum( caractere ){
  var strValidos = "0123456789"

  if ( strValidos.indexOf( caractere ) == -1 )
    return false;

  return true;
}

function isAlpha( caractere ){
  var strValidos = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"

  if ( strValidos.indexOf( caractere ) == -1 )
    return false;

  return true;
}

function isAlphaInv( caractere ){
  var strValidos = "'!@#$%¨&*()_-=+/"

  if ( strValidos.indexOf( caractere ) == -1 )
    return false;

  return true;
}


/* Entrada numérica

obj    = objeto do campo geralmente this
event  = manipulador de eventos - event 

modo de usar -> onkeypress="return onkeyInputNumber(this, event)" onBlur ="onBlurInputNumber (this)" 
*/

function onkeyInputNumber (obj, event){
 var BACKSPACE =  8;
 var ENTER     = 13;
 var key;
 var tecla;

 if(navigator.appName.indexOf("Netscape")!= -1)  
     tecla= event.which;     
 else
     tecla= event.keyCode;

 key = String.fromCharCode( tecla);
 if ( tecla == ENTER)
    return false;
 if ( tecla == BACKSPACE )
    return true;

 return ( isNum(key));   
}

function onBlurInputNumber (obj){
  var max = obj.value.length
  var teste = true

  for (i=0;i<max;i++){
    if ( isAlpha (obj.value.charAt(i)) ){
      teste = false
      break;
    }
  }

  if (!teste){
    alert ("Este campo não contém um valor numérico válido !")
    obj.focus();
  }

  return teste;
}

function TestIgual (obj1, obj2){

 return (obj1.value == obj2.value);
}


/*
BuildDays = Monta em um combobox a estrutura de dias conf. mes/ano


*/


function BuildDays(objdia, objmes ,objano) {

  timeA = new Date(objano.options[objano.selectedIndex].text, objmes.options[objmes.selectedIndex].value,1);
  timeDifference = timeA - 86400000;
  timeB = new Date(timeDifference);
  var daysInMonth = timeB.getDate();
   
  for (var i = 0; i < objdia.length; i++) {
    objdia.options[0] = null;
  }
  for (var i = 0; i < daysInMonth; i++) {
    objdia.options[i] = new Option(i+1);
  }
  objdia.options[0].selected = true;
}

function isValidDate(dateStr,msg) {
  /* Checks for the following valid date formats:
   DD/MM/YY   DD/MM/YYYY   DD-MM-YY   DD-MM-YYYY
  */
  var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/; // requires 4 digit year
  var matchArray = dateStr.match(datePat); // is the format ok?

  if (matchArray == null) {
    if (msg){
       alert(dateStr + " Formato inválido.");
    }
    return false;
  }
  
  day = matchArray[1]; // parse date into variables
  month = matchArray[3];
  year = matchArray[4];

  if (month < 1 || month > 12) { // check month range
    if (msg){
      alert("Mes deve estar entre 1 e 12.");
    }
    return false;
  }
  if (day < 1 || day > 31) {
    if (msg){
       alert("Dia deve estar entre 1 e 31.");
    }
    return false;
  }
  if ((month==4 || month==6 || month==9 || month==11) && day==31) {
    if (msg){
      alert("Mes "+month+" Não tem 31 dias");
    }
    return false;
  }
  if (month == 2) { // check for february 29th
    var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
    if (day>29 || (day==29 && !isleap)) {
      if (msg){
        alert("Fevereiro do ano " + year + " não possui " + day + " dias!");
      }
      return false;
    }
  }

 return true;
}


function isValidTime(timeStr) {
// Checks if time is in HH:MM:SS AM/PM format.
// The seconds and AM/PM are optional.

var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;

var matchArray = timeStr.match(timePat);
if (matchArray == null) {
alert("Time is not in a valid format.");
return false;
}
hour = matchArray[1];
minute = matchArray[2];
second = matchArray[4];

if (second=="") { second = null; }

if (hour < 0  || hour > 23) {
return false;
}

if (minute < 0 || minute > 59) {
  //alert ("Minute must be between 0 and 59.");
return false;
}

if ((second != null) && (second < 0 || second > 59)) {
  //alert ("Second must be between 0 and 59.");
return false;
}

return true;
}


function swapcolor(obj , oldcolor , newcolor){

  if (obj.style.bgcolor == oldcolor){
    obj.style.bgcolor = newcolor;
  }else if (obj.style.bgcolor == newcolor){
    obj.style.bgcolor = oldcolor;
  }
}

function limpa_string(S){
	// Deixa so' os digitos no numero
	var Digitos = "0123456789";
	var temp = "";
	var digito = "";
   	for (var i=0; i<S.length; i++){
      digito = S.charAt(i);
      if (Digitos.indexOf(digito)>=0){temp=temp+digito}
   	}
   return temp
}

function valida_CPF(s)
{
	var i;
	s = limpa_string(s);
	var c = s.substr(0,9);
	var dv = s.substr(9,2);
	var d1 = 0;
	for (i = 0; i < 9; i++)
	{
		d1 += c.charAt(i)*(10-i);
	}
        if (d1 == 0) return false;
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(0) != d1)
	{
		return false;
	}

	d1 *= 2;
	for (i = 0; i < 9; i++)
	{
		d1 += c.charAt(i)*(11-i);
	}
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(1) != d1)
	{
		return false;
	}
   
   return true;
}

function valida_CGC(s)
{
	var i;
	s = limpa_string(s);
	var c = s.substr(0,12);
	var dv = s.substr(12,2);
	var d1 = 0;
	for (i = 0; i < 12; i++)
	{
		d1 += c.charAt(11-i)*(2+(i % 8));
	}
        if (d1 == 0) return false;
        d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(0) != d1)
	{
		return false;
	}

	d1 *= 2;
	for (i = 0; i < 12; i++)
	{
		d1 += c.charAt(11-i)*(2+((i+1) % 8));
	}
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(1) != d1)
	{
		return false;
	}
        return true;
}


function VerificaEmail( mail) {
    //declaracao das variaveis
	var user="";
	var dominio="";
	var i=0;
	var testa="+)(*&%$#!+;='\/`~?<>"; 
	var c=0;
	var checkmail=true;
	var ponto=0;
	var j=0;
	var arroba=0;
	

	//***********testa caracteres invalidos na variavel mail**********
	for(c;c<mail.length;c++){
		for (j=0; j<testa.length;j++){
			if (testa.charAt(j)==mail.charAt(c)){
				checkmail=false;
				alert ("Caracteres invalidos no e-mail");
				return (false);
				}
			}
		}		
	//************ cria variavel user******************************* 
	if (checkmail!=false){
			for (i=0;i< mail.length;i++){
				if (mail.charAt(i)=="@"){
					break;}
				else{	
					user=user+mail.charAt(i);
					}
				}
	
			//************cria variavel dominio**************************
			for (i;i<mail.length;i++){
				if (mail.charAt(i)==""){
					break;}
				else{	
					dominio=dominio+mail.charAt(i);
					}
				}
					
				//***********testa validade da variavel dominio********************		
				for(c=0;c<dominio.length;c++){
					if (dominio.charAt(c)=="@"){
						arroba++;}
					if (dominio.charAt(c)=="."){
						ponto++;}}
					if ((ponto<1)||(ponto>4)){
						alert("E-mail inválido");
						return (false);
						}
					if (arroba != 1.0){
						alert("E-mail inválido");
						return (false);
						};
				}			

	return (true);		
}
