//É InternetExplorer
ie = (document.all)? true:false

//marca linha de tabela
var selecao = new Array();
var preEl = new Array() ;
var orgBColor = new Array();
var orgTColor = new Array();
function selecaoTR(event,linha,multi_select,key){  
  var backColor = 'c9cc99';
	var textColor = '';
  //var key = event; //(ie?event.keyCode:event.which);
  //var src = event.srcElement||event.target;	
  var el = document.getElementById('linha'+linha);//src.parentElement;
	if(!event.ctrlKey) {
		if(selecao.length>1){
  	  for (var i = 0; i < selecao.length; i++) {
        preEl[i].bgColor=orgBColor[i]; 
        try{ChangeTextColor(preEl[i],orgTColor[i]);}catch(e){;}
		  }
      selecao = new Array();
      preEl = new Array() ;
      orgBColor = new Array();
      orgTColor = new Array();
		}
	  multi_select=1;
	}
  if(multi_select==1 && typeof(preEl[0])!='undefined') {
    preEl[0].bgColor=orgBColor[0]; 
    try{ChangeTextColor(preEl[0],orgTColor[0]);}catch(e){;}
	  selecao.splice(0, 1);
		preEl.splice(0, 1);
	  orgBColor.splice(i, 1);
  	orgTColor.splice(i, 1);
  } 
	else{
  	for (var i = 0; i < selecao.length; i++) {
  	  if (selecao[i] == key) {
         preEl[i].bgColor=orgBColor[i]; 
         try{ChangeTextColor(preEl[i],orgTColor[i]);}catch(e){;}
  			 selecao.splice(i, 1);
  			 preEl.splice(i, 1);
  			 orgBColor.splice(i, 1);
  			 orgTColor.splice(i, 1);
  			 return;
  		}
  	}
	}
  if (selecao.length<multi_select){
    orgBColor.push(el.bgColor);
    orgTColor.push(el.style.color);
    selecao.push(key);
    preEl.push(el); 

    el.bgColor=backColor;
    try{ChangeTextColor(el,textColor);}catch(e){;}
  }
  else
	{
	   alert('Selecione no máximo '+multi_select+' linhas.');
	}	
}

function ChangeTextColor(a_obj,a_color){  
  for (i=0;i<a_obj.cells.length;i++){
  a_obj.cells(i).style.color=a_color; 
  }
}

//click no botao alterar/excluir				
function check_selecao(oBotao) {
	if (selecao.length==0) {
	  alert('Por favor, selecione um registro clicando com o botão do mouse.');
		return false;
	} 
	if ((oBotao.name=='btnEXC')&&(!confirm('Confirma exclusão do registro selecionado?'))) {
		return false;
	} 
	return true;
}
				
//Verifica ser todos os text notnull não estao nulos
function verificaNotNull (form) {
  for (i=0;i<form.length;i++) {
	  if (typeof(form.elements[i].notnull)!="undefined"){
		   if (form.elements[i].value.length==0) {
		      alert('O campo ['+form.elements[i].notnull+'] é de preenchimento obrigatório.');
  	      form.elements[i].focus();
			    return false;
			 }
		}
  }
	return true;
} 

function submit_form(oBotao) {
  form = oBotao.form;
	form.btnAction.value = oBotao.name;  
  if (oBotao.name=='btnSave'&&!verificaNotNull(form)) return false; 
  if (oBotao.name=='btnCancel') form[form.name+'_sess_mode'].value = 'cancel';
	form.submit();
}


//*********** Inicio das funcoes de controle do lookup
//Esta função move uma entrada da lista de todas as relações possíveis para a lista das "Atribu-Relações"
function incluir(nmTablename,multi_select) {

    var i = 0;
    var name1 = "atr_"+nmTablename;
    var name2 = "pos_"+nmTablename;
    var assignedRelations;
    var possibleRelations;
		var texto = '';
		var valor = '';
		var TemCampo = false;
		var TemValor = false;

    //comece um ponteiro às duas listas
    while (i < document.forms[0].elements.length) {
        if (! document.forms[0].elements[i].name) { //o fieldset-Tag não tem nenhum nome
            i++;
            continue;
        } else if (document.forms[0].elements[i].name == name1) {
            assignedRelations = document.forms[0].elements[i];
        } else if (document.forms[0].elements[i].name == name2) {
            possibleRelations = document.forms[0].elements[i];
            if (possibleRelations.options.selectedIndex == -1)
        			 return;
        }
        elementName = document.forms[0].elements[i].name;

        if (elementName.indexOf(nmTablename) == 0) {
					 TemCampo = true;
					 if (document.forms[0].elements[i].value != '') TemValor = true;
      		 texto +=  document.forms[0].elements[i].value+' ¨ ';
      		 valor +=  document.forms[0].elements[i].value+'¨';
					 document.forms[0].elements[i].value = document.forms[0].elements[i].defaultValue;
				}
        i++;
    }
		if ((TemCampo)&&(!TemValor)) return;

    texto = texto.slice(0,texto.length-3); //delete the last ;
    valor = valor.slice(0,valor.length-1); //delete the last ;
    if (TemCampo){
      texto = ':: '+texto;
      valor = ':: '+valor;
		}
    //encontre a primeira entrada selecionada
    var index = possibleRelations.options.selectedIndex;
    if (index == -1) return;

		for (var i = 0; i < possibleRelations.options.length; i++) {   
  		if (possibleRelations.options[i].selected){		
        var entry = possibleRelations.options[i];
				
        if (entry.value =='') return;
			
        //adicione o elemento ao seleção-campo de AssigendRelations
        var newEntry = new Option(entry.text+texto, entry.value+valor,false, false);
        assignedRelations.options[assignedRelations.options.length] = newEntry;
      
        //apage o elemento do seleção-campo de PossibleRelations
    		if(multi_select==0){
           possibleRelations.options[i] = null;
					 i--;
    		}
			}
		}
		if(multi_select==0) possibleRelations.selectedIndex = -1;
		sortSelect(assignedRelations);
}

//Esta função move uma entrada das "Atribu-Relações" alista à lista de todas as relações possíveis
function remover(nmTablename,multi_select) {

    var i = 0;
		var j = 0;
    var name1 = "atr_"+nmTablename;
    var name2 = "pos_"+nmTablename;
    var assignedRelations;
    var possibleRelations;

    //comece um ponteiro às duas listas
    while (i < document.forms[0].elements.length) {
        if (! document.forms[0].elements[i].name) { //o fieldset-Tag não tem nenhum nome
            i++;
            continue;
        } else if (document.forms[0].elements[i].name == name1) {
            assignedRelations = document.forms[0].elements[i];
        } else if (document.forms[0].elements[i].name == name2) {
            possibleRelations = document.forms[0].elements[i];
        }
        i++;
    }

    //encontre a entrada selecionada
    var index = assignedRelations.options.selectedIndex;
    if (index == -1) return;

		for (var x = 0; x < assignedRelations.options.length; x++) {   
  		if (assignedRelations.options[x].selected){		
        var entry = assignedRelations.options[x];
    
    		var texto = entry.text;
    		textoList = texto.split(':: ');
    		if (textoList.length>1){
      		texto = textoList[1]; 
      		campoList = texto.split(' ¨ ');
      
      		i=0;
          while (i < document.forms[0].elements.length) {
              if (! document.forms[0].elements[i].name) { //o fieldset-Tag não tem nenhum nome
                  i++;
                  continue;
              }
      
              elementName = document.forms[0].elements[i].name;
      
              if (elementName.indexOf(nmTablename) == 0) {
      					 document.forms[0].elements[i].value = campoList[j];
      					 j++;
      				}
              i++;
          }
        }
    		var valor = entry.value;
    		valorList = valor.split('::');

        //apage o elemento do seleção-campo de AssigendRelations
        assignedRelations.options[x] = null;
				x--;
    
        //adicione o elemento ao seleção-campo de PossibleRelations
    		if(multi_select==0){
          var newEntry = new Option(textoList[0], valorList[0],false, false);
          possibleRelations.options[possibleRelations.options.length] = newEntry;
          possibleRelations.selectedIndex = possibleRelations.options.length-1;
    		}
    		else{
    		  for (var k=0; k<possibleRelations.options.length; k++) {
    			  if (possibleRelations.options[k].text == textoList[0]){
               possibleRelations.selectedIndex = k;
    					 return;
    				}
    			}
    		}
			}
		}
		//sortSelect(possibleRelations); //incompatibilidade mozilla???
    assignedRelations.selectedIndex = -1;
}



//this function is executed when the ok-button is clicked
//For Assigned_Relations we need to take special measures here
//Then we submit the form and close the window afterwards
function processForm() {
    var i = 0;
    var elementName = '';

    //if (! check()) return;

    //forward all values of the maintable-columns
    while (i < document.forms[0].elements.length) {
        if (! document.forms[0].elements[i].name) { //we need that check since the fieldset-tag has no name
            i++;
            continue;
        }
        elementName = document.forms[0].elements[i].name;


        if (elementName.indexOf("atr_") == 0) {
            var nmTablename= elementName.slice(4,elementName.length);  //delete the prefix
            var j=0;
            var s = "#";
            var tmpStr = '';
            while (j < document.forms[0].elements[i].options.length) {
                s+= document.forms[0].elements[i].options[j].value+"||";
                j++;
            }
            if (s.length>1) s = s.slice(0,s.length-2); //delete the last ;
						//alert(s);
            tmpStr = 'assignedTuples['+nmTablename+']';
						//alert(tmpStr);
            //now search the appropriate hidden input-field
						j=0;
            while (j < document.forms[0].elements.length) {
              if (! document.forms[0].elements[j].name) { //we need that check since the fieldset-tag has no name
                j++;
                continue;
              }
              if (document.forms[0].elements[j].name == tmpStr) {
                document.forms[0].elements[j].value = s;
              }
              j++;
            }
        }
        i++;
    }

}
//*********** Final das funcoes de controle do lookup


// -------------------------------------------------------------------
function sortSelect(obj) {
	var o = new Array();
	if (obj.options==null) { return; }
	for (var i=0; i<obj.options.length; i++) {
		o[o.length] = new Option( obj.options[i].text, obj.options[i].value, obj.options[i].defaultSelected, obj.options[i].selected) ;
		}
	if (o.length==0) { return; }
	o = o.sort( 
		function(a,b) { 
			if ((a.text+"") < (b.text+"")) { return -1; }
			if ((a.text+"") > (b.text+"")) { return 1; }
			return 0;
			} 
		);

	for (var i=0; i<o.length; i++) {
		obj.options[i] = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
		}
}




//Disabilita todos os elementos de um formulário
function disEle (form) {
  for (i=0;i<form.length;i++) {
  	form.elements[i].disabled = true
  }
} 

//Habilita todos os elementos de um formulário
function enaEle (form) {
  for (i=0;i<form.length;i++) {
  	form.elements[i].disabled = false
  }
}


function keyLowerCase() 
{
 var tecla;
 var key; 
 if(navigator.appName.indexOf("Netscape")!= -1) 
    tecla= event.which; 
 else 
    tecla= event.keyCode; 

 if ( tecla>=65 && tecla<=90 ) 
 {
    key = String.fromCharCode(tecla); 
    key = key.toLowerCase();
    event.keyCode=key.charCodeAt();
 }
}

function keyUpCase() 
{
 var tecla;
 var key; 
 if(navigator.appName.indexOf("Netscape")!= -1) 
    tecla= event.which; 
 else 
    tecla= event.keyCode; 
 if ( tecla>=97 && tecla<=122 )
 {
    key = String.fromCharCode(tecla); 
    key = key.toUpperCase();
    event.keyCode=key.charCodeAt();
 }	
}

function CampoUpcase(pForm, pCampo, pOperacao)
{
   if (pOperacao == "+")
	 {
     pForm[pCampo].value = pForm[pCampo].value.toUpperCase();
   }
	 else
	 {
     pForm[pCampo].value = pForm[pCampo].value.toLowerCase();
   }
}

function verifica_senha(oCampo1,oCampo2){
   if (oCampo1.value.length==0){
	 		alert('Digite a senha!');
			oCampo1.focus();
			return false;
	 }
   if (oCampo2.value.length==0){
	 		alert('Redigite a senha!');
			oCampo2.focus();
			return false;
	 }
   if (oCampo1.value!=oCampo2.value){
	 		alert('Senha não confere!\nPor favor redigite.');
			oCampo1.value = '';
			oCampo2.value = '';
			oCampo1.focus();
			return false;
	 }
	 return true;
}


/***
* Descrição.: formata um campo do formulário de
* acordo com a máscara informada...
* Autor: Marcos Callegario
* Parâmetros: - objField (o Objeto texbox)
* - mask (mascara que define o
* formato que o dado será apresentado,
* usando o algarismo "9" para
* definir números, "aA" para alfa-numerico, 
* "lL" para letra e o símbolo "!" para
* qualquer caracter...
*
* Exemplo de Uso: 
* <input type="textbox" name="cep" onkeydown="return textFormat(this,event,'99.999-99');" onkeypress="return textFormat(this,event,'99.999-99'); onkeyup="return textFormat(this,event,'99.999-99');" >
*
* Observação: As máscaras podem ser representadas
* como os exemplos abaixo:
* CEP -> 99999-999
* CPF -> 999.999.999-99
* CNPJ -> 99.999.999/9999-99
* C/C -> 999999-!
* Tel -> (99) 9999-9999
***/
function textFormat(objField,evtKeyPress,mask) {
  var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;

  if(ie) { // Internet Explorer
    nTecla = evtKeyPress.keyCode; }
  else  { // Nestcape
    nTecla = evtKeyPress.which;
  }
	
  //objField.form.procedimento_tabela_cd_tab_amb.value = nTecla+evtKeyPress.type;
  if ((nTecla==9)) 
      return true;
	if (evtKeyPress.type=='keydown'){ 
	   if ((nTecla==37) || (nTecla==39) || (nTecla==9)) //Seta para a direita seta para a esquerda
		    return false;
	return true;			
	}

  sValue = objField.value;
	
	var valor=false;
  if (mask.charAt(0)=='$'){
     mask = mask.substr(1);
		 valor = true;
	}	  
  
	if (evtKeyPress.type=='keypress') {
		 var digMask=mask.charAt(sValue.length);
     if ( digMask== "9") { // apenas números...
       return ((nTecla > 47) && (nTecla < 58)); } // números de 0 a 9
     else if (digMask == "a") { // alfa-numerico convertendo para minusculo...
		 if ( nTecla>=65 && nTecla<=90 ) 
       {
          key = String.fromCharCode(nTecla); 
          key = key.toLowerCase();
          if(ie) { // Internet Explorer
            event.keyCode=key.charCodeAt();}
          else {
            event.which=key.charCodeAt();
          }
       }
       return true; } 
    else if (digMask == "A") { // alfa-numerico convertendo para maiusculo...
		 if ( nTecla>=97 && nTecla<=122 ) 
       {
          key = String.fromCharCode(nTecla); 
          key = key.toUpperCase();
          if(ei) { // Internet Explorer
            event.keyCode=key.charCodeAt();}
          else {
            event.which=key.charCodeAt();
          }
       }
      return true; } 
    else if (digMask == "l") { // apenas letra convertendo para minusculo...
		 if (( nTecla>=65 && nTecla<=90 ) || ( nTecla>=97 && nTecla<=122 ))
       {
          key = String.fromCharCode(nTecla); 
          key = key.toLowerCase();
          if(ie) { // Internet Explorer
            event.keyCode=key.charCodeAt();}
          else {
            event.which=key.charCodeAt();
          }
      		return true;  
       }
       return false;}  
    else if (digMask == "L") { // apenas letra convertendo para maiusculo...
		 if (( nTecla>=65 && nTecla<=90 ) || ( nTecla>=97 && nTecla<=122 ))
       {
          key = String.fromCharCode(nTecla); 
          key = key.toUpperCase();
          if(ie) { // Internet Explorer
            event.keyCode=key.charCodeAt();}
          else {
            event.which=key.charCodeAt();
          }
      		return true;  
       }
       return false;}  
    else { // qualquer caracter...
      return true;
    } 
	}

  // Limpa todos os caracteres de formatação que
  // já estiverem no campo.
	var sai;
	var typeMask = new RegExp ("[-.,\:/() ]");
	while ((sai=typeMask.exec(sValue)) != null) sValue = sValue.toString().replace( sai, "" );

  fldLen = sValue.length;
  mskLen = fldLen;

	if (nTecla == 8) mskLen--; //se for backspace tamanho-1

  sCod = "";
	if (!valor) {
    //formata deacordo com a mascara da esqueda para a direita
    nCount = 0;
  	for (var i=0; i<=mskLen; i++){
      if (typeMask.exec(mask.charAt(i))!=null) {
        sCod += mask.charAt(i);
        mskLen++; }
      else{
        sCod += sValue.charAt(nCount);
        nCount++;
      }
    }
	}else{
    //formata deacordo com a mascara da direita para a esqueda
		sValue *= 1;
		if (sValue==0) {
		   sValue = '';
		}else{
		   sValue += '';
		}
    fldLen = sValue.length;
		//objField.form.paciente_nr_ident.value = sValue+'-'+fldLen;
		/*if (fldLen==1){
		   sValue = '00'+sValue;
		}
		if (fldLen==2){
		   sValue = '0'+sValue;
		}*/
    fldLen = sValue.length-1;
		mskLen = mask.length-1;
  	for (var i=fldLen; i>=0; i--){
      if (typeMask.exec(mask.charAt(mskLen))!=null) {
        sCod = mask.charAt(mskLen)+sCod;
				i++;
			}else{
        sCod = sValue.charAt(i)+sCod;
			}
			mskLen--;
    }
	}
  objField.value = sCod;

  return true;
}

function formataMascara(objField,mask) {
  if(objField.value.length==0) {return true;}
  var sCod = "";
	var valor=false;
  if (mask.charAt(0)=='$'){
     mask = mask.substr(1);
		 valor = true;
	}	  
  

	if (!valor) {
    //formata deacordo com a mascara da esqueda para a direita
    var sValue = limpaMascara(objField.value);
    var typeMask = new RegExp ("[-.,\:/() ]");
    var mskLen = sValue.length;
    nCount = 0;
    var i=0;
    while (( i<=mskLen)&&(i<mask.length)){
        if (typeMask.exec(mask.charAt(i))!=null) {
          if (i<mskLen) {
             sCod += mask.charAt(i);
             mskLen++;
          }
        }
        else{
          sCod += sValue.charAt(nCount);
          nCount++;
        }
        i++;
    }
	}else{
    //formata deacordo com a mascara da direita para a esqueda
    var sValue = objField.value;
		if (sValue.indexOf(',')<0) sValue += ','; 
  	var numPat = /^(\d*)(\,)(\d*)$/;
  	var matchArray = sValue.match(numPat);
  	if (matchArray == null) {
  	    alert("Valor deve estar no formato: "+mask);
  			objField.focus();
   		  objField.select();
  	    return false;
  	}
  	var nInt = limpaMascara(matchArray[1]);
  	var nDec = matchArray[3];
		//alert( matchArray);
  	var matchArray = mask.match(numPat);
		if (nInt.length==0) nInt = '0';
		var nTam = matchArray[3].length-nDec.length;
		for (i=1; i<=(nTam); i++) nDec += '0';
    var sValue = nInt+nDec;
		nMskInt = limpaMascara(matchArray[1]);
  	if (sValue.length>(matchArray[3].length+nMskInt.length)) {
  	    alert("Valor deve estar no formato: "+mask);
  			objField.focus();
   		  //objField.select();
  	    return false;
  	}
		//alert(nInt+'.'+nDec);
		/*sValue *= 1;
		if (sValue==0) {
		   sValue = '';
		}else{
		   sValue += '';
		}*/
    fldLen = sValue.length-1;
		mskLen = mask.length-1;
    typeMask = new RegExp ("[.,]");
  	for (var i=fldLen; i>=0; i--){
      if (typeMask.exec(mask.charAt(mskLen))!=null) {
        sCod = mask.charAt(mskLen)+sCod;
				i++;
			}else{
        sCod = sValue.charAt(i)+sCod;
			}
			mskLen--;
    }
	}

  objField.value = sCod;

  return true;
}
function limpaMascara(sValue,sDec) {
  var sai;
  var typeMask = new RegExp ("[-."+(sDec=='$'?'':',')+"\:/() ]");
  while ((sai=typeMask.exec(sValue)) != null) sValue = sValue.toString().replace( sai, "" );
  return sValue;
}


// Testa se uma data é verdadeira
function validaData(objCampo) {
  dataStr = objCampo.value;
  if(dataStr.length==0) {return true;}

	var dataPat = /^(\d{1,2})(\/)(\d{1,2})\2(\d{2,4})$/;
	var matchArray = dataStr.match(dataPat);
	if (matchArray == null) {
	    alert("Data deve estar no formato: dd/mm/aaaa");
 		  objCampo.select();
			objCampo.focus();
	    return false;
	}
	var dia = matchArray[1];
	var mes = matchArray[3];
	var ano = matchArray[4];

	if (dia.length == 1) dia = '0'+dia;
	if (mes.length == 1) mes = '0'+mes;
	if (ano.length == 2) {
	   if (ano<50) ano = '20'+ano;
	   else ano = '19'+ano;
  }

	if ((dia.length != 2) || (mes.length != 2) || (ano.length != 4)){
	   alert("Data deve estar no formato: dd/mm/aaaa");
		 objCampo.focus();
		 objCampo.select();
	   return false;
	}
	if (dia < 1 || dia > 31) {
     alert("Data Inválida! Dia deve estar entre 1 e 31");
		 objCampo.focus();
		 objCampo.select();
		 return false;
	}
	if (mes < 1 || mes > 12) {
     alert("Data Inválida! Mês deve estar entre 1 e 12");
		 objCampo.focus();
		 objCampo.select();
 	   return false;
	}
	if ((mes == 4 || mes == 6 || mes == 9 || mes == 11) && dia == 31) {
     alert("Data Inválida! Dia deve estar entre 1 e 30");
		 objCampo.focus();
	   objCampo.select();
		 return false
	}
	if (mes == 2) {
		var bi = (ano % 4 == 0 && (ano % 100 != 0 || ano % 400 == 0));
		if (dia > 29 || (dia == 29 && !bi)) {
       alert("Data Inválida! Dia deve estar entre 1 e 28");
		   objCampo.focus();
		   objCampo.select();
			 return false;
		}
	}
	objCampo.value = dia+'/'+mes+'/'+ano;
	return true;
}

function poeZero(numero, tamanho){
	var cont =  numero.length;
	cont = cont < tamanho ? tamanho - cont : cont;
	if (cont >= tamanho) {
		return numero;
	}
	for (var i = 0; i < cont; i ++){
		numero = "0" + numero;
	}
	return numero;
}

function valida_CPF (CPF) {
    if (CPF.value.length > 0) {
  		  numCPF = CPF.value;
  		  var sai; var sonum = /[^0-9]/;
        while ((sai=sonum.exec(numCPF)) != null) numCPF = numCPF.toString().replace( sai, "" );
				
				numCPF = poeZero(numCPF,11);
				dig1 = calculaDigitoCPF(10,numCPF);
				dig2 = calculaDigitoCPF(11,numCPF);
        if ((dig1 + "" + dig2) != numCPF.substr(9,2)) {
           alert ("Número do CPF inválido!");
  				 CPF.focus();
           return false;
				}
				CPF.value = numCPF;
		}
		return true;
}
function calculaDigitoCPF( limite,  num){
    soma = 0;
    peso = limite;
    for (var i=0; i < limite-1 ; i++) {
        soma += num.substr(i,1) * peso;
        peso--;
    }
    digito = 11 - (soma % 11);
    if ((digito == 10) || (digito == 11)) digito=0 ;
    return digito;
}

function valida_CNPJ(CNPJ){
    if (CNPJ.value.length > 0) {
       var num1 = new initArray(14);
       numCNPJ = CNPJ.value;
       var sai; var sonum = /[^0-9]/;
       while ((sai=sonum.exec(numCNPJ)) != null) numCNPJ = numCNPJ.toString().replace( sai, "" );
			 

       numCNPJ = poeZero(numCNPJ, 14);
       for (var i = 0 ; i < 14 ; i++)
       {
          num1[i] = numCNPJ.substring(i, i+1);
       }
       digito13 = calculaDigitoCNPJ(13, num1);
       digito14 = calculaDigitoCNPJ(14, num1);
       if ( (num1[12]!=(digito13)) || (num1[13]!=(digito14)) ){
          alert("Número do CNPJ Inválido!");
          CNPJ.focus();
					CNPJ.select();
          return false;
       }
			 //CNPJ.value = numCNPJ;
		} 
   	return true;
}  
function initArray(){
    this.length = initArray.arguments.length;
    for (var i = 0 ; i < 14 ; i++) {
       this[i] = " ";
    }
}
function calculaDigitoCNPJ( limite,  num){
    soma = 0;
    peso = limite - 8;
    for (var i=0; i < limite-1 ; i++) {
       soma += num[i] * peso;
       if (peso == 2)
          peso = 9;
       else
          peso--;
    }
    resto = soma % 11;
    if(resto == 0 || resto == 1)
      digito = 0;
    else
      digito = 11 - resto;
    
    return digito;
}


/********************************************************************************************
* tabset
*/
if (!Bs_Objects) {var Bs_Objects = [];};function Bs_TabSet(outerElmId) {
var a = arguments;this._outerElmId = (a.length>1) ? a[1] :  a[0];this._id;this._objectId;this.tabs = new Array;this._activeTabIdx = 0;this._onTabSelectEvent
this._constructor = function() {
this._id = Bs_Objects.length;Bs_Objects[this._id] = this;this._objectId = "Bs_TabSet_"+this._id;}
this.addTab = function(caption, container) {
if (typeof(caption) == 'object') {
var o = caption;} else {
var o = new Object;o.caption   = caption;o.container = container;}
o.tabIdx = this.tabs.length;this.tabs[o.tabIdx] = o;}
this.render = function() {
var ret = new Array;ret[ret.length] = '<div class="tabsetTabsDiv">';ret[ret.length] = '<div style="width:2px; min-width:2px; display:inline;"></div>';for (var i=0; i<this.tabs.length; i++) {
if (i == this._activeTabIdx) {
var cls = 'bsTabsetActive';} else {
var cls = 'bsTabsetInactive';if (this.tabs[i].container) this.tabs[i].container.style.display = 'none';}
ret[ret.length] = '<div unselectable="On" id="' + this._objectId + '_tabCap_' + i + '" class="bsTabset ' + cls + '" style="display:inline;" onclick="Bs_Objects['+this._id+'].switchTo(' + i + '); ">' + this.tabs[i].caption + '</div>';}
ret[ret.length] = '</div>';return ret.join('');}
this.draw = function() {
var elem = document.getElementById(this._outerElmId + '_tabs');if (elem) elem.innerHTML = this.render();}

this.switchTo = function(theReg) {
newRegIdx = -1;if (theReg=='') theReg = '0';if (isNaN(parseInt(theReg))) {
for (var i=0; i<this.tabs.length; i++) {
if (this.tabs[i].caption == theReg) (newRegIdx = i);}
} else {
newRegIdx = theReg;}
if (newRegIdx<0 || this.tabs[newRegIdx].disabled) return;for (var i=0; i<this.tabs.length; i++) {
var elem = document.getElementById(this._objectId + '_tabCap_' + i);if (!elem) continue;if (newRegIdx == i) {
this._activeTabIdx = i;elem.className = 'bsTabset bsTabsetActive';this.tabs[i].container.style.display = 'block';if (typeof(this.tabs[i].onFocus) != 'undefined') {
this._triggerFunction(this.tabs[i].onFocus);}
this.fireOnTabSelect();} else {
if (this.tabs[i].disabled) continue;
elem.className = 'bsTabset bsTabsetInactive';this.tabs[i].container.style.display = 'none';if (typeof(this.tabs[i].onBlur) != 'undefined') {
this._triggerFunction(this.tabs[i].onBlur);}
}
}
}

this.disableTab = function(theReg) {
   newRegIdx = -1;
	 if (theReg=='') theReg = '0';
	 if (isNaN(parseInt(theReg))) {
      for (var i=0; i<this.tabs.length; i++) {
         if (this.tabs[i].caption == theReg) (newRegIdx = i);
			}
   } else {
      newRegIdx = theReg;
	 }
   if (newRegIdx<0) return;
   var elem = document.getElementById(this._objectId + '_tabCap_' + newRegIdx);
   this.tabs[newRegIdx].disabled = true;
   elem.className = 'bsTabset bsTabsetDisable';
   this.tabs[newRegIdx].container.style.display = 'none';
}

this.enableTab = function(theReg) {
   newRegIdx = -1;
	 if (theReg=='') theReg = '0';
	 if (isNaN(parseInt(theReg))) {
      for (var i=0; i<this.tabs.length; i++) {
         if (this.tabs[i].caption == theReg) (newRegIdx = i);
			}
   } else {
      newRegIdx = theReg;
	 }
   if (newRegIdx<0) return;
   var elem = document.getElementById(this._objectId + '_tabCap_' + newRegIdx);
   this.tabs[newRegIdx].disabled = false;
	 elem.className = 'bsTabset bsTabsetInactive';
	 this.tabs[newRegIdx].container.style.display = 'none';
	 if (typeof(this.tabs[newRegIdx].onBlur) != 'undefined') {this._triggerFunction(this.tabs[newRegIdx].onBlur);}
}

this.getActiveTab = function() {
return this.tabs[this._activeTabIdx];}
this.onTabSelect = function(yourEvent) {
this._onTabSelectEvent = yourEvent;}
this.fireOnTabSelect = function() {
if (this._onTabSelectEvent) {
func = this._onTabSelectEvent;if (this._onTabSelectEvent == 'string') {
eval(func);} else {
func(this);}
}
return true;}
this._triggerFunction = function(func) {
if (typeof(func) == 'function') {
func();} else if (typeof(func) == 'string') {
eval(func);}
}
this._constructor();}
//********************************************************************************************

var NewWin=null;
function findClose()
{ 
  NewWin = window.open("","wait"); 
  setTimeout('NewWin.close();',1);
}

function popup_center(a,b,w,h,scroll)
{
  //a = arquivo, b = nome da janela	  		
	var winl = (screen.width-w)/2;
  var wint = (screen.height-h)/2;
	var settings  ='height='+h+',';
      settings +='width='+w+',';
      settings +='top='+wint+',';
      settings +='left='+winl+',';
      settings +='scrollbars='+scroll+',';
      settings +='resizable=no,';
			settings +='titlebar=no,';
      settings +='toolbar=no,';     
      settings +='location=no,';    
      settings +='directories=no,'; 
      settings +='status=yes,';  
			settings +='menubar=no';  
  NewWin2 = window.open(a,b,settings);
  if(parseInt(navigator.appVersion) >= 4){NewWin2.window.focus();}						
}

function popup_pdf(arq)
{
  //a = arquivo, b = nome da janela	  		
	var winl = (screen.width)/3*2;
  var wint = (screen.height)/2;
	var settings  ='height='+wint+',';
      settings +='width='+winl+',';
      settings +='top=0,';
      settings +='left=0,';
      settings +='scrollbars=yes,';
      settings +='resizable=yes,';
			settings +='titlebar=no,';
      settings +='toolbar=no,';     
      settings +='location=no,';    
      settings +='directories=no,'; 
      settings +='status=yes,';  
			settings +='menubar=no';  
  NewWin2 = window.open(arq,'report',settings);
  if(parseInt(navigator.appVersion) >= 4){NewWin2.window.focus();}						
}

//Cronometro
//exemplo: <div style="color: #0000ff;font-family: arial;" name="tempo" id="tempo2">1:30</div>
function begintimer(sDivID){
   var divTags = document.getElementsByTagName("div") ;
   for (var i = 0; i < divTags.length ; i++)
   if ((divTags[i].id)&&(sDivID==divTags[i].id.substr(0,sDivID.length))) {
     elem = divTags[i];
  	 textos = elem.innerHTML;
  	 texto  = textos.split(" ");
		 limit  = texto[texto.length-1];
  	 parselimit=limit.split(":");
     parselimit=(parselimit[0]*60+parselimit[1]*1)-1;
     if (parselimit==0){
		    elem.style.color = 'green';
        elem.innerHTML = "Disponível";
		 }
     else if (parselimit>0){ 
        curmin=Math.floor(parselimit/60);
        cursec=parselimit%60;
        if (curmin<10) curmin='0'+curmin;
        if (cursec<10) cursec='0'+cursec;
        if (curmin<1) elem.style.color = '#ff0000';
  			elem.innerHTML = (texto.length>1?texto[0]:'')+' '+curmin+":"+cursec;
     }
	 }
   setTimeout("begintimer('"+sDivID+"')",1000);
}

//Prototype Functions
String.prototype.trim = function()
{
  var x=this;
  x=x.replace(/^\s*(.*)/, "$1");
  x=x.replace(/(.*?)\s*$/, "$1");
  return x;
}

/*
Minhas funções
MCM
*/

function grava_area_curso(id_curso,obj_area)
{
  document.iframe_grava_area.location = "curso_ajax_grava_area.php?id_curso="+id_curso+"&id_area="+obj_area.value;
	var div_wait = parent.document.getElementById("div_wait");
	div_wait.innerHTML = "<img src='images/ajax/indicator.gif' border='0'><br />Salvando Área...";
}

function popup_center(a,b,w,h,scroll)
{	  		
	var winl = (screen.width-w)/2;
  var wint = (screen.height-h)/2;
	var settings  ='height='+h+',';
      settings +='width='+w+',';
      settings +='top='+wint+',';
      settings +='left='+winl+',';
      settings +='scrollbars='+scroll+',';
      settings +='resizable=no,';
			settings +='titlebar=no,';
      settings +='toolbar=no,';     
      settings +='location=no,';    
      settings +='directories=no,'; 
      settings +='status=no,';  
			settings +='menubar=no';  
  NewWin2 = window.open(a,b,settings);
  if(parseInt(navigator.appVersion) >= 4){NewWin2.window.focus();}						
}

function popup_full(a,b)
{	  		
	var w = screen.width;
  var h = screen.height;
	var settings  ='height='+h+',';
      settings +='width='+w+',';
      settings +='top=0,';
      settings +='left=0,';
      settings +='scrollbars=yes,';
      settings +='resizable=no,';
			settings +='titlebar=no,';
      settings +='toolbar=no,';     
      settings +='location=no,';    
      settings +='directories=no,'; 
      settings +='status=no,';  
			settings +='menubar=no';  
  NewWin2 = window.open(a,b,settings);
  if(parseInt(navigator.appVersion) >= 4){NewWin2.window.focus();}						
}

function submit_login(){
	if( document.forms.frm_login['ds_login'].value == '' ){
		alert("O campo [Usuário:] é de preenchimento obrigatório!");
		document.forms.frm_login['ds_login'].focus();
		return false;
	}
	if( document.forms.frm_login['ds_senha'].value == '' ){
		alert("O campo [Senha:] é de preenchimento obrigatório!");
		document.forms.frm_login['ds_senha'].focus();
		return false;
	}
	document.forms.frm_login.submit();
}

function logoff_logado(){
	processa.document.location = "logoff.php";
}