var controle=0;
var cor_erro_borda, cor_foco_borda, cor_foco_fundo, cor_erro_fundo, ico_foco, ico_erro;
var controle_foco=0;
cor_erro_borda = "#B80000";
cor_erro_fundo = "#FCC";
//cor_erro_fundo = "#FBF0F0";
cor_foco_borda = "";
cor_foco_fundo = "#F4f4f4";
cor_normal="";
ico_foco=0 //0=não, 1=sim
ico_erro=0;

function limparstring(s){
	s=s.replace(/ /gi,"");
  	return(s);
}

var texto = new Array();
texto[1] = "dd/mm/aaaa";
texto[2]= "00000000";
texto[3] = "";

var flagValidar="";

function validaform(form, tipo, semEfeito,flag) {
	   var resp;
	   if(flag)
			flagValidar=flag;
	   else
	   		flagValidar=""
	   resp=validar(form)
	   if (resp==false){
		   if(tipo==1){
			  alert('Algum campo não foi preenchido corretamente.\nVerifique os campos preenchido e tente novamente.');
		   }
		   else if(tipo==3)
		   {
				if(document.getElementById("alerta"))
			  	{
					if(document.getElementById("alerta").innerHTML == '')
					{
						document.getElementById("alerta").innerHTML="Preencha corretamente o(s) campo(s) abaixo.";
						document.getElementById("alerta").style.display="block";
					}
					else
						document.getElementById("alerta").style.display="block";
			 	}
		   }
		   else 
		   {
			   	if(!semEfeito)
				{
			   		exibeEfeito(true);
				}
			    iniciaAjax('ajx_boxAlerta.aspx','', 'divResultado');
		   }
		return false;
	   }
	else{
		return(true);
	}
} 
function chamaFormDesfoca(e){
	criaEventAndThis(e)
	desfocaAreaRestrita()
}
criaOnFocus();
criaOnBlur();
criaOnKeyPress();
criaOnChange();
criaOnKeyUp();

function validar(fr) {
	var a, resp, limite, erro, senha;
	var i = 0;
	var s=new String;
	controle_foco=0;
	a=0;
	controle=0;
	resp=0;	
	for(i=0;i<fr.elements.length;i++){ 
		
		var validarEste;
		if(flagValidar){
			if(flagValidar.toString()==fr.elements[i].getAttribute("flag"))
				validarEste=true;
			else
				validarEste=false;
		}
		else{
			validarEste=true;
		}
	
		if (validarEste && fr.elements[i].getAttribute("Tipo")!="IGNORE"){
			fr.elements[i].style.borderColor =""
			if (fr.elements[i].getAttribute("Obrigatorio")=="1"){
				if(fr.elements[i].tagName=="SELECT"){
					s=fr.elements[i].value;
					s=limparstring(s);
					if (s=="") {
						ErroForm(fr.elements[i]);
						resp=resp+1;
					}
				} 
				else{ 
						s=fr.elements[i].value;
						s=limparstring(s);
						if (s.length==0) 
						{
							ErroForm(fr.elements[i]);
							resp=resp+1;
						}
						else{
							if (ValidacampoformsPreenchidos(fr.elements[i], i)==false)
								resp=resp+1;
						}
					}
			}
			else
			{
			if(fr.elements[i].tagName!="SELECT" && fr.elements[i].getAttribute("Tipo")!="RADIO")
				if(fr.elements[i].value.length!=0){
					if (ValidacampoformsPreenchidos(fr.elements[i], i)==false)
							resp=resp+1;
				}
			}
		}
	}
	if(resp>0){
		return false;
	}
}

function validaCPF(cpf) {
	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;
	else
		return true;
}

function ValidacampoformsPreenchidos(campoform, i)
{
	var resposta=true;
	var x;
	x=0;
	if (campoform.getAttribute("Tipo")=="IN")
	{  
		s=campoform.value;
		s=limparstring(s);
		if (campoform.getAttribute("Obrigatorio")=="1" || s.length>0) 
		{
			temp=campoform.value;
			if (isNaN(parseInt(temp))){ 
			resposta=false;
			ErroForm(campoform);
			}
		}
	}
	if (campoform.getAttribute("Tipo")=="DEC")
	{  
		s=campoform.value;
		s=limparstring(s);
		if (campoform.getAttribute("Obrigatorio")=="1" || s.length>0) 
		{
			temp=campoform.value;
			if (isNaN((temp)))
			{ 
				resposta=false;
				ErroForm(campoform);
			}
		}
	}
	if (campoform.getAttribute("Tipo")=="CEP")
	{  
		s=campoform.value;
		s=limparstring(s);
		temp=campoform.value;
		if (!isNaN(parseInt(temp))){
			if(temp.length!=8){
			resposta=false;
			ErroForm(campoform);
			}
		}
		else{
		resposta=false;
		ErroForm(campoform);
		}
	}

	if (campoform.getAttribute("Tipo")=="NOM") 
	{
		s=campoform.value;
		s=limparstring(s);
		if (campoform.getAttribute("Obrigatorio")=="1" || s.length>0) 
		{
		temp=campoform.value;
		if (temp.indexOf(" ")==-1)
		{ 
		resposta=false;
		ErroForm(campoform);
		} 
		}
	}
	if (campoform.getAttribute("Tipo")=="MAIL") 
	{
		s=campoform.value;
		s=limparstring(s);
		temp=campoform.value;
		if (temp.indexOf("@")==-1 || temp.indexOf(".")==-1)
		{ 
		resposta=false;
		ErroForm(campoform);
		}
	} 
	if (campoform.getAttribute("Tipo")=="LOG"){
		s=campoform.value;
		s=limparstring(s);
		padrao = /\W/;
		OK = padrao.exec(s);
		if (OK)
		{
		resposta=false;
		ErroForm(campoform);
		} 
	}
	if (campoform.getAttribute("Tipo")=="SENHA"){
		s=campoform.value;
		s=limparstring(s);
		padrao = /\W/
		OK = padrao.exec(s);
		senha=s;
		if (OK)
		{
		resposta=false;
		ErroForm(campoform);
		} 
	}
	if (campoform.getAttribute("Tipo")=="SENHA2"){
		s=campoform.value;
		s=limparstring(s);
		if(s!=senha)
		{
		resposta=false;
		ErroForm(campoform);
		} 
	}
	if (campoform.getAttribute("Tipo")=="CPF"){
		s=campoform.value;
		s=limparstring(s);
		if(validaCPF(s)==false)
		{
		resposta=false;
		ErroForm(campoform);
		} 
	}
	if (campoform.getAttribute("Tipo")=="RADIO"){
		var chk=false;
		var campo_radio = document.getElementsByName(campoform.getAttribute("Name"))
		for (j=0;j<campo_radio.length;j++){ 
			if (campo_radio[j].checked) 
				chk=true; 
		} 
		if (chk==false){
			resposta=false;
			for (j=0;j<campo_radio.length;j++) {
				//campo_radio[j].parentNode.parentNode.style.backgroundColor=cor_erro_fundo;
				document.getElementById("spn_"+campoform.id).style.color = "#A00002";
			}
		}
		else{
			for (j=0;j<campo_radio.length;j++)
			//campo_radio[j].parentNode.parentNode.style.backgroundColor="";
			document.getElementById("spn_"+campoform.id).style.color = "";
		}
	}
	if (campoform.getAttribute("Tipo")=="TEXTO") 
	{
		s=campoform.value;
		s=limparstring(s);
		if (campoform.getAttribute("Obrigatorio")=="1" || s.length>0) 
		{
			var limite = campoform.getAttribute("limite");
			if (limite!='' && s.length>limite)
			{ 
			resposta=false;
			ErroForm(campoform);
			} 
		}
	}
	if (campoform.getAttribute("Tipo")=="DATA"){
		s=campoform.value;
		s=limparstring(s);
		hoje = new Date();
		barras = s.split("/");
		if (barras.length == 3)
		{
			dia = barras[0];
			mes = barras[1];
			ano = barras[2];
			resultado = (!isNaN(dia) && (dia > 0) && (dia < 32)) && (!isNaN(mes) && (mes > 0) && (mes < 13)) && (!isNaN(ano) && (ano.length == 4) && (ano <= 2099 && ano >= 1900));
			if (!resultado) 
			{
				resposta=false;
				if(campoform.getAttribute("Focar"))
					ErroForm(document.getElementById(campoform.getAttribute("Focar")));
				else
					ErroForm(campoform);
			}
		} 
		else 
		{
			resposta=false;
			if(campoform.getAttribute("Focar"))
				ErroForm(document.getElementById(campoform.getAttribute("Focar")));
			else
				ErroForm(campoform);			
		}
	}
	if (campoform.getAttribute("Tipo")=="HORA"){
		s=campoform.value;
		s=limparstring(s);
		barras = s.split(":");
		if (barras.length == 3)
		{
			hora = barras[0];
			minuto = barras[1];
			segundo = barras[2];
			resultado = (!isNaN(hora) && (hora >= 0) && (hora < 24)) && (!isNaN(minuto) && (minuto >= 0) && (minuto < 60)) && (!isNaN(segundo) && (!isNaN(segundo)) && (segundo < 60 && segundo >= 0));
			if (!resultado) 
			{
			resposta=false;
			ErroForm(campoform);
			}
		} 
		else if(barras.length == 2){
			hora = barras[0];
			minuto = barras[1];
			resultado = (!isNaN(hora) && (hora >= 0) && (hora < 24)) && (!isNaN(minuto) && (minuto >= 0) && (minuto < 60));
			if (!resultado) 
			{
			resposta=false;
			ErroForm(campoform);
			}
		}
		else
		{
			resposta=false;
			ErroForm(campoform);
		}
	}
	return(resposta);
}	

function ErroForm(campo){
	campo.setAttribute("foco", "1");
	if(controle_foco==0)
		focaPrimeiro(campo);
	/*if(cor_erro_borda!="")
		campo.style.borderColor = cor_erro_borda;
	if(cor_erro_fundo!=""){
		campo.style.borderRightColor = cor_erro_borda;
		//campo.style.borderRightWidth = "4px";
		//campo.style.paddingRight = "2px";
	}
	if(campo.tagName=='SELECT'){
		campo.style.backgroundColor=cor_erro_fundo;
	}*/

	document.getElementById("spn_"+campo.id).style.color = "#A00002";
	
}	

function focaPrimeiro(campo){
	try 
	{
		campo.focus();
		controle_foco=1;
	} 
	catch(e)
	{
		//
	}	
}
function adicionaEvento(campo, evento, funcao){
	if (campo.addEventListener)
		campo.addEventListener(evento, funcao, true);
	if (campo.attachEvent)
		campo.attachEvent("on"+evento, funcao);
}

function criaEventAndThis(e){
	if(typeof(e)=='undefined')var e=window.event;
	source=e.target?e.target:e.srcElement;
	if(source.nodeType == 3)source = source.parentNode;
}

function criaOnFocus(){
	for (j=0;j<document.forms.length;j++){
		for (var i=0; i<document.forms[j].elements.length; i++){
			if (document.forms[j].elements[i].type == "text" || document.forms[j].elements[i].type == "password" || document.forms[j].elements[i].type == "textarea" || document.forms[j].elements[i].type == "select-one" || document.forms[j].elements[i].type == "file"){
				campoForm = document.forms[j].elements[i];
				adicionaEvento(campoForm, "focus", formFoca);
			}
		}
	}
}

function criaOnKeyPress()
{
	for (j=0;j<document.forms.length;j++){
		for (var i=0; i<document.forms[j].elements.length; i++){
			if (document.forms[j].elements[i].type == "text" || document.forms[j].elements[i].type == "password" || document.forms[j].elements[i].type == "textarea" || document.forms[j].elements[i].type == "select-one" || document.forms[j].elements[i].type == "file"){
				campoForm = document.forms[j].elements[i];
				adicionaEvento(campoForm, "keypress", formNormal);
			}
		}
	}
}
function criaOnKeyUp()
{
	for (j=0;j<document.forms.length;j++){
		for (var i=0; i<document.forms[j].elements.length; i++){
			var numerico = !(isNaN(parseInt(document.forms[j].elements[i].getAttribute("prox"))))
			if(document.forms[j].elements[i].type == "text" && numerico){
				campoForm = document.forms[j].elements[i];
				campoForm.setAttribute("campoProx", document.forms[j].elements[i+1].id);
				adicionaEvento(campoForm, "keyup", formProximo);
			}
		}
	}
}


function criaOnBlur(){
	for (j=0;j<document.forms.length;j++){
		for (var i=0; i<document.forms[j].elements.length; i++){
			if (document.forms[j].elements[i].type == "text" || document.forms[j].elements[i].type == "password" || document.forms[j].elements[i].type == "textarea" || document.forms[j].elements[i].type == "select-one" || document.forms[j].elements[i].type == "file"){
				campoForm = document.forms[j].elements[i];
				adicionaEvento(campoForm, "blur", formBlur);
			}
		}
	}
}
function criaOnChange(){
	for (j=0;j<document.forms.length;j++){
		for (var i=0; i<document.forms[j].elements.length; i++){
			if(document.forms[j].elements[i].type == "select-one"){
				campoForm = document.forms[j].elements[i];
				adicionaEvento(campoForm, "change", chamaFormDesfoca);
			}
		}
	}
}

function formFoca (e){
	criaEventAndThis(e)
	escondeTexto(source);
	if(source.getAttribute("foco"))
		if(source.getAttribute("foco")!=1){
			if(cor_foco_borda!=""){
				source.style.borderColor = cor_foco_borda;
				source.style.borderWidth = "1px";
			}
			if(cor_foco_fundo!="")
				source.style.backgroundColor=cor_foco_fundo;
		}
}
function formDesfoca(campo, numtexto){
		source.style.borderColor = "";
		source.style.borderWidth = "";
		source.style.backgroundColor ="";
		mostraTexto(campo, numtexto);
		if(document.getElementById("vld_img_"+source.id)){
			var tr = source.parentNode;
			tr.removeChild(document.getElementById("vld_img_"+source.id));
		}
}
function formBlur (e){
	criaEventAndThis(e)
	if(source.readOnly)
		return false;
	if(source.getAttribute("tipo")=='CEP' || source.getAttribute("tipo")=='CPF' || source.getAttribute("tipo")=='IN')
		mostraTexto(source, 3)
}

function desfocaAreaRestrita(){
	formDesfoca(source,'');
}
function escondeTexto(campo){
	for (var i=1; i <= texto.length; i++){
		if (campo.value == texto[i]){
			campo.value = ""
		}
	}
}
function mostraTexto(campo, numtexto){
	if (campo.value == "" && numtexto != ""){
		campo.value = texto[numtexto];
	}
}
function formNormal (e){
	criaEventAndThis(e);
	source.style.borderColor ="";
	source.style.backgroundColor ="";
	if(document.getElementById("vld_img_"+source.id)){
		var tr = source.parentNode;
		tr.removeChild(document.getElementById("vld_img_"+source.id));
	}
	source.setAttribute("foco", "0");
}
function formProximo(e){
	criaEventAndThis(e);	
	var code=(window.event)?window.event.keyCode:e.which;
	if(source.value.length==source.getAttribute("prox") && code!=08 && code!=110){
		document.getElementById(source.getAttribute("campoProx")).focus();
	}
}

function verificaUpload(form, extensoes, obrigatorio, tamanhoMaximo) {
	var minWidth="";
	var minHeight="";
	var maxWidth="";
	var maxHeight="";
	var saveWidth="";
	var saveHeight="";
	
	var allUploadsOK = true;
	document.MM_returnValue = false;
	for (var i = 0; i < form.elements.length; i++) {
		field = form.elements[i];
		if (!field.type || field.type.toUpperCase() != 'FILE') {
			continue;
		}
		checkOneFileUpload(field,extensoes,obrigatorio,tamanhoMaximo,minWidth,minHeight,maxWidth,maxHeight,saveWidth,saveHeight);
		if (!field.uploadOK) {
			allUploadsOK = false;
			break;
		}
	}
	if (allUploadsOK) {
		document.MM_returnValue = true;
	}
	showProgressWindow();
}

function checkOneFileUpload(field, extensoes, obrigatorio, tamanhoMaximo, minWidth, minHeight, maxWidth, maxHeight, saveWidth, saveHeight) {
	var fileName = field.value.replace(/"/gi,'');
	field.uploadOK = false;
	if (fileName == '') {
		if (obrigatorio) {
			alerta('Escolha um arquivo!');
			field.focus();
			return;
		} else {
			field.uploadOK = true;
		}
	} else {
		if (extensoes != '') {
			checkFileExtension(field, fileName, extensoes);
		} else {
			field.uploadOK = true;
		}
		if (!document.layers && field.uploadOK) {  
			document.PU_uploadForm = field.form;
			re = new RegExp("\.(gif|jpg|png|bmp|jpeg)$","i");
			if(re.test(fileName)) {
				//
			}
		}
	}
	return;
}

function checkFileExtension(field, fileName, extensoes) {
	var re = new RegExp("\\.(" + extensoes.replace(/,/gi,"|").replace(/\s/gi,"") + ")$","i");
	var agt = navigator.userAgent.toLowerCase();
	var is_mac = (agt.indexOf("mac") != -1);
	var is_op = (agt.indexOf("opera") != -1);
	if (is_op) {
		var ext = fileName.substring(fileName.lastIndexOf('.')+1, fileName.length);
		var extArr = extensoes.split(',');
		var extCheck = false;
		for (var i = 0; i < extArr.length; i++) {
			if (extArr[i].toLowerCase() == ext.toLowerCase()) {
				extCheck = true;
				break;
			}
		}
		if (extCheck == false) {
			alerta('Este tipo de arquivo não é válido.\nApenas as seguintes extensões são aceitas: ' + extensoes + '.');
			field.focus();
			field.uploadOK = false;
			return;
		}
	} else {
		if (!re.test(fileName)) {
			alerta('Este tipo de arquivo não é válido.\nApenas as seguintes extensões são aceitas: ' + extensoes + '.');
			field.focus();
			field.uploadOK = false;
			return;
		}
	}
	field.uploadOK = true;
}


function showProgressWindow() {
	var progressFile='../images/fileCopyProgress.htm';
	var popWidth=300;
	var popHeight=100;
	var showProgress = false, form, field;
	for (var f = 0; f<document.forms.length; f++) {
		form = document.forms[f];
		for (var i = 0; i<form.elements.length; i++) {
			field = form.elements[i];
			if (!field.type || field.type.toUpperCase() != 'FILE') {
				continue;
			}
			if (field.value != '') {
				showProgress = true;
				break;
			}
		}
	}
	if (showProgress && document.MM_returnValue) {
		var w = 480, h = 340;
		if (document.all || document.layers || document.getElementById) {
			w = screen.availWidth; h = screen.availHeight;
		}
		var leftPos = (w-popWidth)/2, topPos = (h-popHeight)/2;
		document.progressWindow = window.open(progressFile,'ProgressWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=' + popWidth + ',height='+popHeight);
		document.progressWindow.moveTo(leftPos, topPos);
		document.progressWindow.focus();
		window.onunload = function () {
			document.progressWindow.close();
		};
	}
}



