// JavaScript Document
function Utils(){
	
	var ajax  = this.Ajax();	
	var campoTd = null;
	
	//listar cidades
	this.retrieveCidades = function(idEstado,idCidade,valueCid){
		var valorEstado = document.getElementById(idEstado).value;
		ajax.open("POST","action/listarCidades.php",true);
		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1");
		ajax.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
		ajax.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
		ajax.setRequestHeader("Pragma", "no-cache");
		ajax.setRequestHeader('If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT'); 
		ajax.onreadystatechange = actionRetrieveCidades;			
		ajax.send("listarCidades=listarCidades&idestado="+valorEstado+"&idcidade="+valueCid);				
		
	}
	
	//listar cidades Para Itens
	this.retrieveCidadesItem = function(idEstado,idCidade,valueCid){
		var valorEstado = document.getElementById(idEstado).value;
		ajax.open("POST","action/listarCidadesItem.php",true);
		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1");
		ajax.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
		ajax.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
		ajax.setRequestHeader("Pragma", "no-cache");
		ajax.setRequestHeader('If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT'); 
		ajax.onreadystatechange = actionRetrieveCidades;			
		ajax.send("listarCidades=listarCidades&idestado="+valorEstado+"&idcidade="+valueCid);				
		
	}
	
	//listar
	this.retrieve = function(idSelect1,idSelect2,valorSelect2,url){
		
		var valorSelect1 = document.getElementById(idSelect1).value;
		campoTd = document.getElementById(idSelect2).parentNode;
		ajax.open("POST",url,true);
		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1");
		ajax.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
		ajax.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
		ajax.setRequestHeader("Pragma", "no-cache");
		ajax.setRequestHeader('If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT'); 
		ajax.onreadystatechange = actionRetrieve;			
		ajax.send("listarDados=listarDados&idSelect1="+valorSelect1+"&idSelect2="+valorSelect2);				
		
	}	


	var actionRetrieve = function(){

		if( ajax.readyState == 4 ){		
			if( ajax.status == 200 ){
				campoTd.innerHTML = ajax.responseText;												
			}
		}					
		
	}	

	//Metodo complementar para inserir um credito
	var actionRetrieveCidades = function(){
		var tdCid = document.getElementById('cidade_cliente').parentNode;		
		if( ajax.readyState == 4 ){		
			if( ajax.status == 200 ){
				tdCid.innerHTML = ajax.responseText;												
			}
		}					
		
	}	

	this.tipoUsrExt = function(dadoInfo){
		var tables = document.getElementById('contem_tables').getElementsByTagName('table');
		document.getElementById('contem_tables').style.display = 'inline';
		if( dadoInfo == '0' || dadoInfo == '' ){
			tables[0].style.display = 'inline';
			tables[1].style.display = 'none';
		}else{
			tables[1].style.display = 'inline';			
			tables[0].style.display = 'none';						
		}		
	}
	
	this.selectProduto = function(idElemento,valor){
		
		if( document.getElementById(idElemento).value != "" ){
			document.getElementById(idElemento).value = '';
			document.getElementById('produto'+valor).style.background = '';			
		}else{
			document.getElementById(idElemento).value = valor;			
			document.getElementById('produto'+valor).style.background = '#FFC';						
		}
		
	}
	
	this.maskCPF = function(element,evento){
		var e    = evento;
		var str  = element.value.toString();
		if( !e )
			e = window.event;
		if( e.keyCode != 8 ){
			if( str.length == 3 ){
				str = str+".";				
			}			
			if( str.length == 7 ){						
				str = str+".";				
			}			
			if( str.length == 11 ){					
				str = str+"-";				
			}
			return element.value = str;
		}
	}

	this.maskDate = function(element,evento){
		var e    = evento;
		var str  = element.value.toString();
		if( !e )
			e = window.event;
		if( e.keyCode != 8 ){
			if( str.length == 2 ){
				str = str+"/";				
			}			
			if( str.length == 5 ){						
				str = str+"/";				
			}			
			return element.value = str;
		}
	}

	this.maskCall = function(element,evento){
		var e    = evento;
		var str  = element.value.toString();
		if( !e )
			e = window.event;
		if( e.keyCode != 8 ){
			if( str.length == 1 ){
				str = "("+str;				
			}			
			if( str.length == 3 ){						
				str = str+")";				
			}			
			if( str.length == 8 ){					
				str = str+"-";				
			}
			return element.value = str;
		}
	}

	this.maskCEP = function(element,evento){
		var e    = evento;
		var str  = element.value.toString();
		if( !e )
			e = window.event;
		if( e.keyCode != 8 ){			
			if( str.length == 5 ){
				str = str+"-";
			}						
			return element.value = str;
		}
	}
	
	this.maskCNPJ = function(element,evento){
		var e    = evento;
		var str  = element.value.toString();
		if( !e )
			e = window.event;
		if( e.keyCode != 8 ){			
			if( str.length == 2 ){
				str = str+".";
			}						
			if( str.length == 6 ){
				str = str+".";
			}						
			if( str.length == 10 ){
				str = str+"/";
			}									
			if( str.length == 15 ){
				str = str+"-";
			}												
			return element.value = str;
		}
	}
	
	this.validarForm = function(idForm){
		var form   = document.getElementById(idForm);
		var inputs = form.getElementsByTagName('input');
		var sellec = form.getElementsByTagName('select');
		var textar = form.getElementsByTagName('textarea');		
		var cont   = 0;
		var name   = "";
		var rdleng = 0;
		for( var i = 0; i < inputs.length; i++ ){
			if( inputs[i].type == "text" ){
				if( inputs[i].value.length == 0 ){
					//alert(inputs[i].name);
					cont++;
				}
				if( inputs[i].name.indexOf("cpf") > -1 ){
					if( this.validarCPF(inputs[i].value) == false ){
						alert('cpf invalido');
						cont++;				
					}
				}				
			}
			if( inputs[i].type == "file" ){
				var permitido = inputs[i].alt;
				var ext       = inputs[i].value.split(".");
				var extensao  = ext[ext.length-1];
				if( permitido.indexOf(extensao) < 0 ){
					alert(inputs[i].className);
					cont++;			
				}
			}
		}
		for( var i = 0; i < textar.length; i++ ){
			if( textar[i].type == "text" ){
				if( textar[i].value.length == 0 ){
					//alert(textar[i].name);					
					cont++;
				}
			}
		}		
		for( var i = 0; i < sellec.length; i++ ){
			if( sellec[i].value.length == 0 ){
				//alert(sellec[i].name);									
				cont++;
			}
		}
				
		if( cont > 0 ){
			alert('Todos os campos sao obrigatorios!');
			return false;
		}
		
		return true;
			
	}
		
	this.infoCampoVazio = function(elem,title){		
		if( elem.value.length == 0 || title != "" ){
			var style = "font-size:11px;font-family:Arial, Helvetica, sans-serif;font-weight:bold;background:#AA0000 url(images/error.png) 5px 8px no-repeat;padding-left:24px;width:auto;height:32px;color:#FFF;";
			var avo = elem.parentNode.parentNode;
			var pai = avo.getElementsByTagName('td');
			var dat = pai[0].innerHTML.split('<table');
			if( title != "" )
				elem.title = title;
			var div = '<table style="margin-top:4px;" border="0" cellpadding="0" cellspacing="0"><tr><td style="'+style+'">'+elem.title+'</td></tr></table>';
			pai[0].innerHTML = dat[0]+div;			
			return false;
		}		
	}
	
	this.deleteAlert = function(elem){		
		if( elem.value.length == 0 ){
			var pai = elem.parentNode;
			var tab = pai.getElementsByTagName('table');			
			var dat = pai.innerHTML.split('<table');
			pai.removeChild(tab[0]);
		}		
	}
		
	this.validaPassword = function(pass1,pass2){
		if( pass1 == pass2 ){
			return false;
		}
	}
	
	this.validarCPF = function(value){
		var value = value.replace(".","");
		value = value.replace(".","");
		value = value.replace(".","");
		value = value.replace("-","");
		cpf = value;		
		erro = new String;
		if (cpf.length < 11) erro += "Sao necessarios 11 digitos para verificacao do CPF! \n\n";
		var nonNumbers = /\D/;
		if (nonNumbers.test(cpf)) erro += "A verificacao de CPF suporta apenas numeros! \n\n";
		if (cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999"){
				erro += "Numero de CPF invalido!"
	   }
	   var a = [];
	   var b = new Number;
	   var c = 11;
	   for (i=0; i<11; i++){
			   a[i] = cpf.charAt(i);
			   if (i < 9) b += (a[i] * --c);
	   }
	   if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
	   b = 0;
	   c = 11;
	   for (y=0; y<10; y++) b += (a[y] * c--);
	   if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
	   if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10])){
			   erro +="Digito verificador com problema!";
	   }
	   if (erro.length > 0){
		   return false;
	   }
	   return true;
	}

	//valida o CNPJ digitado
	this.validarCNPJ = function(value){
	  var cnpj = value;	
	  var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
      digitos_iguais = 1;
      if(cnpj.length < 14 && cnpj.length < 15)
          return false;
      for(i = 0; i < cnpj.length - 1; i++)
		  if (cnpj.charAt(i) != cnpj.charAt(i + 1)){
			 digitos_iguais = 0;
			 break;
		  }
      if(!digitos_iguais){
		  tamanho = cnpj.length - 2
		  numeros = cnpj.substring(0,tamanho);
		  digitos = cnpj.substring(tamanho);
		  soma = 0;
		  pos = tamanho - 7;
		  for(i = tamanho; i >= 1; i--){
			  soma += numeros.charAt(tamanho - i) * pos--;
			  if(pos < 2)
				 pos = 9;
		  }
		  resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		  if(resultado != digitos.charAt(0))
			 return false;
		  tamanho = tamanho + 1;
		  numeros = cnpj.substring(0,tamanho);
		  soma = 0;
		  pos = tamanho - 7;
		  for(i = tamanho; i >= 1; i--){				
			 soma += numeros.charAt(tamanho - i) * pos--;
			 if(pos < 2)
				pos = 9;
		  }
		  resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		  if (resultado != digitos.charAt(1))
				return false;
		  return true;
		  }
      else
          return false;                
	}
	
	this.valueDecimal = function(val){
		var str  = val.split(".");
		if( str.length <= 1 )
			return val+".00";
		else
			return val;
	}
	
	this.somenteNumeros = function(element,evento){
		var e = evento;		
		var str = element.value;
		if( !e )
			e = window.event;
		if( (e.keyCode > 47 && e.keyCode < 58) || e.keyCode == 8 ){
			element.value = str;
			return true;
		}else{
			element.blur();
			element.value = str.substr(0,(str.length-1));
			return false;
		}
	}
		 
	
	this.popup = function(theURL,winName,features){
		window.open(theURL,winName,features);	
	}
	
}
