/*Classe LibManivesUtility*/
	/*Início do plugin TrocaTextoInput ---- x ---- x ---- x ---- x ---- x ---- x ---- x */
	boolCampo = true; /*Var Booleana visa controlar o rececimento do focu no campo para que não caia em loop a troca do valor pelo campo na função AddValor*/
	strCampo = ''; /*Var String obtém o valor do id do campo que foi adicionado */
	strValor = '';

function LibManivesUtility()
{
	/*
		- Plugin TrocaTextoInput para trocar um valor textual por um input
		É necessário que haja um elemento na página que receba o foco quando o enter for pressionado.
	  Nesse caso o elemento nomeado para receber o foco foi focus, um input hidden.
		
		- Variáveis Globais e de usuo para o plugin TrocaTextoInput
	*/
	
	/*Validando o pressionamento da tecla enter e executa tirar o foco da tecla enter*/
	this.OnPress = function(evt)
	{
		var strKeyCode = evt.keyCode ? evt.keyCode : evt.charCode ? evt.charCode : evt.which ? evt.which : void 0;
	
		if (strKeyCode == 13)
			$('#valorPesquisa').focus();
	}

	
	/*Trocando o valor contido no elemento do campo input quantidade*/
	this.AddValor = function(idEeleMesmo,idCount,idReferencia, Parametro){
        
		if (boolCampo == true){
			strValor = $(idEeleMesmo).text();
			$(idEeleMesmo).html('');

			if (Parametro == 'Q')
				$(idEeleMesmo).html('<input type="text" fatorEmbalagem="' + $(idEeleMesmo).attr('fatorEmabalagemResumo') +  '" name="campo_value" style="width:100%;font-size:10px; border:none;" id="campo_value" value="' + parseInt(retirarFormatacao(strValor)) + '" onKeyPress="LibM.OnPress(event); fuc_mascara(this,fuc_soNumeros);" onFocus="$(this).attr(\'valor_anterior\',$(this).val())" onBlur="TratarValorZerado(this,\'' + idReferencia + '\',\'' + idCount +  '\'); LibM.VoltarValor(this,\'Q\'); SomarItensGrade(\'' + idReferencia + '\',\'' + idCount +  '\'); UpdateLinha(\'' + idReferencia + '\',\'' + idCount +  '\'); ">');
			if (Parametro == 'P')
				$(idEeleMesmo).html('<input type="text" name="campo_value" style="width:100%; font-size:10px; border:none;" size="8" maxlength="6" id="campo_value" value="' + strValor + '" onKeyPress="LibM.OnPress(event); return(formataMoeda(this,\'\',\',\',event));" onFocus="$(this).attr(\'valor_desc_anterior\',$(this).val());" onBlur="LibM.VoltarValor(this,\'P\'); AplicarDesconto(this,\'' + idCount +  '\'); UpdateLinha(\'' + idReferencia + '\',\'' + idCount +  '\');">');
			if (Parametro == 'A' )
				$(idEeleMesmo).html('<input type="text" name="campo_value" style="width:100%;font-size:10px; border:none;" id="campo_value" value="' +strValor + '" onKeyPress="LibM.OnPress(event); return(formataMoeda(this,\'\',\',\',event)); " onFocus="$(this).attr(\'valor_desc_anterior\',$(this).val())" onBlur="LibM.VoltarValor(this,\'A\'); TratarDescontoAliquota(this,\'' + idCount +  '\'); UpdateItemDaNota(\'' + idReferencia + '\',\'' + idCount +  '\'); ">');
			if (Parametro == 'N')
				$(idEeleMesmo).html('<input type="text" fatorEmbalagem="' + $(idEeleMesmo).attr('fatorEmabalagemResumo') +  '" name="campo_value" style="width:100%;font-size:10px; border:none;" id="campo_value" value="' + parseInt(retirarFormatacao(strValor)) + '" onKeyPress="LibM.OnPress(event); fuc_mascara(this,fuc_soNumeros);" onFocus="$(this).attr(\'valor_anterior\',$(this).val())" onBlur="TratarValorZerado(this,\'' + idReferencia + '\',\'' + idCount +  '\'); LibM.VoltarValor(this,\'Q\'); SomarItensGrade(\'' + idReferencia + '\',\'' + idCount +  '\'); UpdateLinha(\'' + idReferencia + '\',\'' + idCount +  '\',\'' + $(idEeleMesmo).attr('cod_pedido_item') + '\'); ">');

			boolCampo = false;
			strCampo = $(idEeleMesmo).attr('id');
			$('#campo_value').focus();
		}
	}   

	/*Retorna o valor preenchido no campo input para o elemento antigo*/
	this.VoltarValor = function(idEeleMesmo,Parametro)
	{
		boolCampo = true;
		strValor = $(idEeleMesmo).val();
		
		if (strValor == '')
			strValor = 0;
			
		if (Parametro == 'Q')
			$(idEeleMesmo).parent().html(LibM.FormatarIteiroDeSaida(parseInt(strValor)));
		if (Parametro == 'P')
			$(idEeleMesmo).parent().html(strValor);			
		if (Parametro == 'A')
			$(idEeleMesmo).parent().html(strValor);
			
		$(idEeleMesmo).remove();
	}
	/*Fim do plugin TrocaTextoInput ---- x ---- x ---- x ---- x ---- x ---- x ---- x */
	
	
	/*Gera um número aleatório com entre os um valor mínimo e máximo*/
	this.Aleatorio = function(intInferior,intSuperior)
	{
    intPossibilidades = intSuperior - intInferior
    intNumAleatorio = Math.random() * intPossibilidades
    intNumAleatorio = Math.floor(intNumAleatorio)
    return parseInt(intInferior) + intNumAleatorio
	} 

	
	/*Função de zebrar uma tabela*/
	this.ZebrarTabela = function (strId, strCor1, strCor2)
	{
	 var intCount = 0;
	 
	 $('#' + strId).each(function() 
	 {
		
		if((intCount%2) == 0)
		 $(this).attr("bgColor", strCor1);
		else
		 $(this).attr("bgColor", strCor2);
		 
		intCount++;
	 });
	}

  
	/*Formata a saída de um número inteiro*/
	this.FormatarIteiroDeSaida = function(intNum)
	{
    var intS = intNum.toString();
		var intP;
    for(intP = intS.length; (intP -= 3) > 0;)
		{
        intS = intS.substr(0, intP) + "." + intS.substr(intP);
    }
    return intS;
	}

	this.SomarColunaTabela = function(idObj)
	{
		var fltTotal = 0; 
		$(idObj).each(function(){
		 fltTotal += parseFloat(retirarFormatacao($(this).text()));
		})
		return fltTotal;
	}	

	
	/*Função para formatar valores em reais*/
	this.FormatarSaidaMoeda = function(intNum) 
	{
		var intX = 0;
		
		if(intNum<0) 
		{
			intNum = Math.abs(intNum);
			intX = 1;
		}	
		if(isNaN(intNum)) 
			intNum = "0";
		strCentavos = Math.floor((intNum*100+0.5)%100);	
		intNum = Math.floor((intNum*100+0.5)/100).toString();
		if(strCentavos < 10) 
			strCentavos = "0" + strCentavos;
		for (var i = 0; i < Math.floor((intNum.length-(1+i))/3); i++)
			intNum = intNum.substring(0,intNum.length-(4*i+3)) + '.' + intNum.substring(intNum.length-(4*i+3));	
		strRetorno = intNum + ',' + strCentavos;	
		if (intX == 1) 
			strRetorno = ' - ' + strRetorno;
		return strRetorno;
	}
	
	this.ContarElementosContidos = function(contener,conteudo)
	{
		 return $(contener).find(conteudo).size()
	}

	this.ObterTextoComboBox = function(idEleMesmo,strTypeComparacao)
	{
		var varintCod = $(idEleMesmo).val();
		var strTextoComboBox = '';
		if(varintCod != strTypeComparacao)
		{
			$(idEleMesmo + ' option').each(function()
			{
				if($(this).val() == varintCod)
				{
				strTextoComboBox = $(this).html();
				}
			});
			return strTextoComboBox;		
		}
		else
			return false;		
	}

	this.ContarElementosContidos = function(contener,conteudo)
	{
		 return $(contener).find(conteudo).size()
	}

	
	this.ObterValorCheckboxMarcado = function(strNomeObjeto)
	{
		var valor = -1;
		$("input[id=" + strNomeObjeto + "]").each(function() 
		{
			if(this.checked == true)
			{
				valor = this.value;
			}
		});
		return valor;
	}

	// * example 1: array_unique(['Kevin','Kevin','van','Zonneveld','Kevin']);
	// * returns 1: ['Kevin','van','Zonneveld']
	// * example 2: array_unique({'a': 'green', 0: 'red', 'b': 'green', 1: 'blue', 2: 'red'});
	// *x returns 2: {'a': 'green', 0: 'red', 1: 'blue'}
	
	this.array_unique = function(array){
	var key = '', tmp_arr1 = {}, tmp_arr2 = {};
	var val = '';
	tmp_arr1 = array;
	
	var __array_search = function (needle, haystack, strict)
	{
			var fkey = '';
			var strict = !!strict;
			for (fkey in haystack) 
			{
					if ((strict && haystack[fkey] === needle) || (!strict && haystack[fkey] == needle) ) 
					{
							return fkey;
					}
			}
			return false;
	}    
		for (key in tmp_arr1)
		{
				val = tmp_arr1[key];
				if (false === __array_search(val, tmp_arr2))
				{
						tmp_arr2[key] = val;
				}
				delete tmp_arr1[key];
		}
		return tmp_arr2;
	} 
	
	this.AbaterValorPercentual = function(fltTotal,fltParcela)
	{
		return LibM.ArredondarFloat(parseFloat(fltTotal) - ((parseFloat(fltParcela) / 100) * parseFloat(fltTotal)));
	}

	this.ArredondarFloat = function (fltValue) {
  	return Math.round( fltValue * Math.pow(10,2) ) / Math.pow(10,2);
	}
	
	this.PreencherComZerosAEsquerda = function (strValue,intQtdCaracteres)
	{
		var strZeros = '';
		var intCount = 0;
		
		for(intCount = 0; intCount < intQtdCaracteres - strValue.length; intCount++)
		{
			strZeros += '0';
		}
		return strZeros + strValue;
	}	
	
	this.CalculaData = function (strData, intPeriodo, strTipo)
	{
		strNovaData = new Date();
		strData = strData.split("/");
		strNovaData.setDate(parseInt(strData[0]));
		strNovaData.setMonth(parseInt(strData[1]));
		strNovaData.setYear(parseInt(strData[2]));
		switch(strTipo)
		{
		  case 'dia':
				strNovaData.setDate(parseInt(strData[0]) + parseInt(intPeriodo));
				return strNovaData.getDate().toString() + '/' + (strNovaData.getMonth()).toString() + '/' + strNovaData.getFullYear().toString();	
 			break;
			case 'mes':
				strNovaData.setMonth(parseInt(strData[1]) + parseInt(intPeriodo));
				return strNovaData.getDate().toString() + '/' + (strNovaData.getMonth()).toString() + '/' + strNovaData.getFullYear().toString();
			break;
			case 'ano':
				strNovaData.setYear(parseInt(strData[2]) + parseInt(intPeriodo));
				return strNovaData.getDate().toString() + '/' + (strNovaData.getMonth()).toString() + '/' + strNovaData.getFullYear().toString();
			break;
		}    
 
	}
	
	
	this.ComparaDatas = function ( strData1, strMaiorMenor, strData2 )
	{
      strData1 = strData1.split("/");
			strData2 = strData2.split("/");
			
			if (strData2[0].length == 1)
			strData2[0] = "0" + strData2[0]
			
			strData1 = parseInt(strData1[2]) + '' + parseInt(strData1[1]) + '' + strData1[0];
	 		strData2 = parseInt(strData2[2]) + '' + parseInt(strData2[1]) + '' + strData2[0];
			
	    // virficando que tipo de comparação deve ser feita entre as datas
	    switch (strMaiorMenor) {
	      case '<':
	          return ( (parseInt(strData1) < parseInt(strData2)) ? true : false );
	    	break;
	    	case '>':
	          return ( (parseInt(strData1) > parseInt(strData2)) ? true : false );
	    	break;
	    	case '<=':
	          return ( (parseInt(strData1) <= parseInt(strData2)) ? true : false );
	    	break;
	    	case '>=':
	          return ( (parseInt(strData1) >= parseInt(strData2)) ? true : false );
	    	break;
	    }
	}
	
}/*Fim da Classe LibManivesUtility*/

//----------------------------------------------------------------


/*Função que envia os dados para o php para deletar os arquivos no momento em que o usuário deixar a página. O evento é o onUnload*/
function DeletarRelTemporario(caminho,pathRelatorio)
{
		 var parametros = pathRelatorio;
			$.ajax({
			type: 'POST',
			 url: caminho,
			data: parametros,
	  beforeSend: function(){
				  },
		 success: function(resposta){
					  $('#recebeResposta').html(resposta);
				  }
				})
}

function centralizar(elemento,L,A,Zindex)
{
	var largura;
	var altura;
	
	largura = $(elemento).css('width');
	altura = $(elemento).css('height');
	altura = altura.replace(/px/g,"");
	largura = largura.replace(/px/g,"");
	
	largura /=  -1 * (2 + L);
	altura /= -1 * (2 + A);
	
	$(elemento).css({position: 'absolute',left:'50%', top:'50%',marginLeft: largura + 'px', marginTop: altura + 'px', zIndex:Zindex}); 
}

function posicionar(elemento,Left,Top,Zindex)
{
	$(elemento).css({position: 'absolute',left:Left + 'px', top:Top + 'px', zIndex:Zindex});
}



var popUpWin=0;
function popUpWindow(URLStr,width, height)
{
  if(popUpWin)
  {
    if(!popUpWin.closed) popUpWin.close();
  }
 popUpWin = open(URLStr, 'popUpWin', 'toolbar=yes,location=no,directories=no,status=no,menubar=yes,scrollbars=yes,resizable=no,copyhistory=yes,width='+width+',height='+height+'');
}

function retornoData(type)
{
  data_atual = new Date();
  switch (type)
	{
		case 'ano':
		 return data_atual.getUTCFullYear();
		break;
		case 'mes':
		 return data_atual.getUTCMonth();
		break;
		case 'dia':
		 return data_atual.getUTCDay();
		break;
		case 'data_completa':
		 return  data_atual.getUTCDay() + '/' + data_atual.getUTCMonth() + '/' + data_atual.getUTCFullYear();
		break;	
	}	
}

function retirarFormatacao(valor)
{
	if (valor != '')
	{
		valor = valor.replace(/\./g,"");
		valor = valor.replace(/\,/g,".");
		return valor;
	}
}

function eliminaPontoMascaraData(value){
	ano = value.replace(/\./g,"");
	return ano;
}

function URLEncode(plaintext)
{
	var SAFECHARS = "0123456789" +					// Numeric
					"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
					"abcdefghijklmnopqrstuvwxyz" +
					"-_.!~*'";					// RFC2396 Mark characters
	var HEX = "0123456789ABCDEF";

	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
	    if (ch == " ") {
		    encoded += "+";				// x-www-urlencoded, rather than %20
		} else if (SAFECHARS.indexOf(ch) != -1) {
		    encoded += ch;
		} else {
		    var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
			    alert("Unicode Character '" 
                        + ch 
                        + "' cannot be encoded using standard URL encoding.\n" +
				          "(URL encoding only supports 8-bit characters.)\n" +
						  "A space (+) will be substituted." );
				encoded += "+";
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	} // for

	return encoded;
};



function marcarCheckbox(validacao,id){
   	  if (validacao == '1')  
	   $('#'+id).attr('checked','true')
	  else  
	   $('#'+id).attr('checked','')
}

function setarFocus(id){
  $('#'+id).focus();
}

function checarTodosMarcados(div,typeItem){
      var check = $('#'+div+' :'+typeItem).get();	
      var checked = '';
      $.each(check,function(k,v){
         if (v.checked == false)
            checked+= v.name;
						
      });
      if (checked == '')
	   return true
	   else
	   return false
}

function checarMarcados(div,typeItem){
      var check = $('#'+div+' :'+typeItem).get();	
      var checked = '';
      $.each(check,function(k,v){
         if (v.checked)
            checked+= v.name;
						
      });
      if (checked == '')
	   return false
	   else
	   return true
}

function checarMarcadosPorNome(nameId,typeItem){
      var check = $(nameId + ' :' + typeItem ).get();	
      var checked = '';
      $.each(check,function(k,v){
         if (v.checked)
            checked+= v.name;
      });
      if (checked == '')
	   return false
	   else
	   return true
}

//checa vírgula na string
function func_testaVirgula(id){
var RegExp = /,/g;
    if(!RegExp.test($('#'+id).val()))
	$('#'+id).val('')
}

// Começando o relógio
var clockid=new Array()
var clockidoutside=new Array()
var i_clock=-1
var thistime= new Date()
var hours=thistime.getHours()
var minutes=thistime.getMinutes()
var seconds=thistime.getSeconds()
if (eval(hours) <10) {hours="0"+hours}
if (eval(minutes) < 10) {minutes="0"+minutes}
if (seconds < 10) {seconds="0"+seconds}
var thistime = hours+":"+minutes+":"+seconds

function writeclock() {
i_clock++
if (document.all || document.getElementById || document.layers) {
 clockid[i_clock]="clock"+i_clock
 document.write("<span id='"+clockid[i_clock]+"' style='position:relative'>"+thistime+"</span>")
}
}

function clockon() {
thistime= new Date()
hours=thistime.getHours()
minutes=thistime.getMinutes()
seconds=thistime.getSeconds()
if (eval(hours) <10) {hours="0"+hours}
if (eval(minutes) < 10) {minutes="0"+minutes}
if (seconds < 10) {seconds="0"+seconds}
thistime = hours+":"+minutes+":"+seconds

if (document.all) {
 for (i=0;i<=clockid.length-1;i++) {
  var thisclock=eval(clockid[i])
  thisclock.innerHTML=thistime
 }
}

if (document.getElementById) {
 for (i=0;i<=clockid.length-1;i++) {
  document.getElementById(clockid[i]).innerHTML=thistime
 }
}
var timer=setTimeout("clockon()",1000)
}
window.onload=clockon
// como chamar a função: writeclock()
//-------------------------------- Fim do infeliz do relógio

//Valida URL
function validarURL(url){
    var RegExp = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/;
    if(RegExp.test(url)){
        return true;
    }else{
        return false;
    }
}

// Valida CPF
function ValidaCPF(textCpf){
  var i;
  var s ;
  s =  textCpf.replace(/\./g,"");
  s =  s.replace(/-/g,"");
  if( s == "00000000000" || s == "11111111111" ||
	  s == "22222222222" || s == "33333333333" || s == "44444444444" ||
	  s == "55555555555" || s == "66666666666" || s == "77777777777" ||
	  s == "88888888888" || s == "99999999999"){
	  alert("CPF inválido.");
	  return false;
   }
   
  var c = s.substr(0,9);
  var dv = s.substr(9,2);
  var d1 = 0;
  for (i = 0; i < 9; i++)
  {
  d1 += c.charAt(i)*(10-i);
  }
  if (d1 == 0){
  alert("CPF Invalido")
  return false;
  }
  d1 = 11 - (d1 % 11);
  if (d1 > 9) d1 = 0;
  if (dv.charAt(0) != d1)
  {
  alert("CPF Invalido")
  return false;
  }
  d1 *= 2;
  for (i = 0; i < 9; i++)
  {
  d1 += c.charAt(i)*(11-i);
  }
  d1 = 11 - (d1 % 11);
  if (d1 > 9) d1 = 0;
  if (dv.charAt(1) != d1)
  {
  alert("CPF Invalido")
  return false;
  }
  return true;
}
// Função para testar caracteres especiais em campos de logins
  padrao = /\W/;
  function func_testaCaracterEspecial(str_value) {
     OK = padrao.exec(str_value);
     if (OK){
     return true
     } else {
      return false
     }
 }

// Função para alterar o & Comercial
function func_converte_E_Comercial(str_value){
   return str_value.replace(/&/g,"E");
}

function func_trocaCaracter(str_value){
  return str_value.replace(/"/g,"'");
}
function func_trocaNirus(str_value,id){
  $(id).val(str_value.replace(/#/g,""));
}

function func_converteNirusEcomercial(str_value){
str=str_value.replace(/#/g,"~");
str=str.replace(/&/g,"^");
return str;
}

// Inicio da função da validação de e-mail.
function fuc_testaEmail(mailField){
 var re = new RegExp;
 re = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
 var arr = re.exec(mailField);
 if (arr == null){
  return false
 }
}

//Função para validar se uma data é menor do que a outra.
function func_validaDataMaior(data, datacomparacao){
if (data != ''){
   objData = new Date(data.substr(6, 4), parseInt(data.substr(3, 2), 10) - 1, parseInt(data.substr(0, 2), 10)); 
   if (typeof(datacomparacao) != "object") {
    objDataComparacao = new Date(datacomparacao.substr(6, 4), parseInt(datacomparacao.substr(3, 2), 10) - 1, parseInt(datacomparacao.substr(0, 2), 10))
    if (objData < objDataComparacao){
     return false;
    }
   }
  }
 }

//função que valida uma data em javascript
function validaData(campo){
  if (campo.value!=""){
    hoje = new Date();
    anoAtual = hoje.getFullYear();
    barras = campo.value.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 > 1900));
	    if (!resultado){
           return false;
        }
    }else{
     return false;
    }
   return true;
  }
}

function validaHora(campo){
  if (campo.value!=""){
     pontos = campo.value.split(":");
    if (pontos.length == 2){
        hora = pontos[0];
        minuto = pontos[1];
        resultado = (!isNaN(hora) && (hora >= 0) && (hora < 25)) && (!isNaN(minuto) && (minuto >=0) && (minuto < 65));
        if (!resultado){
            return false;
        }
     }else{
         return false;
     }
  return true;
  }
}


// Inicio da função do campo númerico
function fuc_testaInteiro(txtField){
 numExp = txtField.value;
 if (isNaN(numExp) || (numExp.length == 0)){
  alert("Este valor não é um inteiro válido.");
  document.getElementById(txtField).focus();
  document.getElementById(txtField).style.borderColor = '#990000'; 
  return false;
  }else{
  return true;
  }
}


// Formata Campos com a primeira letra maíuscula e o restante em mínusculas.
// Exemplo: "colocar no campo" - onKeyPress="javascript:changeCase(this.form.nomeprod)"

function func_soMaisculo(obj){
 return obj.value.toUpperCase();
 
}

 setTimeout("func_soMaisculo",1)
 
function func_soMinusculo(obj){
 return obj.value.toLowerCase();
}

function func_primeiraLetraMaiuscula(frmObj){
  var index;
  var tmpStr;
  var tmpChar;
  var preString;
  var postString;
  var strlen;
  tmpStr = frmObj.value.toLowerCase();
  strLen = tmpStr.length;
  if (strLen > 0){
   for (index = 0;
   index < strLen; index++){
    if (index == 0){
     tmpChar = tmpStr.substring(0,1).toUpperCase();
     postString = tmpStr.substring(1,strLen);
     tmpStr = tmpChar + postString;
  }else {
    tmpChar = tmpStr.substring(index, index+1);
    if (tmpChar == " " && index < (strLen-1)){
    tmpChar = tmpStr.substring(index+1, index+2).toUpperCase();
    preString = tmpStr.substring(0, index+1);
    postString = tmpStr.substring(index+2,strLen);
    tmpStr = preString + tmpChar + postString; }
    }
   }
  }
  frmObj.value = tmpStr;
}

// Funções que validam formatação de campos.
function fuc_mascara(o,f){
    v_obj=o
    v_fun=f
    setTimeout("fuc_execmascara()",1)
 }

 function fuc_execmascara(){
    v_obj.value=v_fun(v_obj.value)
 }

 function fuc_soNumeros(v){ //onKeyPress="fuc_mascara(this,fuc_soNumeros)"
    return v.replace(/\D/g,"")
 }

function func_validaTelefone(tel){
    tel=tel.replace(/\D/g,"")                 //Remove tudo o que não é dígito
    tel=tel.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos
    tel=tel.replace(/(\d{4})(\d)/,"$1-$2")    //Coloca hífen entre o quarto e o quinto dígitos
    return tel
}

function func_validaData(data){
    data=data.replace(/\D/g,"")                 //Remove tudo o que não é dígito
    data=data.replace(/(\d{2})(\d)/,"$1/$2")
	data=data.replace(/(\d{2})(\d)/,"$1/$2")
    return data
}

function fuc_cpf(v){
    v=v.replace(/\D/g,"")                    //Remove tudo o que não é dígito
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
                                             //de novo (para o segundo bloco de números)
    v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos
    return v
}

function fuc_cep(v){
    v=v.replace(/D/g,"")                //Remove tudo o que não é dígito
    v=v.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações
    return v
}

function fuc_cnpj(v){
    v=v.replace(/\D/g,"")                           //Remove tudo o que não é dígito
    v=v.replace(/^(\d{2})(\d)/,"$1.$2")             //Coloca ponto entre o segundo e o terceiro dígitos
    v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos
    v=v.replace(/\.(\d{3})(\d)/,".$1/$2")           //Coloca uma barra entre o oitavo e o nono dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")              //Coloca um hífen depois do bloco de quatro dígitos
    return v
}

function fuc_romanos(v){
    v=v.toUpperCase()             //Maiúsculas
    v=v.replace(/[^IVXLCDM]/g,"") //Remove tudo o que não for I, V, X, L, C, D ou M
    //Essa é complicada! Copiei daqui: http://www.diveintopython.org/refactoring/refactoring.html
    while(v.replace(/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,"")!="")
        v=v.replace(/.$/,"")
    return v
}


function roundNumber (rnum) {
  return Math.round(rnum*Math.pow(10,2))/Math.pow(10,2);
}

function formataMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, 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;    
    // 13=enter, 8=backspace as demais retornam 0(zero)
    // whichCode==0 faz com que seja possivel usar todas as teclas como delete, setas, etc    
    if ((whichCode == 13) || (whichCode == 0) || (whichCode == 8))
    	return true;
    key = String.fromCharCode(whichCode); // Valor para o cÃ³digo da Chave
 
 
    if (strCheck.indexOf(key) == -1) 
    	return false; // Chave invÃ¡lida
    len = objTextBox.value.length;
    for(i = 0; i < len; i++)
        if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) 
        	break;
    aux = '';
    for(; i < len; i++)
        if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) 
        	aux += objTextBox.value.charAt(i);
    aux += key;
    len = aux.length;
    if (len == 0) 
    	objTextBox.value = '';
    if (len == 1) 
    	objTextBox.value = '0'+ SeparadorDecimal + '0' + aux;
    if (len == 2) 
    	objTextBox.value = '0'+ SeparadorDecimal + aux;
    if (len > 2) {
        aux2 = '';
        for (j = 0, i = len - 3; i >= 0; i--) {
            if (j == 3) {
                aux2 += SeparadorMilesimo;
                j = 0;
            }
            aux2 += aux.charAt(i);
            j++;
        }
        objTextBox.value = '';
        len2 = aux2.length;
        for (i = len2 - 1; i >= 0; i--)
        	objTextBox.value += aux2.charAt(i);
        objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len);
    }
    return false;
} // return formataMoeda(this,'.',',',event)
// Fim da formataÃ§Ã£o dos campos --------------------------------------------------------------------

// ----- Validar pressionamento da tecla ENTER para executar funcção ------
function fuc_onPress(evt,funcao){ // onKeyPress="fuc_onPress(event,'logar()')"
    var key_code = evt.keyCode ? evt.keyCode : evt.charCode ? evt.charCode : evt.which ? evt.which : void 0;
    
	if (key_code == 13){
        eval(funcao);
	}
}



// Mascaras Utilizando a Jquery Plugin *********************************************************************************************************
/*jQuery(function($){ // aqui ativamos a chamada para aplicar a formatação dos campos.
   $("#id_datanascimento").mask("99/99/9999");
   $("#id_pretencaosalarial").mask("(999) 999-9999");

});*/
(function($) {

	//Helper Function for Caret positioning
	$.fn.caret=function(begin,end){	
		if(this.length==0) return;
		if (typeof begin == 'number') {
            end = (typeof end == 'number')?end:begin;  
			return this.each(function(){
				if(this.setSelectionRange){
					this.focus();
					this.setSelectionRange(begin,end);
				}else if (this.createTextRange){
					var range = this.createTextRange();
					range.collapse(true);
					range.moveEnd('character', end);
					range.moveStart('character', begin);
					range.select();
				}
			});
        } else {
            if (this[0].setSelectionRange){
				begin = this[0].selectionStart;
				end = this[0].selectionEnd;
			}else if (document.selection && document.selection.createRange){
				var range = document.selection.createRange();			
				begin = 0 - range.duplicate().moveStart('character', -100000);
				end = begin + range.text.length;
			}
			return {begin:begin,end:end};
        }       
	};

	//Predefined character definitions
	var charMap={
		'9':"[0-9]",
		'a':"[A-Za-z]",
		'*':"[A-Za-z0-9]"
	};
	
	//Helper method to inject character definitions
	$.mask={
		addPlaceholder : function(c,r){
			charMap[c]=r;
		}
	};
	
	$.fn.unmask=function(){
		return this.trigger("unmask");
	};
	
	//Main Method
	$.fn.mask = function(mask,settings) {	
		settings = $.extend({
			placeholder: "",			
			completed: null
		}, settings);		
		
		//Build Regex for format validation
		var re = new RegExp("^"+	
		$.map( mask.split(""), function(c,i){		  		  
		  return charMap[c]||((/[A-Za-z0-9]/.test(c)?"":"\\")+c);
		}).join('')+				
		"$");		

		return this.each(function(){		
			var input=$(this);
			var buffer=new Array(mask.length);
			var locked=new Array(mask.length);
			var valid=false;   
			var ignore=false;  			//Variable for ignoring control keys
			var firstNonMaskPos=null; 
			
			//Build buffer layout from mask & determine the first non masked character			
			$.each( mask.split(""), function(i,c){				
				locked[i]=(charMap[c]==null);				
				buffer[i]=locked[i]?c:settings.placeholder;									
				if(!locked[i] && firstNonMaskPos==null)
					firstNonMaskPos=i;
			});		
			
			function focusEvent(){					
				checkVal();
				writeBuffer();
				setTimeout(function(){
					$(input[0]).caret(valid?mask.length:firstNonMaskPos);					
				},0);
			};
			
			function keydownEvent(e){				
				var pos=$(this).caret();
				var k = e.keyCode;
				ignore=(k < 16 || (k > 16 && k < 32 ) || (k > 32 && k < 41));
				
				//delete selection before proceeding
				if((pos.begin-pos.end)!=0 && (!ignore || k==8 || k==46)){
					clearBuffer(pos.begin,pos.end);
				}	
				//backspace and delete get special treatment
				if(k==8){//backspace					
					while(pos.begin-->=0){
						if(!locked[pos.begin]){								
							buffer[pos.begin]=settings.placeholder;
							if($.browser.opera){
								//Opera won't let you cancel the backspace, so we'll let it backspace over a dummy character.								
								s=writeBuffer();
								input.val(s.substring(0,pos.begin)+" "+s.substring(pos.begin));
								$(this).caret(pos.begin+1);								
							}else{
								writeBuffer();
								$(this).caret(Math.max(firstNonMaskPos,pos.begin));								
							}									
							return false;								
						}
					}						
				}else if(k==46){//delete
					clearBuffer(pos.begin,pos.begin+1);
					writeBuffer();
					$(this).caret(Math.max(firstNonMaskPos,pos.begin));					
					return false;
				}else if (k==27){//escape
					clearBuffer(0,mask.length);
					writeBuffer();
					$(this).caret(firstNonMaskPos);					
					return false;
				}									
			};
			
			function keypressEvent(e){					
				if(ignore){
					ignore=false;
					//Fixes Mac FF bug on backspace
					return (e.keyCode == 8)? false: null;
				}
				e=e||window.event;
				var k=e.charCode||e.keyCode||e.which;						
				var pos=$(this).caret();
								
				if(e.ctrlKey || e.altKey){//Ignore
					return true;
				}else if ((k>=41 && k<=122) ||k==32 || k>186){//typeable characters
					var p=seekNext(pos.begin-1);					
					if(p<mask.length){
						if(new RegExp(charMap[mask.charAt(p)]).test(String.fromCharCode(k))){
							buffer[p]=String.fromCharCode(k);									
							writeBuffer();
							var next=seekNext(p);
							$(this).caret(next);
							if(settings.completed && next == mask.length)
								settings.completed.call(input);
						}				
					}
				}				
				return false;				
			};
			
			function clearBuffer(start,end){
				for(var i=start;i<end&&i<mask.length;i++){
					if(!locked[i])
						buffer[i]=settings.placeholder;
				}				
			};
			
			function writeBuffer(){				
				return input.val(buffer.join('')).val();				
			};
			
			function checkVal(){	
				//try to place charcters where they belong
				var test=input.val();
				var pos=0;
				for(var i=0;i<mask.length;i++){					
					if(!locked[i]){
						buffer[i]=settings.placeholder;
						while(pos++<test.length){
							//Regex Test each char here.
							var reChar=new RegExp(charMap[mask.charAt(i)]);
							if(test.charAt(pos-1).match(reChar)){
								buffer[i]=test.charAt(pos-1);								
								break;
							}									
						}
					}
				}
				var s=writeBuffer();
				if(!s.match(re)){							
					input.val("");	
					clearBuffer(0,mask.length);
					valid=false;
				}else
					valid=true;
			};
			
			function seekNext(pos){				
				while(++pos<mask.length){					
					if(!locked[pos])
						return pos;
				}
				return mask.length;
			};
			
			input.one("unmask",function(){
				input.unbind("focus",focusEvent);
				input.unbind("blur",checkVal);
				input.unbind("keydown",keydownEvent);
				input.unbind("keypress",keypressEvent);
				if ($.browser.msie) 
					this.onpaste= null;                     
				else if ($.browser.mozilla)
					this.removeEventListener('input',checkVal,false);
			});
			input.bind("focus",focusEvent);
			input.bind("blur",checkVal);
			input.bind("keydown",keydownEvent);
			input.bind("keypress",keypressEvent);
			//Paste events for IE and Mozilla thanks to Kristinn Sigmundsson
			if ($.browser.msie) 
				this.onpaste= function(){setTimeout(checkVal,0);};                     
			else if ($.browser.mozilla)
				this.addEventListener('input',checkVal,false);
				
			checkVal();//Perform initial check for existing values
		});
	};
})(jQuery);
// Mascaras Fim ********************************************************************************************************************************* 


// Funções que carregam swf pelo dreamweaver -----------------------------------------------------------------------------------------------
//v1.7
// Flash Player Version Detection
// Detect Client Browser type
// Copyright 2005-2007 Adobe Systems Incorporated.  All rights reserved.
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion()
{
	var version;
	var axo;
	var e;

	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}

	if (!version)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			
			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 
			
			// default to the first public version
			version = "WIN 6,0,21,0";

			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			axo.AllowScriptAccess = "always";

			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");

		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}
	
	return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");			
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}	
	return flashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
	versionStr = GetSwfVer();
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !isOpera) {
			// Given "WIN 2,0,0,11"
			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
			tempString        = tempArray[1];			// "2,0,0,11"
			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
		} else {
			versionArray      = versionStr.split(".");
		}
		var versionMajor      = versionArray[0];
		var versionMinor      = versionArray[1];
		var versionRevision   = versionArray[2];

        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
		if (versionMajor > parseFloat(reqMajorVer)) {
			return true;
		} else if (versionMajor == parseFloat(reqMajorVer)) {
			if (versionMinor > parseFloat(reqMinorVer))
				return true;
			else if (versionMinor == parseFloat(reqMinorVer)) {
				if (versionRevision >= parseFloat(reqRevision))
					return true;
			}
		}
		return false;
	}
}

function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '';
  if (isIE && isWin && !isOpera)
  {
    str += '<object ';
    for (var i in objAttrs)
    {
      str += i + '="' + objAttrs[i] + '" ';
    }
    str += '>';
    for (var i in params)
    {
      str += '<param name="' + i + '" value="' + params[i] + '" /> ';
    }
    str += '</object>';
  }
  else
  {
    str += '<embed ';
    for (var i in embedAttrs)
    {
      str += i + '="' + embedAttrs[i] + '" ';
    }
    str += '> </embed>';
  }

  document.write(str);
}

function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
      case "id":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}
// Fim das funções geradas pelo Dreamweaver ---------------------------------------------------------------------------------------------------------


/**
 * --------------------------------------------------------------------
 * jQuery-Plugin "pngFix"
 * Version: 1.1, 11.09.2007
 * by Andreas Eberhard, andreas.eberhard@gmail.com
 *                      http://jquery.andreaseberhard.de/
 *
 * Copyright (c) 2007 Andreas Eberhard
 * Licensed under GPL (http://www.opensource.org/licenses/gpl-license.php)
 *
 * Changelog:
 *    11.09.2007 Version 1.1
 *    - removed noConflict
 *    - added png-support for input type=image
 *    - 01.08.2007 CSS background-image support extension added by Scott Jehl, scott@filamentgroup.com, http://www.filamentgroup.com
 *    31.05.2007 initial Version 1.0
 * --------------------------------------------------------------------
 * @example $(function(){$(document).pngFix();});
 * @desc Fixes all PNG's in the document on document.ready
 *
 * jQuery(function(){jQuery(document).pngFix();});
 * @desc Fixes all PNG's in the document on document.ready when using noConflict
 *
 * @example $(function(){$('div.examples').pngFix();});
 * @desc Fixes all PNG's within div with class examples
 *
 * @example $(function(){$('div.examples').pngFix( { blankgif:'ext.gif' } );});
 * @desc Fixes all PNG's within div with class examples, provides blank gif for input with png
 * --------------------------------------------------------------------
 */

(function($) {

jQuery.fn.pngFix = function(settings) {

	// Settings
	settings = jQuery.extend({
		blankgif: 'blank.gif'
	}, settings);

	var ie55 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 5.5") != -1);
	var ie6 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1);

	if (jQuery.browser.msie && (ie55 || ie6)) {

		//fix images with png-source
		jQuery(this).find("img[@src$=.png]").each(function() {

			jQuery(this).attr('width',jQuery(this).width());
			jQuery(this).attr('height',jQuery(this).height());

			var prevStyle = '';
			var strNewHTML = '';
			var imgId = (jQuery(this).attr('id')) ? 'id="' + jQuery(this).attr('id') + '" ' : '';
			var imgClass = (jQuery(this).attr('class')) ? 'class="' + jQuery(this).attr('class') + '" ' : '';
			var imgTitle = (jQuery(this).attr('title')) ? 'title="' + jQuery(this).attr('title') + '" ' : '';
			var imgAlt = (jQuery(this).attr('alt')) ? 'alt="' + jQuery(this).attr('alt') + '" ' : '';
			var imgAlign = (jQuery(this).attr('align')) ? 'float:' + jQuery(this).attr('align') + ';' : '';
			var imgHand = (jQuery(this).parent().attr('href')) ? 'cursor:hand;' : '';
			if (this.style.border) {
				prevStyle += 'border:'+this.style.border+';';
				this.style.border = '';
			}
			if (this.style.padding) {
				prevStyle += 'padding:'+this.style.padding+';';
				this.style.padding = '';
			}
			if (this.style.margin) {
				prevStyle += 'margin:'+this.style.margin+';';
				this.style.margin = '';
			}
			var imgStyle = (this.style.cssText);

			strNewHTML += '<span '+imgId+imgClass+imgTitle+imgAlt;
			strNewHTML += 'style="position:relative;white-space:pre-line;display:inline-block;background:transparent;'+imgAlign+imgHand;
			strNewHTML += 'width:' + jQuery(this).width() + 'px;' + 'height:' + jQuery(this).height() + 'px;';
			strNewHTML += 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader' + '(src=\'' + jQuery(this).attr('src') + '\', sizingMethod=\'scale\');';
			strNewHTML += imgStyle+'"></span>';
			if (prevStyle != ''){
				strNewHTML = '<span style="position:relative;display:inline-block;'+prevStyle+imgHand+'width:' + jQuery(this).width() + 'px;' + 'height:' + jQuery(this).height() + 'px;'+'">' + strNewHTML + '</span>';
			}

			jQuery(this).hide();
			jQuery(this).after(strNewHTML);

		});

		// fix css background pngs
		jQuery(this).find("*").each(function(){
			var bgIMG = jQuery(this).css('background-image');
			if(bgIMG.indexOf(".png")!=-1){
				var iebg = bgIMG.split('url("')[1].split('")')[0];
				jQuery(this).css('background-image', 'none');
				jQuery(this).get(0).runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + iebg + "',sizingMethod='scale')";
			}
		});
		
		//fix input with png-source
		jQuery(this).find("input[@src$=.png]").each(function() {
			var bgIMG = jQuery(this).attr('src');
			jQuery(this).get(0).runtimeStyle.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader' + '(src=\'' + bgIMG + '\', sizingMethod=\'scale\');';
   		jQuery(this).attr('src', settings.blankgif)
		});
	
	}
	
	return jQuery;

};

})(jQuery);
// Fim do plugin que carrega png para os ie 5.5 e 6

/**
 * http://www.openjs.com/scripts/events/keyboard_shortcuts/
 * Version : 2.01.A
 * By Binny V A
 * License : BSD
 */
shortcut = {
	'all_shortcuts':{},//All the shortcuts are stored in this array
	'add': function(shortcut_combination,callback,opt) {
		//Provide a set of default options
		var default_options = {
			'type':'keydown',
			'propagate':false,
			'disable_in_input':false,
			'target':document,
			'keycode':false
		}
		if(!opt) opt = default_options;
		else {
			for(var dfo in default_options) {
				if(typeof opt[dfo] == 'undefined') opt[dfo] = default_options[dfo];
			}
		}

		var ele = opt.target
		if(typeof opt.target == 'string') ele = document.getElementById(opt.target);
		var ths = this;
		shortcut_combination = shortcut_combination.toLowerCase();

		//The function to be called at keypress
		var func = function(e) {
			e = e || window.event;
			
			if(opt['disable_in_input']) { //Don't enable shortcut keys in Input, Textarea fields
				var element;
				if(e.target) element=e.target;
				else if(e.srcElement) element=e.srcElement;
				if(element.nodeType==3) element=element.parentNode;

				if(element.tagName == 'INPUT' || element.tagName == 'TEXTAREA') return;
			}
	
			//Find Which key is pressed
			if (e.keyCode) code = e.keyCode;
			else if (e.which) code = e.which;
			var character = String.fromCharCode(code).toLowerCase();
			
			if(code == 188) character=","; //If the user presses , when the type is onkeydown
			if(code == 190) character="."; //If the user presses , when the type is onkeydown
	
			var keys = shortcut_combination.split("+");
			//Key Pressed - counts the number of valid keypresses - if it is same as the number of keys, the shortcut function is invoked
			var kp = 0;
			
			//Work around for stupid Shift key bug created by using lowercase - as a result the shift+num combination was broken
			var shift_nums = {
				"`":"~",
				"1":"!",
				"2":"@",
				"3":"#",
				"4":"$",
				"5":"%",
				"6":"^",
				"7":"&",
				"8":"*",
				"9":"(",
				"0":")",
				"-":"_",
				"=":"+",
				";":":",
				"'":"\"",
				",":"<",
				".":">",
				"/":"?",
				"\\":"|"
			}
			//Special Keys - and their codes
			var special_keys = {
				'esc':27,
				'escape':27,
				'tab':9,
				'space':32,
				'return':13,
				'enter':13,
				'backspace':8,
	
				'scrolllock':145,
				'scroll_lock':145,
				'scroll':145,
				'capslock':20,
				'caps_lock':20,
				'caps':20,
				'numlock':144,
				'num_lock':144,
				'num':144,
				
				'pause':19,
				'break':19,
				
				'insert':45,
				'home':36,
				'delete':46,
				'end':35,
				
				'pageup':33,
				'page_up':33,
				'pu':33,
	
				'pagedown':34,
				'page_down':34,
				'pd':34,
	
				'left':37,
				'up':38,
				'right':39,
				'down':40,
	
				'f1':112,
				'f2':113,
				'f3':114,
				'f4':115,
				'f5':116,
				'f6':117,
				'f7':118,
				'f8':119,
				'f9':120,
				'f10':121,
				'f11':122,
				'f12':123
			}
	
			var modifiers = { 
				shift: { wanted:false, pressed:false},
				ctrl : { wanted:false, pressed:false},
				alt  : { wanted:false, pressed:false},
				meta : { wanted:false, pressed:false}	//Meta is Mac specific
			};
                        
			if(e.ctrlKey)	modifiers.ctrl.pressed = true;
			if(e.shiftKey)	modifiers.shift.pressed = true;
			if(e.altKey)	modifiers.alt.pressed = true;
			if(e.metaKey)   modifiers.meta.pressed = true;
                        
			for(var i=0; k=keys[i],i<keys.length; i++) {
				//Modifiers
				if(k == 'ctrl' || k == 'control') {
					kp++;
					modifiers.ctrl.wanted = true;

				} else if(k == 'shift') {
					kp++;
					modifiers.shift.wanted = true;

				} else if(k == 'alt') {
					kp++;
					modifiers.alt.wanted = true;
				} else if(k == 'meta') {
					kp++;
					modifiers.meta.wanted = true;
				} else if(k.length > 1) { //If it is a special key
					if(special_keys[k] == code) kp++;
					
				} else if(opt['keycode']) {
					if(opt['keycode'] == code) kp++;

				} else { //The special keys did not match
					if(character == k) kp++;
					else {
						if(shift_nums[character] && e.shiftKey) { //Stupid Shift key bug created by using lowercase
							character = shift_nums[character]; 
							if(character == k) kp++;
						}
					}
				}
			}

			if(kp == keys.length && 
						modifiers.ctrl.pressed == modifiers.ctrl.wanted &&
						modifiers.shift.pressed == modifiers.shift.wanted &&
						modifiers.alt.pressed == modifiers.alt.wanted &&
						modifiers.meta.pressed == modifiers.meta.wanted) {
				callback(e);
	
				if(!opt['propagate']) { //Stop the event
					//e.cancelBubble is supported by IE - this will kill the bubbling process.
					e.cancelBubble = true;
					e.returnValue = false;
	
					//e.stopPropagation works in Firefox.
					if (e.stopPropagation) {
						e.stopPropagation();
						e.preventDefault();
					}
					return false;
				}
			}
		}
		this.all_shortcuts[shortcut_combination] = {
			'callback':func, 
			'target':ele, 
			'event': opt['type']
		};
		//Attach the function with the event
		if(ele.addEventListener) ele.addEventListener(opt['type'], func, false);
		else if(ele.attachEvent) ele.attachEvent('on'+opt['type'], func);
		else ele['on'+opt['type']] = func;
	},

	//Remove the shortcut - just specify the shortcut and I will remove the binding
	'remove':function(shortcut_combination) {
		shortcut_combination = shortcut_combination.toLowerCase();
		var binding = this.all_shortcuts[shortcut_combination];
		delete(this.all_shortcuts[shortcut_combination])
		if(!binding) return;
		var type = binding['event'];
		var ele = binding['target'];
		var callback = binding['callback'];

		if(ele.detachEvent) ele.detachEvent('on'+type, callback);
		else if(ele.removeEventListener) ele.removeEventListener(type, callback, false);
		else ele['on'+type] = false;
	}
}