var strStatusCarregando = '';
var _strStatusCarregando = '';
function enviaPageAjaxExpress(URL, tagId, parametros, fcnJSEval, blnIsAlerta, Assincrono, StatusCarregando) {
	var fcnJSEval = (fcnJSEval == undefined || fcnJSEval == null ? '' : fcnJSEval);
	var parametros = (parametros == undefined || parametros == null ? '' : parametros);
	var blnIsAlerta = (blnIsAlerta == undefined || blnIsAlerta == null ? false : blnIsAlerta);
	var atualizarSpan = (blnIsAlerta ? -3 : -1);
	return enviaPageAjax(URL, tagId, true, blnIsAlerta, atualizarSpan, '', '', fcnJSEval, parametros, Assincrono, null, null, StatusCarregando);
}

function enviaPageAjaxEncode(URL, tagId, efetuarAcao, isBoxAlerta, atualizarSpan, MensagemSucesso, MensagemErro, fcnJSEval, parametros, blnRetornoID, Encode, Assincrono){
	return enviaPageAjax(URL, tagId, efetuarAcao, isBoxAlerta, atualizarSpan, MensagemSucesso, MensagemErro, fcnJSEval, parametros, blnRetornoID, Encode, Assincrono);
}

function enviaPageAjax(URL, tagId, efetuarAcao, isBoxAlerta, atualizarSpan, MensagemSucesso, MensagemErro, fcnJSEval, parametros, blnRetornoID, Encode, Assincrono, StatusCarregando) {
	var Encode = (Encode == null || Encode == undefined ? 'ISO-8859-1' : Encode);
	var isBoxAlerta = (isBoxAlerta == null  ? false : isBoxAlerta);
	var atualizarSpan = (atualizarSpan == null ? false : atualizarSpan.toString());
	var MensagemSucesso = (MensagemSucesso == null  ? 'Requisicao efetuada com sucesso.' : MensagemSucesso);
	var MensagemErro = (MensagemErro == null ? 'Ocorreu um erro na sua requisicao.' : MensagemErro);

	var spnAjax = null;
	if (typeof tagId == "string") {
		spnAjax = $(tagId);
	}
	else {
		spnAjax = tagId;
	}
	var blnRetornoID = (blnRetornoID == null ? false : blnRetornoID);
	var Assincrono = (Assincrono == null || Assincrono == undefined ? true : Assincrono);

	if (efetuarAcao) {
		if (strStatusCarregando == undefined || strStatusCarregando == null) {
			var strStatusCarregando = '';
			if(atualizarSpan || atualizarSpan == '-1' || atualizarSpan == '-2') {
				var StatusCarregando = (StatusCarregando == null || StatusCarregando == undefined ? 'Aguarde...' : StatusCarregando);
				strStatusCarregando = '<font face="verdana" size="1">' + StatusCarregando + '</font><br><img src="/Images/ajax-loader5.gif" height="14">';
			}
			else {
				var StatusCarregando = (StatusCarregando == null || StatusCarregando == undefined ? 'Aguarde, carregando...' : StatusCarregando);
				strStatusCarregando = '<br><br><div align="center" style="width: 100%;"><img src="/Images/ajax-loader.gif"><br><br><strong>' + StatusCarregando + '</strong></div>';
			}
		}

		if (parametros != '') {
			parametros = parametros + '&rnd' + Math.random();
		}
		else{
			parametros = '?rnd' + Math.random();
		}

		$.ajax({
			url: URL,
			data: parametros,
			context: $("#" + tagId),
			timeout: (5 * 60 * 1000),
			type: "POST",
			statusCode: {
				200: function() {
					if(console) {
						console.log("Pagina lida com sucesso.");
					}
				},
				404: function() {
					//alert('Pagina nao encontrada');
					if(console) {
						console.log("Pagina nao encontrada");
					}
				},
				500: function() {
					//alert('Erro ocorrido na pagina.');
					if(console) {
						console.log("Erro ocorrido na pagina.");
					}
				}
			},
			error: function(jqXHR, textStatus, errorThrown) {
				alert("Ocorreu um erro na sua requisicao: \nStatus: " + textStatus + "\nDescricao: " + errorThrown);
			},
			success: function(data, textStatus, jqXHR) {
				if(isBoxAlerta) {
					$(this).hide();
					alert(data);
				}
				else {
					$(this).html(data);
				}

				if(fcnJSEval) {
					var strRetorno = data;
					var arrID = strRetorno.split('[ID]');
					for(var i = 0; i <= arrID.length; i++) {
						fcnJSEval = fcnJSEval.replace('[ID]', strRetorno);
					}
					eval(fcnJSEval);
				}

			}
		});
	}
	else{
		spnAjax.innerHTML = '';
	}
}

function coletaDadosForm(frmForm, strTipoCampo, idExcetoCampo, blnFull, blnCodificar, blnExcluirBotoes, blnDesabilitarCampo, blnVerificarValor, blnRequestById){
	blnFull = (blnFull ? blnFull : false);
	blnCodificar = (blnCodificar ? blnCodificar : true);
	blnExcluirBotoes = (blnExcluirBotoes ? blnExcluirBotoes : false);
	blnDesabilitarCampo = (blnDesabilitarCampo ? blnDesabilitarCampo : false);
	blnVerificarValor = (blnVerificarValor ? blnVerificarValor : false);
	blnRequestById = (blnRequestById != null && blnRequestById != undefined ? blnRequestById : true);
	strTipoCampo = (strTipoCampo ? strTipoCampo : '');
	idExcetoCampo = (idExcetoCampo ? idExcetoCampo : '');

	var strDados = '';
	for(var i = 0; i < frmForm.length; i++){
		var objElemento = frmForm.elements[i];
		var strValor = '';
		var strTipoCampoAtual = objElemento.type;
		
		if((strTipoCampo == strTipoCampoAtual || strTipoCampo == '') && objElemento.id != idExcetoCampo || blnFull){
			if(blnExcluirBotoes){
				if(strTipoCampoAtual == 'button' || strTipoCampoAtual == 'submit' || strTipoCampoAtual == 'reset'){
					continue;
				}
			}
			strTipoCampo = (blnFull ? strTipoCampoAtual : strTipoCampo);
			switch (strTipoCampo) {
				case "select-one":
					if (objElemento.options) {
						strValor = objElemento.options[objElemento.selectedIndex].value;
					}
					break;
				case "checkbox":
					if(objElemento.checked){
						strValor = objElemento.value;
					}
					else {
						continue;
					}
					break;
				case "radio":
					if(objElemento.checked){
						strValor = objElemento.value;
					}
					else{
						continue;
					}
					break;
				case "text":
					strValor = objElemento.value.replaceAll('\n', '<br>');
					break;
				case "textarea":
					strValor = objElemento.value.replaceAll('\n', '<br>');
					break;
				case "hidden":
					strValor = objElemento.value.replaceAll('\n', '<br>');
					break;
				default: 
					strValor = objElemento.value.replaceAll('\n', '<br>');
					break;
			}
			var blnOk = (blnVerificarValor ? (strValor != undefined && strValor != null && strValor != '') : true);
			if(blnOk){
				strValor = strValor.replace("'", "\'").replace('"', '\"');

				if (objElemento.id != undefined && objElemento.id != null && objElemento.id != '' && blnRequestById) {
					strValor = (blnCodificar ? escape(strValor) : strValor);
					strDados = strDados + objElemento.id.trim() + '=' + strValor + '&';
				}
				else if(objElemento.name != undefined && objElemento.name != null && objElemento.name != ''){
					strValor = (blnCodificar ? escape(strValor) : strValor);
					strDados = strDados + objElemento.name.trim() + '=' + strValor + '&';
				}
				
				if(blnDesabilitarCampo){
					if(objElemento.disabled != null && objElemento.disabled != undefined){
						objElemento.disabled = blnDesabilitarCampo;
					}
				}
			}
		}
	}
	strDados = strDados.substr(0, (strDados.length-1));
	return strDados;
}

function desabilitarCampos(frmForm, strTipoCampo, idExcetoCampo, blnFull, blnExcluirBotoes, blnHabilitarCampos){
	blnFull = (blnFull ? blnFull : false);
	blnHabilitarCampos = (blnHabilitarCampos != null && blnHabilitarCampos != undefined ? blnHabilitarCampos : false);
	blnExcluirBotoes = (blnExcluirBotoes ? blnExcluirBotoes : false);
	strTipoCampo = (strTipoCampo ? strTipoCampo : '');
	idExcetoCampo = (idExcetoCampo ? idExcetoCampo : '');

	var strDados = '';
	for(var i = 0; i < frmForm.length; i++){
		var objElemento = frmForm.elements[i];
		var strTipoCampoAtual = objElemento.type;
		if((strTipoCampo == strTipoCampoAtual || strTipoCampo == '') && objElemento.id != idExcetoCampo || blnFull){
			if(blnExcluirBotoes){
				if(strTipoCampoAtual == 'button' || strTipoCampoAtual == 'submit' || strTipoCampoAtual == 'reset'){
					continue;
				}
			}
			
			if(objElemento.disabled != null && objElemento.disabled != undefined){
				blnElementoOriginal = objElemento.disabled;
				objElemento.disabled = !blnHabilitarCampos;
			}
		}
	}
}

function getArgumentosQueryString(ArgumentosFuncao){
	var strRetorno = (ArgumentosFuncao.length > 0 ? '?' : '');
	for(var i = 0; i < ArgumentosFuncao.length; i++){
		strRetorno += ArgumentosFuncao[i] + '&';
	}
	if(strRetorno != '?' && ArgumentosFuncao.length > 0){
		strRetorno = strRetorno.substring(0, strRetorno.length-1);
	}
	
	return strRetorno;
}

function getParametro(ParametrosBusca, Parametro){
	var arrParametros;
	var strRetorno = '';
	var arrParametros = ParametrosBusca.split('&');
	for(i = 0; i < arrParametros.length; i++){
		var strParametro = arrParametros[i];
		var arrDadosParametros = strParametro.split('=');
		
		if(arrDadosParametros[0] == Parametro){
			strRetorno = arrDadosParametros[1];
		}
	}
	return strRetorno;
}
