function sysOpenWindow(target, wName, params){
	try{
		var p = (params == undefined || params == '' ? 'status=yes,toolbar=no,scrollbars=no,resizable=no,width=700,height=430' : params);
		window.open(target, wName, p);
	}catch(e){
		sysErrorAnalyzis(e);
	}
}

function sysGoTo(url, target){
	try{
		if (target == '_self' || target == '' || target == undefined){
			window.location = url;
		}else if (target == '_parent'){
			if (window.opener != null)
				window.opener.location = url;
			else
				window.location = url;
		}else{
			sysOpenWindow(url, 'SiteNewWin');
		}
	}catch(e){
		sysErrorAnalyzis(e);
	}
}
function sysErrorAnalyzis(objError){
	var errName = objError.name;
	var errMsg = objError.description;
	var errNumber = objError.number;
	var caller = sysErrorAnalyzis.caller;
	alert('Erro inesperado de JavaScript: '+ errName +"\n"+ errMsg +"\n\nCode ...\n"+ caller);
}

function sysTrim(str){
   return str.replace(/^\s*|\s*$/g,"");
}

function sysUpperCase(str){
	return str.toUpperCase();
}

function sysLimparCPFCNPJ(str){
	str = str.replace(/\./g, '');
	str = str.replace(/\//g, '');
	str = str.replace(/\-/g, '');
	return str;
}

function sysFormatarCPF(numeroCFP){
	return numeroCFP.substr(0, 3) +'.'+ numeroCFP.substr(3, 3) +'.'+ numeroCFP.substr(6, 3) +'-'+ numeroCFP.substr(9, 2);
}

function sysFormatarCNPJ(numeroCNPJ){
	return numeroCNPJ.substr(0, 2) +'.'+ numeroCNPJ.substr(2, 3) +'.'+ numeroCNPJ.substr(5, 3) +'/'+ numeroCNPJ.substr(8, 4) +'-'+ numeroCNPJ.substr(12, 2);
}

function sysFormatarCPFCNPJ(str){
	if (str.length == 11){
		return sysFormatarCPF(str);
	}else if(str.length == 14){
		return sysFormatarCNPJ(str);
	}else{
		return str;
	}
}

function sysValidarCPF(paramCPF){
	var cpfArray = new Array(11);
	var soma;
	var resto;	
	
	// Formata o CPF e verifica se o formato é permitido
	paramCPF = paramCPF.replace('.', '').replace('-', '');
	if(paramCPF.length != 11 || isNaN(paramCPF.valueOf()) ) return false;
	if(	paramCPF == "00000000000" || paramCPF == "11111111111" ||
		paramCPF == "22222222222" || paramCPF == "33333333333" || paramCPF == "44444444444" ||
		paramCPF == "55555555555" || paramCPF == "66666666666" || paramCPF == "77777777777" ||
		paramCPF == "88888888888" || paramCPF == "99999999999") return false;
	
	// Gera um Array com os digitos do CPF recebido
	for(soma = 0, i = 0 ; i < 11 ; i++)
		cpfArray[i] = paramCPF.charAt(i).valueOf();
	
	// Confere o 1º digito verificador	
	for(soma = 0, i = 0 ; i < 9 ; i++)
		soma +=  cpfArray[i]* (10-i)
	resto = soma % 11;
	if(resto == 0 || resto == 1){ if(cpfArray[9] != 0)return false; }
	else if(cpfArray[9] != 11 - resto )	return false;
	
	// Confere o 2º digito verificador
	for(soma = 0, i = 0 ; i < 10 ; i++)
		soma +=  cpfArray[i]* (11-i)
	resto = soma % 11;	
	if(resto == 0 || resto == 1){ if(cpfArray[10] != 0)return false; }
	else if(cpfArray[10] != 11 - resto )	return false;
	
	// Os 2 digitos verificadores estão
	// corretos, por isso, retorna true	
	return true;
} 
function sysValidarCNPJ(paramCNPJ){
	if (paramCNPJ.length != 14){
		sim = false;
	}else{
		sim=true
	}
	if(sim){
		for (i=0;((i<=(paramCNPJ.length-1))&& sim); i++){
		   val = paramCNPJ.charAt(i)
			if ((val!="9")&&(val!="0")&&(val!="1")&&(val!="2")&&(val!="3")&&(val!="4") &&
				(val!="5")&&(val!="6")&&(val!="7")&&(val!="8")){
				sim = false;
			}
		}
		if(sim){// se for numero continua
			m2 = 2;
			soma1 = 0;
			soma2 = 0;
			for (i=11; i>=0; i--){
				val = eval(paramCNPJ.charAt(i));
				m1 = m2;
				if (m2<9){
					m2 = m2 + 1;
				}else{
					m2 = 2;
				}
				soma1 = soma1 + (val * m1);
				soma2 = soma2 + (val * m2);
			}  // fim do for de soma
			soma1 = soma1 % 11;
			if (soma1 < 2){
				d1 = 0;
			}else{
				d1 = 11- soma1;
			}
			soma2 = (soma2 + (2 * d1)) % 11;
			if (soma2 < 2){
				d2 = 0;
			}else{
				d2 = 11- soma2;
			}
			if ((d1==paramCNPJ.charAt(12)) && (d2==paramCNPJ.charAt(13))){
				return true;
			}else{
				return false;
			}
		}
	}else{
		return false;
	}
}

function sysGetElement(elementId, isFrame){
	try{
		if (isFrame != undefined){
			return document.frames[elementId];
		}else{
			return document.getElementById(elementId);
		}
	}catch(e){
		sysErrorAnalyzis(e);
	}
}
function sysReloadFrame(iFrameName, srcPath, vars){
	try{
		var iFrame = sysGetElement(iFrameName);
		if (srcPath != undefined){
			var caminho = (vars != '' && vars != undefined ? srcPath +'?'+ vars : srcPath);
			iFrame.src = caminho;
		}else{
			iFrame.src = iFrame.src;
		}
	}catch(e){
		sysErrorAnalyzis(e);
	}
}
function sysValidarNumero(campo){
	if(isNaN(campo.value)){
		alert('O valor digitado não é um número válido. Um exemplo de número certo é 135.00');
		campo.focus();
		return false;
	}
}

function sysValidarFormulario (janelaParaStatus, frm, navegacaoSalvar, exibirStatus, idJanelaAtual, tituloArea, iconeArea){
	var elementos = frm.elements;
	var campo = null;
	var valido = true;
	var i = 0;
	var obriga = true;
	var tipo = '';
	var result = false;
	try{
		var validaCampo = new RegExp(/^(\w){3}_(\d){1}_(\w)+$/);
		while (valido && (i < elementos.length)){
			campo = elementos[i];
			obriga = (campo.name.substr(4, 1) == '1');
			tipo = campo.name.substr(0, 3);

			campoSenha = (sysUpperCase(campo.name).indexOf('SENHA') != -1 || sysUpperCase(campo.title).indexOf('SENHA') != -1);
			if (campoSenha){
				preenchido = (campo.value != '');
			}else{
				preenchido = (sysTrim(campo.value) != '');
			}
			try{
				if (obriga && !preenchido && validaCampo.test(campo.name)){
					valido = false
					msg = 'O preenchimento do campo '+ campo.title +' é obrigatório.';
				}
			}catch(e){
			}
			var ehCampoHidden = (campo.type != undefined && campo.type == 'hidden');
			var ehCampoComboBox = (campo.tagName == 'SELECT');
			if (valido && (tipo == 'int')){
				if(!ehCampoHidden && !ehCampoComboBox && isNaN(campo.value) ){
					valido = false;
					campo = elementos[i];
					msg = 'O valor informado para o campo '+ campo.title +' não é um número válido.';
				}
			}
			if (!valido){
				if (campo != undefined && typeof(campo) == 'object' && !ehCampoHidden && campo.disabled != undefined && !campo.disabled) campo.focus();
				alert(msg);
			}
			i++;
		}
		if (valido)	result = true;
		if (result){
			str = frm.action.toString();
			frm.action = str + (str.indexOf('?') != -1 ? '&' : '?') +'salvarRegistro=1';
			var validacaoExtra = (janelaParaStatus.executarAntesDeSubmeter != undefined ? janelaParaStatus.executarAntesDeSubmeter() : true);
			var submeterForm = (validacaoExtra && navegacaoSalvar != undefined && navegacaoSalvar);
			frm.action = frm.action + (frm.action.indexOf('?') == -1 ? '?' : '&') + 'idJanelaAtual='+ idJanelaAtual + '&tituloArea='+ tituloArea + '&iconeArea='+ iconeArea;
			var exibeStatus = (exibirStatus != undefined && exibirStatus);
			if (submeterForm){
				frm.submit();
			}else{
				// Retorna true ou false de acordo com o processamento ocorrido na função executarAntesDeSubmeter()
				result = validacaoExtra;
			}
		}
		return result;
	}catch(e){
		sysErrorAnalyzis(e);
	}
}

function sysFecharJanela(confirmar){
	try{
		var fechar = true;
		if (confirmar != undefined) fechar = confirm('Deseja realmente cancelar a operação?');
		if (fechar) window.close();
	}catch(e){
		sysErrorAnalyzis(e);
	}
}

function sysExibeStatus(texto){
	try{
		window.status = (texto != undefined ? texto : 'Renne Admin');
	}catch(e){
		sysErrorAnalyzis(e);
	}
}

function expandirImagem(caminho){
	var param = 'status=no,toolbar=no,scrollbars=no,resizable=no,width=100,height=100';
	if (caminho != ''){
		sysOpenWindow('SysAdmin/ExibeImagem.php?caminhoImagem='+ caminho, 'ImagemProduto', param);
	}
}