	function calcula_margem_de_encomenda(w_vl_a_cobrar_coleta, vl_a_cobrar_total)
	//O percentual é limpo (já tira embalagem, outros custos, impostos, etc).
	//É vl_coleta/vl_total_a_cobrar_do_cliente.
	//Em p_func.asp, tem uma versão em asp.
	// Só calcula, não formata.

	{
	var w_qt_percentual;

	w_qt_percentual = parseFloat(formata_valor_para_calculos_internos(w_vl_a_cobrar_coleta)) / parseFloat(formata_valor_para_calculos_internos(vl_a_cobrar_total));
	if (parseFloat(formata_valor_para_calculos_internos(vl_a_cobrar_total)) > 0)
		{
		return w_qt_percentual;
		}
	else
		{
		return 0;
		}
	}






// O ajax foi tirado de http://www.webpasties.com/xmlHttpRequest/xmlHttpRequest_tutorial_1.html
// onClick="return confirm('Abre ABC?')"



function apaga_conteudo_de_div (w_nm_completo_da_div_a_apagar) 
	{ 
	//  chamada :
	//	<select onchange="apaga_conteudo_de_div('div_nm_cidade_origem');" .......................

	var div;
	div = document.getElementById(w_nm_completo_da_div_a_apagar);
	if (div != null)
		{
		div.innerHTML = "";
		}
	}

	
	
function formatnumber(num,decimalNum)
/**********************************************************************
FormatNumber(Expression, NumDigitsAfterDecimal, IncludeLeadingDigit,
             UseParensForNegativeNumbers, GroupDigits)
	IN:
		NUM - the number to format
		decimalNum - the number of decimal places to format the number to
		bolLeadingZero - true / false - display a leading zero for
										numbers between -1 and 1
		bolParens - true / false - use parenthesis around negative numbers
		bolCommas - put commas as number separators.
 
	RETVAL:
		The formatted number!
 **********************************************************************/
{ 
	bolCommas = false;  // separador é o "."
	bolParens = false;  // não ==> use parenthesis around negative numbers
	bolLeadingZero = true; // display a leading zero for numbers between -1 and 1
	
    if (isNaN(parseInt(num))) return "NaN";

	var tmpNum = num;
	var iSign = num < 0 ? -1 : 1;		// Get sign of number
	
	// Adjust number so only the specified number of numbers after
	// the decimal point are shown.
	tmpNum *= Math.pow(10,decimalNum);
	tmpNum = Math.round(Math.abs(tmpNum))
	tmpNum /= Math.pow(10,decimalNum);
	tmpNum *= iSign;					// Readjust for sign
	
	
	// Create a string object to do our formatting on
	var tmpNumStr = new String(tmpNum);

	// See if we need to strip out the leading zero or not.
	if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
		if (num > 0)
			tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length);
		else
			tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length);
		
	// See if we need to put in the commas
	if (bolCommas && (num >= 1000 || num <= -1000)) {
		var iStart = tmpNumStr.indexOf(".");
		if (iStart < 0)
			iStart = tmpNumStr.length;

		iStart -= 3;
		while (iStart >= 1) {
			tmpNumStr = tmpNumStr.substring(0,iStart) + "," + tmpNumStr.substring(iStart,tmpNumStr.length)
			iStart -= 3;
		}		
	}

	// See if we need to use parenthesis
	if (bolParens && num < 0)
		tmpNumStr = "(" + tmpNumStr.substring(1,tmpNumStr.length) + ")";

//	return tmpNumStr;		// Return our formatted string!
	return replace(tmpNumStr,".",",");		// Return our formatted string!
}






function formatnumber_original(num,decimalNum,bolLeadingZero,bolParens,bolCommas)
/**********************************************************************
FormatNumber(Expression, NumDigitsAfterDecimal, IncludeLeadingDigit,
             UseParensForNegativeNumbers, GroupDigits)
	IN:
		NUM - the number to format
		decimalNum - the number of decimal places to format the number to
		bolLeadingZero - true / false - display a leading zero for
										numbers between -1 and 1
		bolParens - true / false - use parenthesis around negative numbers
		bolCommas - put commas as number separators.
 
	RETVAL:
		The formatted number!
 **********************************************************************/
{ 
        if (isNaN(parseInt(num))) return "NaN";

	var tmpNum = num;
	var iSign = num < 0 ? -1 : 1;		// Get sign of number
	
	// Adjust number so only the specified number of numbers after
	// the decimal point are shown.
	tmpNum *= Math.pow(10,decimalNum);
	tmpNum = Math.round(Math.abs(tmpNum))
	tmpNum /= Math.pow(10,decimalNum);
	tmpNum *= iSign;					// Readjust for sign
	
	
	// Create a string object to do our formatting on
	var tmpNumStr = new String(tmpNum);

	// See if we need to strip out the leading zero or not.
	if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
		if (num > 0)
			tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length);
		else
			tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length);
		
	// See if we need to put in the commas
	if (bolCommas && (num >= 1000 || num <= -1000)) {
		var iStart = tmpNumStr.indexOf(".");
		if (iStart < 0)
			iStart = tmpNumStr.length;

		iStart -= 3;
		while (iStart >= 1) {
			tmpNumStr = tmpNumStr.substring(0,iStart) + "," + tmpNumStr.substring(iStart,tmpNumStr.length)
			iStart -= 3;
		}		
	}

	// See if we need to use parenthesis
	if (bolParens && num < 0)
		tmpNumStr = "(" + tmpNumStr.substring(1,tmpNumStr.length) + ")";

	return tmpNumStr;		// Return our formatted string!
}


function exibe_radio_checado(w_nm_radio_button)
{

// ATENÇÃO : Para esta função funcionar, o radio tem que estar ticado.
//			 Não tem mais, pois estou verif. se existe.

//	alert ("exibe_radio_checado==>" + w_nm_radio_button);
	var i;
	var w_resultado

//    for(i = 0; i < document.formulario.input.length; i++){
//    if (document.formulario.input[i].checked) {


    for(i = 0; i < eval(w_nm_radio_button + ".length"); i++){
    if (eval(w_nm_radio_button + "[i].checked")) {
    break;
    }
    }
	
	if (eval(w_nm_radio_button + "[i]") == null)
		{
//		alert ("É nulo");
		}
	else
		{
	    w_resultado = eval(w_nm_radio_button + "[i].value");
		}


//	alert ("exibe_radio_checado==>w_resultado==>" + w_resultado);

	return w_resultado;

}

function checa_radio(w_nm_radio_button, w_conteudo)
{

//	alert ("checa_radio==>" + w_nm_radio_button);
	var i;
	var w_resultado

//    for(i = 0; i < document.formulario.input.length; i++){
//    if (document.formulario.input[i].checked) {


    for(i = 0; i < eval(w_nm_radio_button + ".length"); i++){
    if (eval(w_nm_radio_button + "[i].value") == w_conteudo) {
		eval(w_nm_radio_button + "[i].checked=true;");
	    break;
    }
    }
//    w_resultado = eval(w_nm_radio_button + "[i].value");

//	alert ("exibe_radio_checado==>w_resultado==>" + w_resultado);

//	return w_resultado;

}


// ==========================================================================================


    // url_encode version 1.0 
    function url_encode(str) 
		// No programa chamador, deve ser usada a url_encode, localizada em jsfunctions.js.
		// Ex no módulo javascript :
		// url = 'pesquisa_encomenda_popup_ajax.asp?w_tp_ajax=tp_ajax_exibe_list_box_com_cidades&';
		// url = url + 'nm_cidade=' + url_encode(w_nm_cidade) + '&sg_estado=' + url_encode(w_sg_estado);
		
		// No programa recebedor ajax, deve ser usada a url_decode, localizada em p_func.asp
		// Decodifica os parâmetros da querystring vindas do programa chamador ajax.
		// Ex :
		// w_nm_cidade = ucase(trim(vercampotexto(URL_Decode(request.querystring("nm_cidade")))))
		// w_sg_estado = ucase(trim(vercampotexto(URL_Decode(request.querystring("sg_estado")))))


		// Exemplo completo de utilização :
		// ==> chamador :  pesquisa_encomenda_popup.asp
		// ==> recebedor :  pesquisa_encomenda_popup_ajax.asp

	{ 
        var hex_chars = "0123456789ABCDEF"; 
        var noEncode = /^([a-zA-Z0-9\_\-\.])$/; 
        var n, strCode, hex1, hex2, strEncode = ""; 

        for(n = 0; n < str.length; n++) { 
            if (noEncode.test(str.charAt(n))) { 
                strEncode += str.charAt(n); 
            } else { 
                strCode = str.charCodeAt(n); 
                hex1 = hex_chars.charAt(Math.floor(strCode / 16)); 
                hex2 = hex_chars.charAt(strCode % 16); 
                strEncode += "%" + (hex1 + hex2); 
            } 
        } 
        return strEncode; 
    } 

    // url_decode version 1.0 
    function url_decode(str) { 
        var n, strCode, strDecode = ""; 

        for (n = 0; n < str.length; n++) { 
            if (str.charAt(n) == "%") { 
                strCode = str.charAt(n + 1) + str.charAt(n + 2); 
                strDecode += String.fromCharCode(parseInt(strCode, 16)); 
                n += 2; 
            } else { 
                strDecode += str.charAt(n); 
            } 
        } 

        return strDecode; 
    } 



// Colocar no jsfunctions.js
function getDataNow(url)  {
// http://www.codeguru.com/forum/showthread.php?t=396169
// Acentuação ==> https://developer.mozilla.org/pt/Acentua%C3%A7%C3%A3o_para_conte%C3%BAdos_carregados_por_AJAX
// Acentuação ==> http://www.aspnut.com/reference/encoding.asp
// Acentuação ==> http://phpbrasil.com/articles/article.php/pagerRow/2/id/1182



	if (window.XMLHttpRequest)
  	{
 		xmlhttp=new XMLHttpRequest();
 	}
 	else if (window.ActiveXObject)
    {
    	if(new ActiveXObject("Microsoft.XMLHTTP"))
    	{
    		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    	}
    	else
    	{
    		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
    	}
    }
	var now=new Date();
	
	if(url.indexOf("?")==-1)
	{
		var cut=url.substring(0,url.length);
		var s=cut+"?c_date="+now;
	}
	else
	{
		var cut=url.split('?');
		var s=cut[0]+"?c_date="+now+"&"+cut[1];
	}
	xmlhttp.open("GET",url,false);
	xmlhttp.send(null);
	var req=xmlhttp.responseXML;
	xml_str_now=xmlhttp.responseText;

//    alert("Função getDataNow==> " + xml_str_now);
//    document.frm_principal.txt_qt_multiplicador_calculado.value = xml_str_now;
	return xml_str_now;
}



// Para uso do ajax.
function getHTTPObject() {
  var xmlhttp;
  /*@cc_on
  @if (@_jscript_version >= 5)
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
        xmlhttp = false;
      }
    }
  @else
  xmlhttp = false;
  @end @*/
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    } catch (e) {
      xmlhttp = false;
    }
  }
  return xmlhttp;
}
var http = getHTTPObject(); // We create the HTTP Object
 
// ?qt_cnpj=sdfsdf&nr_seq_orcamento=26093


// Fica no jsfunctions.js. Para uso do Ajax.
function envia_o_pedido_para_o_ajax(url,w_funcao_para_resposta) {
//	alert("envia_o_pedido ==> " + url + " --- " + w_funcao_para_resposta);
//	var w_funcao_para_resposta;
//	w_funcao_para_resposta = "manuseia_a_resposta_calculo_do_multiplicador";
	
  if (!isWorking && http) {
//    var zipValue = document.getElementById("zip").value;
//	zipValue = w_multiplicador;
//    http.open("GET", url + escape(zipValue), true);
//    http.open("GET", url, true);
    http.open("GET", url, false);  // falso = síncrono
//    http.onreadystatechange = manuseia_a_resposta_calculo_do_multiplicador;
    http.onreadystatechange = eval(w_funcao_para_resposta);

    isWorking = true;
    http.send(null);
  }
}


// Fica junto ao formulário.  OBSOLETA. Substituída pela função envia_o_pedido_para_o_ajax
function envia_o_pedido_para_o_ajax_old(url) {
//	alert("envia_o_pedido - " + url + " - " + w_multiplicador);

  if (!isWorking && http) {
//    var zipValue = document.getElementById("zip").value;
//	zipValue = w_multiplicador;
//    http.open("GET", url + escape(zipValue), true);
    http.open("GET", url, true);
    http.onreadystatechange = manuseia_a_resposta_calculo_do_multiplicador;
    isWorking = true;
    http.send(null);
  }
}




function protege_campo(e,w_this) {
// Utilização : <input type="text" onkeypress="return protege_campo(event,this.value);"  name="txt_vl_embalagem" id="txt_vl_embalagem" style="text-align: right; font-size: 10 pt; BACKGROUND-COLOR: #E3FFE3; font-family:Courier New" size="10" value="<%=formatnumber(w_txt_vl_embalagem,2)%>">
		val = w_this;
		var cCode=e.charCode? e.charCode : e.keyCode
		//var cCode = unicode;
		//alert('e==>' + e + '   cCode==>' + cCode + '   unicode==>' + unicode + '    val==>' + val);			

	    return false;
		
		
		  if(cCode == 44) 
		  	{
			  var w_vl_anterior = left(val, len(val) - 1);

			  if (instr(w_vl_anterior,",") > 0) 
			  	{
//				    var myNumber = left(val, strLength - 1);
//					eval('document.frm_principal.' + w_this + '.value=' + "'" + myNumber + "'");
				    return false;
				}
				else
				{
					return true;
			    }
		    }

		  if(cCode == 8) // backspace
		  	{
				return true;
		    }

		  if(cCode == 9) // tab
		  	{
				return true;
		    }

		  if(cCode == 37) // seta a esquerda
		  	{
				return true;
		    }

		  if(cCode == 39) // seta a direita
		  	{
				return true;
		    }

		  if(cCode == 127) // del
		  	{
				return true;
		    }


	
		  if (cCode < 48 || cCode > 57 ) {  // não é numérico
//		    var myNumber = left(val, strLength - 1);
//			eval('document.frm_principal.' + w_this + '.value=' + "'" + myNumber + "'");
		    return false;
		  }
		  return true;
		}




function consiste_digitacao(val,tipo_de_campo) {
	// Chamada ==> <input name="txtNumber" type="text" id="txtNumber" onKeyUp="javascript:checkNumber(myForm.txtNumber);">
	// Aceita números, vírgula, delete e backspace.
//  var strPass = val.value;
  var strPass = val + '';
  var strLength = strPass.length;
//  var lchar = val.value.charAt((strLength) - 1);
  var lchar = val.charAt((strLength) - 1);
  var cCode = CalcKeyCode(lchar);

  /* Check if the keyed in character is a number
     do you want alphabetic UPPERCASE only ?
     or lower case only just check their respective
     codes and replace the 48 and 57 */

	 // 44 = ,
	 // 48 a 57 = números  
	 // 47 = /
	 // 58 = :
	 // =  
	 // =  

//	alert ('==>' + cCode + '<==' + tipo_de_campo);
	 
	if(ucase(tipo_de_campo) == 'MOEDA') {
		if(cCode == 44) {
			return true;
		}
		if (cCode < 48 || cCode > 57 ) 
			{
	    	var myNumber = val.substring(0, (strLength) - 1);
		    val = myNumber;
			}
			return false;
	}

	if(ucase(tipo_de_campo) == 'NUMERO_INTEIRO') {
//		alert ('numero inteiro==>' + cCode + '<==' + tipo_de_campo);
		if(cCode == 44) {
	    	var myNumber = val.substring(0, (strLength) - 1);
		    val = myNumber;
			return false;
		}
		if (cCode < 48 || cCode > 57 ) 
			{
	    	var myNumber = val.substring(0, (strLength) - 1);
		    val = myNumber;
			}
			return false;
	}
	
	
	if(ucase(tipo_de_campo) == 'NUMERO_FRACIONARIO') {
		if(cCode == 44) {
			return true;
		}
		if (cCode < 48 || cCode > 57 ) 
			{
	    	var myNumber = val.substring(0, (strLength) - 1);
		    val = myNumber;
			}
			return false;
	}
	
	if(ucase(tipo_de_campo) == 'DATA_LIVRE_YYYY') {
		if(cCode == 47) {
			return true;
		}
		if (cCode < 48 || cCode > 57 ) 
			{
	    	var myNumber = val.substring(0, (strLength) - 1);
		    val = myNumber;
			}
			return false;
	}
	
	if(ucase(tipo_de_campo) == 'DATA_LIVRE_YY') {
		if(cCode == 47) {
			return true;
		}
		if (cCode < 48 || cCode > 57 ) 
			{
	    	var myNumber = val.substring(0, (strLength) - 1);
		    val = myNumber;
			}
			return false;
	}
	
	if(ucase(tipo_de_campo) == 'HORA_HH_MM') {
		if(cCode == 58) {
			return true;
		}
		if (cCode < 48 || cCode > 57 ) 
			{
	    	var myNumber = val.substring(0, (strLength) - 1);
		    val = myNumber;
			}
			return false;
	}
	
	
}




function ucase(str) { 
// http://www.topxml.com/javascript/javascript_string_functions.asp#touppercase
	str = str.toUpperCase()
	return str
}


function lcase(str) { 
// http://www.topxml.com/javascript/javascript_string_functions.asp#tolowercase
	str = str.toLowerCase()
	return str
}



function replace(str,w_conteudo_inicial, w_conteudo_final) { 
	// http://www.topxml.com/javascript/javascript_string_functions.asp#replace
	var str_final;
	str = str + "";
	str_final = str.replace(w_conteudo_inicial, w_conteudo_final); 
	return str_final
}

function replace_cagada(str,w_conteudo_inicial, w_conteudo_final) { 
	// http://www.topxml.com/javascript/javascript_string_functions.asp#replace
	str = str + "";
	var regEx = new RegExp (w_conteudo_inicial, 'gi') ;
	str = str.replace(regEx, w_conteudo_final);
	return str
}

function instr(str,w_conteudo) { 
	// http://www.topxml.com/javascript/javascript_string_functions.asp#indexof
	str = str.indexOf(w_conteudo);

	if (str == -1)
		{
		str = 0
		}
	else
		{
		str = parseFloat(str) + 1
		}
	
		return str
}

function instrrev(str,w_conteudo) { 
	str = str.lastIndexOf(w_conteudo);

	if (str == -1)
		{
		str = 0
		}
	else
		{
		str = parseFloat(str) + 1
		}
	
		return str
	
	lastIndexOf
}



function ltrim(str) { 
	// http://www.somacon.com/p355.php	
	for(var k = 0; k < str.length && isWhitespace(str.charAt(k)); k++);
	return str.substring(k, str.length);
}
function rtrim(str) {
	// http://www.somacon.com/p355.php	
	for(var j=str.length-1; j>=0 && isWhitespace(str.charAt(j)) ; j--) ;
	return str.substring(0,j+1);
}
function trim(str) {
	// http://www.somacon.com/p355.php	
	return ltrim(rtrim(str));
}
function isWhitespace(charToCheck) {
	// http://www.somacon.com/p355.php	
	var whitespaceChars = " \t\n\r\f";
	return (whitespaceChars.indexOf(charToCheck) != -1);
}




		/* This script and many more are available free online at
		The JavaScript Source :: http://javascript.internet.com
		Created by: Manzi Olivier :: http://www.imanzi.com/ */
		
		// calculate the ASCII code of the given character
		function CalcKeyCode(aChar) {
		  var character = aChar.substring(0,1);
		  var code = aChar.charCodeAt(0);
		  return code;
		}
		
		function check_input(e,w_this,w_permitidos){
		// Ex: onkeypress="return check_input(event,this.value,'1234567890');"
		// Ex: onkeypress="return check_input(event,this.value,'1234567890.,');"
		val = w_this;
		var cCode=e.charCode? e.charCode : e.keyCode
		//var cCode = unicode;
		// alert('e==>' + e + '   cCode==>' + cCode + '   e.charCode==>' + e.charCode + '    e.keyCode==>' + e.keyCode);			


		  if(cCode == 8) // backspace
		  	{
				return true;
		    }

		  if(cCode == 9) // tab
		  	{
				return true;
		    }

		  if(cCode == 37) // seta a esquerda
		  	{
				return true;
		    }

		  if(cCode == 39) // seta a direita
		  	{
				return true;
		    }

		  if(cCode == 127) // del
		  	{
				return true;
		    }


		var keyChar = String.fromCharCode(e.which);			
//		alert ('keyChar==>' + keyChar);
		  if (instr(w_permitidos,keyChar) > 0)
		  		{
				return true;
				}
		  else
		  		{
				return false;
				}
		
		return false;
		
		}
		
		

		function checkNumber(e,w_this){
		// Falta bloquear  o . (ponto)
		val = w_this;
		var cCode=e.charCode? e.charCode : e.keyCode
		//var cCode = unicode;
		//alert('e==>' + e + '   cCode==>' + cCode + '   unicode==>' + unicode + '    val==>' + val);			

		  if(cCode == 44) 
		  	{
			  var w_vl_anterior = left(val, len(val) - 1);

			  if (instr(w_vl_anterior,",") > 0) 
			  	{
//				    var myNumber = left(val, strLength - 1);
//					eval('document.frm_principal.' + w_this + '.value=' + "'" + myNumber + "'");
				    return false;
				}
				else
				{
					return true;
			    }
		    }

		  if(cCode == 8) // backspace
		  	{
				return true;
		    }

		  if(cCode == 9) // tab
		  	{
				return true;
		    }

		  if(cCode == 37) // seta a esquerda
		  	{
				return true;
		    }

		  if(cCode == 39) // seta a direita
		  	{
				return true;
		    }

		  if(cCode == 127) // del
		  	{
				return true;
		    }


	
		  if (cCode < 48 || cCode > 57 ) {  // não é numérico
//		    var myNumber = left(val, strLength - 1);
//			eval('document.frm_principal.' + w_this + '.value=' + "'" + myNumber + "'");
		    return false;
		  }
		  return true;
		}

		

		function len(str){
			    return str.length;
		}


		function left(str, n){
			if (n <= 0)
			    return "";
			else if (n > String(str).length)
			    return str;
			else
			    return String(str).substring(0,n);
		}


		function right(str, n){
		    if (n <= 0)
		       return "";
		    else if (n > String(str).length)
		       return str;
		    else {
		       var iLen = String(str).length;
		       return String(str).substring(iLen, iLen - n);
		    }
		    }


		function mid(str, inicio, tamanho){
//			alert ('str==>' + str);
//			alert ('inicio==>' + inicio);
//			alert ('tamanho==>' + tamanho);
//			str = str.substr(parseFloat(inicio)-1,tamanho)
//			return str;
			str = right(str, parseFloat(len(str)) - parseFloat(inicio) +1);
			str = left(str, tamanho);
			
			return str;


		}


		function formata_valor_para_calculos_internos (w_vl_valor) { 
			var w_vl_valor
			w_vl_valor = w_vl_valor + ''
			w_vl_valor = w_vl_valor.replace(".","");
			w_vl_valor = w_vl_valor.replace(",",".");

			if (len(trim(w_vl_valor)) == 0) 
				{
				w_vl_valor = 0
				}

			return(w_vl_valor);
		} 


		function formata_moeda_com_2_decimais_para_tela (w_vl_moeda) { 
		
			var w_vl_moeda
			var w_tamanho
			var w_tamanho_1
			var w_mid
			

//			alert ('w_vl_moeda inicial ==>' + w_vl_moeda);
			w_vl_moeda = w_vl_moeda + '';
			w_vl_moeda = w_vl_moeda.replace(",",".");
			w_vl_moeda = w_vl_moeda + '';
			w_vl_moeda = parseFloat(w_vl_moeda) * 100
			w_vl_moeda = Math.round(w_vl_moeda)
			w_vl_moeda = parseFloat(w_vl_moeda) / 100

//			alert ('w_vl_moeda final ==>' + w_vl_moeda);
			
//			w_vl_moeda = 12345;  // testes  ==> 12345,00
//			w_vl_moeda = 1234.5;  // testes ==> 1234,50   OK
//			w_vl_moeda = 123.45;  // testes ==> 123,45    OK



//			w_vl_moeda = w_vl_moeda + '';


//			w_vl_moeda = parseFloat(w_vl_moeda) + 0;

//			w_vl_moeda = w_vl_moeda.replace(".",",");
			
//			alert ('Dentro da formata_moeda_com_2_decimais_para_tela==>w_vl_moeda==>' + w_vl_moeda + '<==');

			w_vl_moeda = w_vl_moeda + ''; // Para converter o campo numérico em string.
//			w_tamanho = w_vl_moeda.length;
			w_tamanho = len(w_vl_moeda);


//			alert ('w_tamanho==>' + w_tamanho);

			// 123,45
			w_mid = mid(w_vl_moeda,w_tamanho - 2, 1);
//			alert ('w_mid==>2==>' + w_mid);
			
			// 1234,5
			w_mid = mid(w_vl_moeda,w_tamanho - 1, 1);
//			alert ('w_mid==>1==>' + w_mid);


			// 123,45
			if (mid(w_vl_moeda,parseFloat(w_tamanho) - 2, 1) == ".")	{
//				alert ('3==>' + w_vl_moeda);
				return(w_vl_moeda.replace(".",","));
			} 

			// 1234,5
			if (mid(w_vl_moeda,parseFloat(w_tamanho) - 1, 1) == ".")	{
				w_vl_moeda = w_vl_moeda + '0';
//				alert ('2==>' + w_vl_moeda);
				return(w_vl_moeda.replace(".",","));
			} 

			// 12345
			w_vl_moeda = w_vl_moeda + ',00';
//			alert ('1==>' + w_vl_moeda);
			return(w_vl_moeda.replace(".",","));



		} 

		function arredonda (w_campo, w_qt_casas_decimais) { 
		
			var w_posicao_do_ponto;	
//  alert("w_campo==>" + w_campo + "   formata_valor_para_calculos_internos(w_campo)==>" + formata_valor_para_calculos_internos(w_campo));
//			w_campo = formata_valor_para_calculos_internos(w_campo); // Não use esta função, pois extrai o "." decimal, se o nr. vem de dentro do jscript.
			w_campo = replace(w_campo,",","."); // Não use esta função, pois dá valor errado.
//  alert("w_campo==>" + w_campo);


var w_multiplicador;
w_multiplicador = "1" + left('00000000',parseFloat(w_qt_casas_decimais))
w_multiplicador = parseFloat(w_multiplicador);

//alert("w_campo==>" + w_campo + "    multiplicador==>" + w_multiplicador);


var result=Math.round(w_campo*w_multiplicador)/w_multiplicador


//var result=Math.round(w_campo*100)/100  //returns 28.452) // round "original" to 1 decimal
//var result=Math.round(w_campo*10)/10  //returns 28.53) //round 8.111111 to 3 decimals
//var result=Math.round(w_campo*1000)/1000  //returns 8.111



//	w_campo = 20.355;
//	result = Math.round(w_campo*100)/100
	return result



		} 


function captura_endereco() {
var w_data
//w_data = document.index1.TxtDataViagem.value
//var frm = window.document.URL;
var frm // = chat_default_asp text.value
//var els = theForm.elements 
//frm = window.document["nome"];
frm = document.form["cadastro"].name;
alert(frm); 



//----------------------------
}





function consiste_data1111111() {
var w_data
//w_data = document.index1.TxtDataViagem.value
var frm = window.document.URL;
alert("fdsfds"); 
for (i=0; i < 3; i++); 
	{
alert("2222222222222"); 
	alert(frm(i).name); 
}
}


function consiste_data() {
var w_data
w_data = document.index1.TxtDataViagem.value

if (w_data.length != 10) {
	alert('Atenção : a data deve ser informada, pois determinadas viagens só ocorrem em certos dias da semana.' + chr(13) + 'Informe no formato dd/mm/aaaa.');
	document.index1.TxtDataViagem.focus()
	document.index1.TxtDataViagem.select()
	return false 
	}
else
	{
	return true 
}
}



function maximizeWin() {
  if (window.screen) {
    var aw = screen.availWidth;
    var ah = screen.availHeight;
    window.moveTo(0, 0);
    window.resizeTo(aw, ah);
  }
}
 

function procura_referrer() {
  document.write(document.lastModified) + '<br>';
}


<!--
/*
No rightclick script v.2.5
(c) 1998 barts1000
barts1000@aol.com
Don't delete this header!
*/

var message="Desculpe, esta função está desabilitada."; 

// Don't edit below!

function click(e) {
return true;

if (document.all) {
if (event.button == 2) {
alert(message);
return false;
}
}
if (document.layers) {
if (e.which == 3) {
alert(message);
return false;
}
}
}
if (document.layers) {
document.captureEvents(Event.MOUSEDOWN);
}
document.onmousedown=click;




// Consistência do CNPJ e CPF ==> http://www.mhavila.com.br/topicos/web/cpf_cnpj.html

// --> 

/**
 * @author Márcio d'Ávila
 * @version 1.02, 2004-2007
 * http://www.mhavila.com.br/topicos/web/cpf_cnpj.html
 *
 * Licenciado sob os termos da licença Creative Commons,
 * Atribuição - Compartilhamento pela mesma licença 2.5:
 * http://creativecommons.org/licenses/by-sa/2.5/br/
 *
 * PROTÓTIPOS:
 * método String.lpad(int pSize, char pCharPad)
 * método String.trim()
 *
 * String unformatNumber(String pNum)
 * String formatCpfCnpj(String pCpfCnpj, boolean pUseSepar, boolean pIsCnpj)
 * String dvCpfCnpj(String pEfetivo, boolean pIsCnpj)
 * boolean isCpf(String pCpf)
 * boolean isCnpj(String pCnpj)
 * boolean isCpfCnpj(String pCpfCnpj)
 */


var NUM_DIGITOS_CPF  = 11;
var NUM_DIGITOS_CNPJ = 14;
var NUM_DGT_CNPJ_BASE = 8;


/**
 * Adiciona método lpad() à classe String.
 * Preenche a String à esquerda com o caractere fornecido,
 * até que ela atinja o tamanho especificado.
 */
String.prototype.lpad = function(pSize, pCharPad)
{
	var str = this;
	var dif = pSize - str.length;
	var ch = String(pCharPad).charAt(0);
	for (; dif>0; dif--) str = ch + str;
	return (str);
} //String.lpad


/**
 * Adiciona método trim() à classe String.
 * Elimina brancos no início e fim da String.
 */
String.prototype.trim = function()
{
	return this.replace(/^\s*/, "").replace(/\s*$/, "");
} //String.trim


/**
 * Elimina caracteres de formatação e zeros à esquerda da string
 * de número fornecida.
 * @param String pNum
 *      String de número fornecida para ser desformatada.
 * @return String de número desformatada.
 */
function unformatNumber(pNum)
{
	return String(pNum).replace(/\D/g, "").replace(/^0+/, "");
} //unformatNumber


/**
 * Formata a string fornecida como CNPJ ou CPF, adicionando zeros
 * à esquerda se necessário e caracteres separadores, conforme solicitado.
 * @param String pCpfCnpj
 *      String fornecida para ser formatada.
 * @param boolean pUseSepar
 *      Indica se devem ser usados caracteres separadores (. - /).
 * @param boolean pIsCnpj
 *      Indica se a string fornecida é um CNPJ.
 *      Caso contrário, é CPF. Default = false (CPF).
 * @return String de CPF ou CNPJ devidamente formatada.
 */
function formatCpfCnpj(pCpfCnpj, pUseSepar, pIsCnpj)
{
	if (pIsCnpj==null) pIsCnpj = false;
	if (pUseSepar==null) pUseSepar = true;
	var maxDigitos = pIsCnpj? NUM_DIGITOS_CNPJ: NUM_DIGITOS_CPF;
	var numero = unformatNumber(pCpfCnpj);

	numero = numero.lpad(maxDigitos, '0');
	if (!pUseSepar) return numero;

	if (pIsCnpj)
	{
		reCnpj = /(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/;
		numero = numero.replace(reCnpj, "$1.$2.$3/$4-$5");
	}
	else
	{
		reCpf  = /(\d{3})(\d{3})(\d{3})(\d{2})$/;
		numero = numero.replace(reCpf, "$1.$2.$3-$4");
	}
	return numero;
} //formatCpfCnpj


/**
 * Calcula os 2 dígitos verificadores para o número-efetivo pEfetivo de
 * CNPJ (12 dígitos) ou CPF (9 dígitos) fornecido. pIsCnpj é booleano e
 * informa se o número-efetivo fornecido é CNPJ (default = false).
 * @param String pEfetivo
 *      String do número-efetivo (SEM dígitos verificadores) de CNPJ ou CPF.
 * @param boolean pIsCnpj
 *      Indica se a string fornecida é de um CNPJ.
 *      Caso contrário, é CPF. Default = false (CPF).
 * @return String com os dois dígitos verificadores.
 */
function dvCpfCnpj(pEfetivo, pIsCnpj)
{
	if (pIsCnpj==null) pIsCnpj = false;
	var i, j, k, soma, dv;
	var cicloPeso = pIsCnpj? NUM_DGT_CNPJ_BASE: NUM_DIGITOS_CPF;
	var maxDigitos = pIsCnpj? NUM_DIGITOS_CNPJ: NUM_DIGITOS_CPF;
	var calculado = formatCpfCnpj(pEfetivo, false, pIsCnpj);
	calculado = calculado.substring(2, maxDigitos);
	var result = "";

	for (j = 1; j <= 2; j++)
	{
		k = 2;
		soma = 0;
		for (i = calculado.length-1; i >= 0; i--)
		{
			soma += (calculado.charAt(i) - '0') * k;
			k = (k-1) % cicloPeso + 2;
		}
		dv = 11 - soma % 11;
		if (dv > 9) dv = 0;
		calculado += dv;
		result += dv
	}

	return result;
} //dvCpfCnpj


/**
 * Testa se a String pCpf fornecida é um CPF válido.
 * Qualquer formatação que não seja algarismos é desconsiderada.
 * @param String pCpf
 *      String fornecida para ser testada.
 * @return <code>true</code> se a String fornecida for um CPF válido.
 */
function isCpf(pCpf)
{
	var numero = formatCpfCnpj(pCpf, false, false);
	var base = numero.substring(0, numero.length - 2);
	var digitos = dvCpfCnpj(base, false);
	var algUnico, i;

	// Valida dígitos verificadores
	if (numero != base + digitos) return false;

	/* Não serão considerados válidos os seguintes CPF:
	 * 000.000.000-00, 111.111.111-11, 222.222.222-22, 333.333.333-33, 444.444.444-44,
	 * 555.555.555-55, 666.666.666-66, 777.777.777-77, 888.888.888-88, 999.999.999-99.
	 */
	algUnico = true;
	for (i=1; algUnico && i<NUM_DIGITOS_CPF; i++)
	{
		algUnico = (numero.charAt(i-1) == numero.charAt(i));
	}
	return (!algUnico);
} //isCpf


/**
 * Testa se a String pCnpj fornecida é um CNPJ válido.
 * Qualquer formatação que não seja algarismos é desconsiderada.
 * @param String pCnpj
 *      String fornecida para ser testada.
 * @return <code>true</code> se a String fornecida for um CNPJ válido.
 */
function isCnpj(pCnpj)
{
	var numero = formatCpfCnpj(pCnpj, false, true);
	var base = numero.substring(0, NUM_DGT_CNPJ_BASE);
	var ordem = numero.substring(NUM_DGT_CNPJ_BASE, 12);
	var digitos = dvCpfCnpj(base + ordem, true);
	var algUnico;

	// Valida dígitos verificadores
	if (numero != base + ordem + digitos) return false;

	/* Não serão considerados válidos os CNPJ com os seguintes números BÁSICOS:
	 * 11.111.111, 22.222.222, 33.333.333, 44.444.444, 55.555.555,
	 * 66.666.666, 77.777.777, 88.888.888, 99.999.999.
	 */
	algUnico = numero.charAt(0) != '0';
	for (i=1; algUnico && i<NUM_DGT_CNPJ_BASE; i++)
	{
		algUnico = (numero.charAt(i-1) == numero.charAt(i));
	}
	if (algUnico) return false;

	/* Não será considerado válido CNPJ com número de ORDEM igual a 0000.
	 * Não será considerado válido CNPJ com número de ORDEM maior do que 0300
	 * e com as três primeiras posições do número BÁSICO com 000 (zeros).
	 * Esta crítica não será feita quando o no BÁSICO do CNPJ for igual a 00.000.000.
	 */
	if (ordem == "0000") return false;
	return (base == "00000000"
		|| parseInt(ordem, 10) <= 300 || base.substring(0, 3) != "000");
} //isCnpj


/**
 * Testa se a String pCpfCnpj fornecida é um CPF ou CNPJ válido.
 * Se a String tiver uma quantidade de dígitos igual ou inferior
 * a 11, valida como CPF. Se for maior que 11, valida como CNPJ.
 * Qualquer formatação que não seja algarismos é desconsiderada.
 * @param String pCpfCnpj
 *      String fornecida para ser testada.
 * @return <code>true</code> se a String fornecida for um CPF ou CNPJ válido.
 */
function isCpfCnpj(pCpfCnpj)
{
	var numero = pCpfCnpj.replace(/\D/g, "");
	if (numero.length > NUM_DIGITOS_CPF)
		return isCnpj(pCpfCnpj)
	else
		return isCpf(pCpfCnpj);
} //isCpfCnpj





