//A partir de um radio, quando este é selecionado,
//os campos text do form que não contém o nome igual
//ao value do radio selecionado são desabilitados, 
//o campo texto que tiver o nome do value é habilitado.
//Ainda limpa os texts que são desabilitados

function selectEdit(who)
{
  var  theName = who.name;
  var theForm  = who.form;
  var radio    = theForm[theName];
  var i;
  for (i=0; i < theForm.elements.length; i++)
  {
    var elem = theForm.elements[i]; 
    if ((elem.type == "radio") && (elem.name == theName))
      if(elem.checked)
        theForm[elem.value].disabled = false;
      else
      {
        theForm[elem.value].value    = "";
        theForm[elem.value].disabled = true;
      }
  } 
}

var qtde = 0

var arrInput = new Array(0);
var arrInputValue = new Array(0);

var arrInputb = new Array(0);
var arrInputValueb = new Array(0);

function addInput() {
  arrInput.push(arrInput.length);
  arrInputValue.push("");

  arrInputb.push(arrInputb.length);
  arrInputValueb.push("");

  display();
  contador();
}

function display() {
  document.getElementById('parah').innerHTML="";
  for (intI=0;intI<arrInput.length;intI++) {
    document.getElementById('parah').innerHTML+=createInput(arrInput[intI], arrInputValue[intI]);
  }

  document.getElementById('parahb').innerHTML="";
  for (intJ=0;intJ<arrInputb.length;intJ++) {
    document.getElementById('parahb').innerHTML+=createInputb(arrInputb[intJ], arrInputValueb[intJ]);
  }

}

function saveValue(intId,strValue) {
  arrInputValue[intId]=strValue;
}  

function saveValueb(intId,strValue) {
  arrInputValueb[intId]=strValue;
} 

function createInput(id,value) {
  return "<input type='text' name='contrib_esp"+ id +"' size='21' id='test"+ id +"' style='background-color: #E9E9E9; font-family: Arial; font-size: 10 pt; color: #666666; font-weight: bold; border: 1 solid #666666' onChange='javascript:saveValue("+ id +",this.value)' value='"+ value +"' onBlur='parseelement(this)'><br>";
}

function createInputb(id,value) {
  return "<input type='text' name='data_esp"+ id +"' size='10' id='testb "+ id +"' style='background-color: #E9E9E9; font-family: Arial; font-size: 10 pt; color: #666666; font-weight: bold; border: 1 solid #666666' onChange='javascript:saveValueb("+ id +",this.value)' value='"+ value +"' onKeyUp='javascript:formata(this);' OnFocusOut='validarData(this);'><br>";}

function contador(){
	qtde = qtde + 1;
   document.getElementById('parah').innerHTML+="<input type='hidden' name='qtde' value='"+ qtde +"'>";
}

  var wd
  function parseelement(thisone)
  {    
   wd="w"
   var tempnum=thisone.value
   for (i=0;i<tempnum.length;i++)
   {
    if (tempnum.charAt(i)==",")
    {
     wd="d"
     break
    }
   }
   if (wd=="w")
    thisone.value=tempnum+",00"
   else
   {
    if (tempnum.charAt(tempnum.length-2)==",")
    {
     thisone.value=tempnum+"0"
    }
    else if (tempnum.charAt(tempnum.length-1)==",")
    {
     thisone.value=tempnum+"00"
    }
   }
  }


function formata(val)
{
   	var pass = val.value;
	var expr = /[0123456789]/;
		
	for(i=0; i<pass.length; i++){
		// charAt -> retorna o caractere posicionado no índice especificado
		var lchar = val.value.charAt(i);
		var nchar = val.value.charAt(i+1);
	
		if(i==0){
		   // search -> retorna um valor inteiro, indicando a posição do inicio da primeira
		   // ocorrência de expReg dentro de instStr. Se nenhuma ocorrencia for encontrada o método retornara -1
		   // instStr.search(expReg);
		   if ((lchar.search(expr) != 0) || (lchar>3)){
			  val.value = "";
		   }
		   
		}else if(i==1){
			   
			   if(lchar.search(expr) != 0){
				  // substring(indice1,indice2)
				  // indice1, indice2 -> será usado para delimitar a string
				  var tst1 = val.value.substring(0,(i));
				  val.value = tst1;				
 				  continue;			
			   }
			   
			   if ((nchar != '/') && (nchar != '')){
				 	var tst1 = val.value.substring(0, (i)+1);
				
					if(nchar.search(expr) != 0) 
						var tst2 = val.value.substring(i+2, pass.length);
					else
						var tst2 = val.value.substring(i+1, pass.length);
	
					val.value = tst1 + '/' + tst2;
			   }

		 }else if(i==4){
			
				if(lchar.search(expr) != 0){
					var tst1 = val.value.substring(0, (i));
					val.value = tst1;
					continue;			
				}
		
				if	((nchar != '/') && (nchar != '')){
					var tst1 = val.value.substring(0, (i)+1);

					if(nchar.search(expr) != 0) 
						var tst2 = val.value.substring(i+2, pass.length);
					else
						var tst2 = val.value.substring(i+1, pass.length);
	
					val.value = tst1 + '/' + tst2;
				}
   		  }
		
		  if(i>=6){
			  if(lchar.search(expr) != 0) {
					var tst1 = val.value.substring(0, (i));
					val.value = tst1;			
			  }
		  }
	 }
	
     if (pass.length>10){ 
                validaData(pass); 
     } 

     if(pass.length>10)
		val.value = val.value.substring(0, 10); 	
		return true;
}



function validarData(campo) {
    var expReg  = /^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/[1-2][0-9]\d{2})$/;
    var msgErro = 'Formato inválido de data.';
    
dia_campo = (campo.value.substring(0,2)); 
mes_campo = (campo.value.substring(3,5)); 
ano_campo = (campo.value.substring(6,10));     
    
data_campo = ano_campo+mes_campo+dia_campo
    
hoje = new Date()
dia = hoje.getDate()
mes = (hoje.getMonth() + 1)
ano = hoje.getYear()
if (dia < 10)
dia = "0" + dia
if (mes < 10)
mes = "0" + mes
if (ano < 2000)
ano = "19" + ano

data_hj = ano+mes+dia
   
    if ((campo.value.match(expReg)) && (campo.value!='')) {
		//if ((dia_campo < dia) || (mes_campo < mes) || (ano_campo < ano)) {
		  if (data_campo < data_hj) {
			//alert('Data menor que o dia de hoje!');
			campo.focus(msgErro);
        	//return (false);
			}	      
		 //alert('Data válida'); 
    } else {
        alert(msgErro);
        campo.focus();
        return (false);
    } 
}
