﻿function ObterDadosFormulario(form) {

  var formulario = $(form)
                    .find("input,textarea,select,hidden")
                    .not("#__VIEWSTATE,#__EVENTVALIDATION").serializeArray();

  var Dados = "{ strParametros: '";

  $.each($(formulario), function () {
    Dados += $(this).attr('name') + ":" + $(this).attr('value').replace("\'", "") + "(?parametros@ht?)";
  });

  Dados = Dados.substring(0, Dados.length - 1);

  Dados += "' }";

  return Dados;

}

function Ajax(url, parametros, sucesso) {
  $.ajax({
    type: 'POST',
    url: url,
    data: parametros,
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: sucesso
  });
}

function ResolveUrl(url) {
  if (url.indexOf("~/") == 0) {
    url = baseUrl + url.substring(2);
  }
  return url;
}

/*----------------------------------------------------------------------------------
Descrição......: Função para formataçao de Campo Telefone/Fax
Atualizações...: [00]
Versão.........: 1.0
Versão Inicial.: 08/10/2009
Autor..........: Rafael Peres
Empresa........: Nexxti Tecnologia Inteligente
Observações....: Recebe o Campo (ID) como parametro
----------------------------------------------------------------------------------*/
function FormatarTelefone(pCampo)
{
  var i = pCampo.value.length;
  if(i==0){
		pCampo.value = '(';
  }
  if(i==3){
		pCampo.value += ') ';
  }
  if(i==9){
		pCampo.value += '-';
  }
}

/*----------------------------------------------------------------------------------
Descrição......: Função para formatação de Moeda
Atualizações...: [00]
Versão.........: 1.0
Versão Inicial.: 22/11/2005
Autor..........: Rafael Peres
Empresa........: Nexxti Tecnologia Inteligente
Observações....: Recebe o Valor como parametro e o identificador para mil e dez
----------------------------------------------------------------------------------*/
function FormatarMoeda(fld, milSep, decSep, e)
{
	var sep = 0;
	var key = '';
	var i = j = 0;
	var len = len2 = 0;
	var strCheck = '0123456789';
	var aux = aux2 = '';
	var whichCode = (window.Event) ? e.which : e.keyCode;

	if(whichCode == 13){
		return true;
	}

	key = String.fromCharCode(whichCode);

	if(strCheck.indexOf(key) == -1){
		return false;
	}

	len = fld.value.length;

	for(i = 0; i < len; i++){
		if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)){
			break;
		}
		aux = '';
	}

	for(; i < len; i++)
	{
		if(strCheck.indexOf(fld.value.charAt(i))!=-1){
			aux += fld.value.charAt(i);
		}
	}
	aux += key;
	len = aux.length;

	if(len == 0){
		fld.value = '';
	}
	if(len == 1){
		fld.value = '0'+ decSep + '0' + aux;
	}
	if(len == 2){
		fld.value = '0'+ decSep + aux;
	}

	if(len > 2){
		aux2 = '';
		for(j = 0, i = len - 3; i >= 0; i--){
			if (j == 3){
				aux2 += milSep;
				j = 0;
			}
			aux2 += aux.charAt(i);
			j++;
		}

		fld.value = '';
		len2 = aux2.length;

		for(i = len2 - 1; i >= 0; i--){
			fld.value += aux2.charAt(i);
		}
		fld.value += decSep + aux.substr(len - 2, len);
	}
  event.returnValue=false;return false;
}

/*----------------------------------------------------------------------------------
Descrição......: Função para validação de Datas
Atualizações...: [00]
Versão.........: 1.0
Versão Inicial.: 08/10/2009
Autor..........: Rafael Peres
Empresa........: Nexxti Tecnologia Inteligente
Observações....: Recebe Data como parametro, returna True ou False
----------------------------------------------------------------------------------*/
function ValidarData(pData)
{
	var dia, mes, ano;

	if(pData.length < 10){
		return false;
	}

	mes = pData.substr(3,2);

	if(mes > "12" || mes == "00"){
		return false;
	}

	dia = pData.substr(0,2);

	if(dia=="00"){
		return false;
	}

	ano = pData.substr(6,4);

	if(ano < "1900"){
		return false;
	}

	if(mes=="01"||mes=="03"||mes=="05"||mes=="07"||mes=="08"||mes=="10"||mes=="12"){
		if (dia > "31"){
			return false;
		}
	}

	if(mes=="04"||mes=="06"||mes=="09"||mes=="11"){
		if (dia > "30"){
			return false;
		}
	}

	if(mes=="02"){
		if((parseInt(ano) % 4)==0){
			if (dia > "29"){
				return false;
			}
		}else{
			if(dia > "28"){
				return false;
			}
		}
	}

	return true;
}

/*----------------------------------------------------------------------------------
Descrição......: Função para formatação de Campos
Atualizações...: [00]
Versão.........: 1.0
Versão Inicial.: 08/10/2009
Autor..........: Rafael Peres
Empresa........: Nexxti Tecnologia Inteligente
Observações....: Recebe o Campo (ID) e o formato da Máscara como parametro
----------------------------------------------------------------------------------*/
function FormatarMascara(pCampo, pMascara)
{

	var iTamanho = pCampo.value.length;
	var sCaracter = pMascara.substring(0,1);
	var vTexto = pMascara.substring(iTamanho);

	if(vTexto.substring(0,1) != sCaracter)
	{
		pCampo.value += vTexto.substring(0,1);
	}

}

/*----------------------------------------------------------------------------------
Descrição......: Função para validação de CPF
Atualizações...: [00]
Versão.........: 1.0
Versão Inicial.: 08/10/2009
Autor..........: Rafael Peres
Empresa........: Nexxti Tecnologia Inteligente
Observações....: Recebe o CPF como parametro
----------------------------------------------------------------------------------*/
function ValidarCPF(pCPF)
{

  CPF = pCPF;
  CPF = CPF.replace('.', '');
  CPF = CPF.replace('-', '');
  CPF = CPF.replace('.', '');

  if (CPF.length != 11 || CPF == "00000000000" || CPF == "11111111111" ||  CPF == "22222222222" || CPF == "33333333333" || CPF == "44444444444" ||  CPF == "55555555555" || CPF == "66666666666" || CPF == "77777777777" ||  CPF == "88888888888" || CPF == "99999999999"){
    event.returnValue=false;return false;
  }
  soma = 0;
  for (i=0; i < 9; i ++){
    soma += parseInt(CPF.charAt(i)) * (10 - i);
  }
  resto = 11 - (soma % 11);
  if (resto == 10 || resto == 11){
    resto = 0;
  }
  if (resto != parseInt(CPF.charAt(9))){
    event.returnValue=false;return false;
  }
  soma = 0;
  for (i = 0; i < 10; i ++){
    soma += parseInt(CPF.charAt(i)) * (11 - i);
  }
  resto = 11 - (soma % 11);
  if (resto == 10 || resto == 11){
    resto = 0;
  }
  if (resto != parseInt(CPF.charAt(10))){
    event.returnValue=false;return false;
  }
  return true;
}

function CarregarImagens()
{
  var d=document; if(d.images){ if(!d.p) d.p=new Array();
  var i,j=d.p.length,a=CarregarImagens.arguments; for(i=0; i<a.length; i++)
  if (a[i].indexOf("#")!=0){ d.p[j]=new Image; d.p[j++].src=a[i];}}
}

function RedirecionarPagina(pUrl)
{
  location.href(pUrl);
  //location.replace(pUrl);
}

/*----------------------------------------------------------------------------------
Descrição......: Função para abrir URL em nova Janela
Atualizações...: [00]
Versão.........: 1.0
Versão Inicial.: 08/10/2009
Autor..........: Rafael Rodrigo Peres
Empresa........: Nexxti Tecnologia Inteligente
Observações....: Recebe a URL a ser direcionada como parametro
----------------------------------------------------------------------------------*/
function AbrirSite(parURL)
{
  window.open(parURL, "_blank");
}

/*----------------------------------------------------------------------------------
Descrição......: Função para contar caracteres restantes em TextBox
Atualizações...: [00]
Versão.........: 1.0
Versão Inicial.: 04/04/2010
Autor..........: Rafael Rodrigo Peres
Empresa........: Nexxti Tecnologia Inteligente
Observações....: Recebe 
----------------------------------------------------------------------------------*/
function ContadorCaracteresRestantes(pCampoTexto, pContador, pQuantidadeCaracteres)
{
  document.getElementById(pContador).innerText = (pQuantidadeCaracteres - document.getElementById(pCampoTexto).value.length);

  if(document.getElementById(pCampoTexto).value.length >= pQuantidadeCaracteres){
    document.getElementById(pCampoTexto).value = document.getElementById(pCampoTexto).value.substring(0,pQuantidadeCaracteres);
    document.getElementById(pContador).innerText = '0';
    return false;
  }
}

function mOvr(parObj,clrOver)
{
 	if (!parObj.contains(event.fromElement))
	{
		parObj.style.cursor = 'hand';
		parObj.bgColor = clrOver;
		parObj.borderColor = clrOver;
	}
}

function mOut(parObj,clrIn)
{
	if (!parObj.contains(event.toElement))
	{
		parObj.style.cursor = 'default';
		parObj.bgColor = clrIn;
	}
}

/*----------------------------------------------------------------------------------
Descrição......: Função para bloquear o F5 (Refresh) na página
Atualizações...: [00]
Versão.........: 1.0
Versão Inicial.: 01/04/2010
Autor..........: Rafael Rodrigo Peres
Empresa........: Nexxti Tecnologia Inteligente
----------------------------------------------------------------------------------*/
function CancelarRefresh()
{
  if(window.event && window.event.keyCode == 116){
    window.event.keyCode = 8;
  }
}

/*----------------------------------------------------------------------------------
Descrição......: Função para alterar uma imagem
Atualizações...: [00]
Versão.........: 1.0
Versão Inicial.: 08/10/2009
Autor..........: Rafael Rodrigo Peres
Empresa........: Nexxti Tecnologia Inteligente
Observações....: Recebe o Objeto a ser alterado e o Caminho da nova Imagem
----------------------------------------------------------------------------------*/
function AlterarImagem(parObj, parImage)
{
  if(document.getElementById(parObj)){
    document.getElementById(parObj).src = parImage;
  }
}

/*----------------------------------------------------------------------------------
Descrição......: Função para alterar um atributo (CSS)
Atualizações...: [00]
Versão.........: 1.0
Versão Inicial.: 08/10/2009
Autor..........: Rafael Rodrigo Peres
Empresa........: Nexxti Tecnologia Inteligente
Observações....: Recebe o Objeto a ser alterado e o novo Elemento CSS
----------------------------------------------------------------------------------*/
function AlterarEstilo(pObjeto, pElementoCss)
{
  if(pObjeto){
    pObjeto.className = pElementoCss;
  }
}

/*----------------------------------------------------------------------------------
Descrição......: Função para exibir/ocultar um objeto (Div, Botão, Campo, etc)
Atualizações...: [00]
Versão.........: 1.0
Versão Inicial.: 29/03/2010
Autor..........: Rafael Rodrigo Peres
Empresa........: Nexxti Tecnologia Inteligente
Observações....: Recebe o Tipo (Mostrar/Ocultar) e o Objeto a ser afetado
----------------------------------------------------------------------------------*/
function MostrarOcultarObjeto(pTipo, pObjeto, pBloquear)
{
  document.getElementById(pObjeto).style.display = 'none';
  if(pTipo=='Mostrar'){
    document.getElementById(pObjeto).style.display = '';
    if(pBloquear=='True'){
      event.returnValue=false;return false;
    }
  }else{
    event.returnValue=false;return false;
    return false;
  }
}

/*----------------------------------------------------------------------------------
Descrição......: Função para Alterar a Página de um iFrame
Atualizações...: [00]
Versão.........: 1.0
Versão Inicial.: 30/03/2010
Autor..........: Rafael Rodrigo Peres
Empresa........: Nexxti Tecnologia Inteligente
Observações....: Para dar refresh, manter a mesma página apenas "limpando" os dados
                 é só redirecionar para ela mesma.
----------------------------------------------------------------------------------*/
function AlterarIframe(pIframe, pPagina)
{
  document.getElementById(pIframe).src = pPagina;
  event.returnValue=false;return false;
}

function ObterPosicaoElemento(elemID)
{

  var offsetTrail = document.getElementById(elemID);
  var i = 0;
  var offsetLeft = 0;
  var offsetTop = 0;

  while (offsetTrail || i>1) {
    offsetLeft += offsetTrail.offsetLeft;
    offsetTop += offsetTrail.offsetTop;
    offsetTrail = offsetTrail.offsetParent;
  }

  if (navigator.userAgent.indexOf("Mac") != -1 && typeof document.body.leftMargin != "undefined") {
    offsetLeft += document.body.leftMargin;
    offsetTop += document.body.topMargin;
  }

  return offsetLeft;

}

function VerificarObjeto(n, d)
{

  var p,i,x;
  if(!d) d=document;
  if((p=n.indexOf("?"))>0 && parent.frames.length) {
    d = parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
  }
  if(!(x=d[n]) && d.all) x = d.all[n];
  for (i=0; !x && i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=verificarObjeto(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;

}

function MostrarOcultarMenu()
{
  var i,p,v,obj,args=MostrarOcultarMenu.arguments;

  for (i=0; i<(args.length-2); i+=3) if ((obj=VerificarObjeto(args[i]))!=null) { v=args[i+2];
    if (obj.style) {
      obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v;
    }
    obj.visibility=v;
	}
}

function DefinirValor(parObjeto, parValor)
{
  if(document.getElementById(parObjeto)){
    document.getElementById(parObjeto).innerText = parValor;
  }
}

/*----------------------------------------------------------------------------------
Descrição......: Função para verificar senha e confirmação de senha
Atualizações...: [00]
Versão.........: 1.0
Versão Inicial.: 30/12/2009
Autor..........: Rafael Peres
Empresa........: Nexxti Tecnologia Inteligente
Observações....: Recebe o Valor como parametro e o identificador para mil e dez
----------------------------------------------------------------------------------*/
function VerificarConfirmacaoSenha(parTexto1, parTexto2, parObjetoMensagem)
{
  document.getElementById(parObjetoMensagem).innerText = '';

  if(document.getElementById(parTexto1).value != document.getElementById(parTexto2).value){
    document.getElementById(parTexto1).value  = '';
    document.getElementById(parObjetoMensagem).innerText = 'Confirmação inválida';
    document.getElementById(parTexto2).focus();
    event.returnValue=false;return false;
  }
}
