function extractDigits(mixedString) {   var digitsOnly = '';   var thisDigit = '';   for (var i = 0; i < mixedString.length; i++) {      thisDigit = mixedString.charAt(i);      if (thisDigit >= '0' && thisDigit <= '9')         digitsOnly = digitsOnly + thisDigit;   }   return digitsOnly;}function sonumero(campo) {   var caracter = '';   var i = campo.value.length - 1;   caracter = campo.value.charAt(i);   if ((caracter < '0' || caracter > '9') && caracter != ',') {   	campo.value = campo.value.substring(0,i);   }	}function documento(campo) {   var caracter = '';   var i = campo.value.length - 1;   caracter = campo.value.charAt(i);   if ((caracter < '0' || caracter > '9') && caracter != '.' && caracter != '-' ) {   	campo.value = campo.value.substring(0,i);   }	}function currencyFormat(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;  // Enterkey = String.fromCharCode(whichCode);  // Get key value from key codeif (strCheck.indexOf(key) == -1) return false;  // Not a valid key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);}return false;}<!-- Original:  Richard Gorremans (RichardG@spiritwolfx.com) --><!-- Web Site:  http://www.spiritwolfx.com --><!-- This script and many more are available free online at --><!-- The JavaScript Source!! http://javascript.internet.com --><!-- Begin// Check browser versionvar isNav4 = false, isNav5 = false, isIE4 = falsevar strSeperator = "/"; // If you are using any Java validation on the back side you will want to use the / because // Java date validations do not recognize the dash as a valid date separator.var vDateType = 3; // Global value for type of date format//                1 = mm/dd/yyyy//                2 = yyyy/dd/mm  (Unable to do date check at this time)//                3 = dd/mm/yyyyvar vYearType = 4; //Set to 2 or 4 for number of digits in the year for Netscapevar vYearLength = 2; // Set to 4 if you want to force the user to enter 4 digits for the year before validating.var err = 0; // Set the error code to a default of zeroif(navigator.appName == "Netscape") {if (navigator.appVersion < "5") {isNav4 = true;isNav5 = false;}elseif (navigator.appVersion > "4") {isNav4 = false;isNav5 = true;   }}else {isIE4 = true;}function DateFormat(vDateName, vDateValue, e, dateCheck, dateType) {vDateType = dateType;// vDateName = object name// vDateValue = value in the field being checked// e = event// dateCheck // True  = Verify that the vDateValue is a valid date// False = Format values being entered into vDateValue only// vDateType// 1 = mm/dd/yyyy// 2 = yyyy/mm/dd// 3 = dd/mm/yyyy//Enter a tilde sign for the first number and you can check the variable information.if (vDateValue == "~") {alert("AppVersion = "+navigator.appVersion+" \nNav. 4 Version = "+isNav4+" \nNav. 5 Version = "+isNav5+" \nIE Version = "+isIE4+" \nYear Type = "+vYearType+" \nDate Type = "+vDateType+" \nSeparator = "+strSeperator);vDateName.value = "";vDateName.focus();return true;}var whichCode = (window.Event) ? e.which : e.keyCode;// Check to see if a seperator is already present.// bypass the date if a seperator is present and the length greater than 8if (vDateValue.length > 8 && isNav4) {if ((vDateValue.indexOf("-") >= 1) || (vDateValue.indexOf("/") >= 1))return true;}//Eliminate all the ASCII codes that are not validvar alphaCheck = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-";if (alphaCheck.indexOf(vDateValue) >= 1) {if (isNav4) {vDateName.value = "";vDateName.focus();vDateName.select();return false;}else {vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));return false;   }}if (whichCode == 8) //Ignore the Netscape value for backspace. IE has no valuereturn false;else {//Create numeric string values for 0123456789///The codes provided include both keyboard and keypad valuesvar strCheck = '47,48,49,50,51,52,53,54,55,56,57,58,59,95,96,97,98,99,100,101,102,103,104,105';if (strCheck.indexOf(whichCode) != -1) {if (isNav4) {if (((vDateValue.length < 6 && dateCheck) || (vDateValue.length == 7 && dateCheck)) && (vDateValue.length >=1)) {alert("Data Inv\u00E1lida\nRedigite, por favor.");vDateName.value = "";vDateName.focus();vDateName.select();return false;}if (vDateValue.length == 6 && dateCheck) {var mDay = vDateName.value.substr(2,2);var mMonth = vDateName.value.substr(0,2);var mYear = vDateName.value.substr(4,4)//Turn a two digit year into a 4 digit yearif (mYear.length == 2 && vYearType == 4) {var mToday = new Date();//If the year is greater than 30 years from now use 19, otherwise use 20var checkYear = mToday.getFullYear() + 30; var mCheckYear = '20' + mYear;if (mCheckYear >= checkYear)mYear = '19' + mYear;elsemYear = '20' + mYear;}var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;if (!dateValid(vDateValueCheck)) {alert("Data Inv\u00E1lida\nRedigite, por favor.");vDateName.value = "";vDateName.focus();vDateName.select();return false;}return true;}else {// Reformat the date for validation and set date type to a 1if (vDateValue.length >= 8  && dateCheck) {if (vDateType == 1) // mmddyyyy{var mDay = vDateName.value.substr(2,2);var mMonth = vDateName.value.substr(0,2);var mYear = vDateName.value.substr(4,4)vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;}if (vDateType == 2) // yyyymmdd{var mYear = vDateName.value.substr(0,4)var mMonth = vDateName.value.substr(4,2);var mDay = vDateName.value.substr(6,2);vDateName.value = mYear+strSeperator+mMonth+strSeperator+mDay;}if (vDateType == 3) // ddmmyyyy{var mMonth = vDateName.value.substr(2,2);var mDay = vDateName.value.substr(0,2);var mYear = vDateName.value.substr(4,4)vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;}//Create a temporary variable for storing the DateType and change//the DateType to a 1 for validation.var vDateTypeTemp = vDateType;vDateType = 1;var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;if (!dateValid(vDateValueCheck)) {alert("Data Inv\u00E1lida\nRedigite, por favor.");vDateType = vDateTypeTemp;vDateName.value = "";vDateName.focus();vDateName.select();return false;}vDateType = vDateTypeTemp;return true;}else {if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) {alert("Data Inv\u00E1lida\nRedigite, por favor.");vDateName.value = "";vDateName.focus();vDateName.select();return false;         }      }   }}else {// Non isNav Checkif (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) {alert("Data Inv\u00E1lida\nRedigite, por favor.");vDateName.value = "";vDateName.focus();return true;}// Reformat date to format that can be validated. mm/dd/yyyyif (vDateValue.length >= 8 && dateCheck) {// Additional date formats can be entered here and parsed out to// a valid date format that the validation routine will recognize.if (vDateType == 1) // mm/dd/yyyy{var mMonth = vDateName.value.substr(0,2);var mDay = vDateName.value.substr(3,2);var mYear = vDateName.value.substr(6,4)}if (vDateType == 2) // yyyy/mm/dd{var mYear = vDateName.value.substr(0,4)var mMonth = vDateName.value.substr(5,2);var mDay = vDateName.value.substr(8,2);}if (vDateType == 3) // dd/mm/yyyy{var mDay = vDateName.value.substr(0,2);var mMonth = vDateName.value.substr(3,2);var mYear = vDateName.value.substr(6,4)}if (vYearLength == 4) {if (mYear.length < 4) {alert("Data Inv\u00E1lida\nRedigite, por favor.");vDateName.value = "";vDateName.focus();return true;   }}// Create temp. variable for storing the current vDateTypevar vDateTypeTemp = vDateType;// Change vDateType to a 1 for standard date format for validation// Type will be changed back when validation is completed.vDateType = 1;// Store reformatted date to new variable for validation.var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;if (mYear.length == 2 && vYearType == 4 && dateCheck) {//Turn a two digit year into a 4 digit yearvar mToday = new Date();//If the year is greater than 30 years from now use 19, otherwise use 20var checkYear = mToday.getFullYear() + 30; var mCheckYear = '20' + mYear;if (mCheckYear >= checkYear)mYear = '19' + mYear;elsemYear = '20' + mYear;vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;// Store the new value back to the field.  This function will// not work with date type of 2 since the year is entered first.if (vDateTypeTemp == 1) // mm/dd/yyyyvDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;if (vDateTypeTemp == 3) // dd/mm/yyyyvDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;} if (!dateValid(vDateValueCheck)) {alert("Data Inv\u00E1lida\nRedigite, por favor.");vDateType = vDateTypeTemp;vDateName.value = "";vDateName.focus();return true;}vDateType = vDateTypeTemp;return true;}else {if (vDateType == 1) {if (vDateValue.length == 2) {vDateName.value = vDateValue+strSeperator;}if (vDateValue.length == 5) {vDateName.value = vDateValue+strSeperator;   }}if (vDateType == 2) {if (vDateValue.length == 4) {vDateName.value = vDateValue+strSeperator;}if (vDateValue.length == 7) {vDateName.value = vDateValue+strSeperator;   }} if (vDateType == 3) {if (vDateValue.length == 2) {vDateName.value = vDateValue+strSeperator;}if (vDateValue.length == 5) {vDateName.value = vDateValue+strSeperator;   }}return true;   }}if (vDateValue.length == 10&& dateCheck) {if (!dateValid(vDateName)) {// Un-comment the next line of code for debugging the dateValid() function error messages//alert(err);  alert("Data Inv\u00E1lida\nRedigite, por favor.");vDateName.focus();vDateName.select();   }}return false;}else {// If the value is not in the string return the string minus the last// key entered.if (isNav4) {vDateName.value = "";vDateName.focus();vDateName.select();return false;}else{vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));return false;         }      }   }}function dateValid(objName) {var strDate;var strDateArray;var strDay;var strMonth;var strYear;var intday;var intMonth;var intYear;var booFound = false;var datefield = objName;var strSeparatorArray = new Array("-"," ","/",".");var intElementNr;// var err = 0;var strMonthArray = new Array(12);strMonthArray[0] = "Jan";strMonthArray[1] = "Fev";strMonthArray[2] = "Mar";strMonthArray[3] = "Abr";strMonthArray[4] = "Mai";strMonthArray[5] = "Jun";strMonthArray[6] = "Jul";strMonthArray[7] = "Ago";strMonthArray[8] = "Set";strMonthArray[9] = "Out";strMonthArray[10] = "Nov";strMonthArray[11] = "Dez";//strDate = datefield.value;strDate = objName;if (strDate.length < 1) {return true;}for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {strDateArray = strDate.split(strSeparatorArray[intElementNr]);if (strDateArray.length != 3) {err = 1;return false;}else {strDay = strDateArray[0];strMonth = strDateArray[1];strYear = strDateArray[2];}booFound = true;   }}if (booFound == false) {if (strDate.length>5) {strDay = strDate.substr(0, 2);strMonth = strDate.substr(2, 2);strYear = strDate.substr(4);   }}//Adjustment for short years enteredif (strYear.length == 2) {strYear = '20' + strYear;}strTemp = strDay;strDay = strMonth;strMonth = strTemp;intday = parseInt(strDay, 10);if (isNaN(intday)) {err = 2;return false;}intMonth = parseInt(strMonth, 10);if (isNaN(intMonth)) {for (i = 0;i<12;i++) {if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {intMonth = i+1;strMonth = strMonthArray[i];i = 12;   }}if (isNaN(intMonth)) {err = 3;return false;   }}intYear = parseInt(strYear, 10);if (isNaN(intYear)) {err = 4;return false;}if (intMonth>12 || intMonth<1) {err = 5;return false;}if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {err = 6;return false;}if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {err = 7;return false;}if (intMonth == 2) {if (intday < 1) {err = 8;return false;}if (LeapYear(intYear) == true) {if (intday > 29) {err = 9;return false;   }}else {if (intday > 28) {err = 10;return false;      }   }}return true;}function LeapYear(intYear) {if (intYear % 100 == 0) {if (intYear % 400 == 0) { return true; }}else {if ((intYear % 4) == 0) { return true; }}return false;}function isNum( caractere )   { var strValidos = "0123456789"   if ( strValidos.indexOf( caractere ) == -1 ) return false; return true; }   function validaTecla(campo, event)  {  var BACKSPACE= 8; var key; var tecla; CheckTAB=true; if(navigator.appName.indexOf("Netscape")!= -1)   tecla= event.which; else   tecla= event.keyCode;   key = String.fromCharCode( tecla);   //alert( 'key: ' + tecla + ' -> campo: ' + campo.value);   if ( tecla == 13 )     return false;   if ( tecla == BACKSPACE )     return true; return ( isNum(key)); }   function FormataCNPJ( el )   { vr = el.value; tam = vr.length;if ( vr.indexOf(".") == -1 ) {   if ( tam <= 2 ) el.value = vr; if ( (tam > 2) && (tam <= 6) ) el.value = vr.substr( 0, 2 ) + '.' + vr.substr( 2, tam ); if ( (tam >= 7) && (tam <= 10) ) el.value = vr.substr( 0, 2 ) + '.' + vr.substr( 2, 3 ) + '.' + vr.substr( 5, 3 ) + '/'; if ( (tam >= 11) && (tam <= 18) ) el.value = vr.substr( 0, 2 ) + '.' + vr.substr( 2, 3 ) + '.' + vr.substr( 5, 3 ) + '/' + vr.substr( 8, 4 ) + '-' + vr.substr( 12, 2 ) ; }   return true;   }   function cgcCheck(cgcNumber) {  var cgcDigits = extractDigits(cgcNumber);  var cgcvaleu = false;  if(cgcDigits.length==14){  	var soma1=0;  	var soma2=0  	var peso1=2;  	var peso2=3;  	for (var i = 11; i >= 0; i--) {    		soma1 += parseInt(cgcDigits.charAt(i)) * peso1;    		peso1++;    		if (peso1 > 9) peso1=2;    		soma2 += parseInt(cgcDigits.charAt(i)) * peso2;    		peso2++;    		if (peso2 > 9) peso2=2;  	}  	var dv1 = 11 - (soma1 % 11);  	if (dv1 > 9) dv1 = 0;	soma2 += dv1 * 2;  	var dv2 = 11 - (soma2 % 11);  	if (dv2 > 9) dv2 = 0;  	if ((cgcDigits.charAt(12) == dv1) && (cgcDigits.charAt(13) == dv2)) { 		cgcvaleu = true;  	}  }  return cgcvaleu}function cpfCheck(cpfNumber) {  var cpfDigits = extractDigits(cpfNumber);  var cpfvaleu = false;  if(cpfDigits.length==11){  	var soma1=0;  	var soma2=0  	var peso1=2;  	var peso2=3;  	for (var i = 8; i >= 0; i--) {    		soma1 += parseInt(cpfDigits.charAt(i)) * peso1;    		peso1++;    		soma2 += parseInt(cpfDigits.charAt(i)) * peso2;    		peso2++;  	}  	var dv1 = 11 - (soma1 % 11);  	if (dv1 > 9) dv1 = 0;	soma2 += dv1 * 2;  	var dv2 = 11 - (soma2 % 11);  	if (dv2 > 9) dv2 = 0;  	if ((cpfDigits.charAt(9) == dv1) && (cpfDigits.charAt(10) == dv2)) cpfvaleu = true;  	if (cpfDigits=="00000000000" || cpfDigits=="11111111111") cpfvaleu = false;  	if (cpfDigits=="22222222222" || cpfDigits=="33333333333") cpfvaleu = false;  	if (cpfDigits=="44444444444" || cpfDigits=="55555555555") cpfvaleu = false;  	if (cpfDigits=="66666666666" || cpfDigits=="77777777777") cpfvaleu = false;  	if (cpfDigits=="88888888888" || cpfDigits=="99999999999") cpfvaleu = false;  	  }  return cpfvaleu}//  End -->// Comunica\u00E7\u00E3o entre os dados da tela HTML da emissao de boleto e o Agente LotusScript// Para o formulario de emissao_sindical// Incluido para testar o CNPJ e o Sindicato// CrossBrowser Function - - - // Builds the XML variables that will be sent to the agent. function BuildXMLVariables() {    // This "If" condition tests the browser (for Mozzilla, non IE).    //  If you have a specific browser test you'd like to do here, thats fine. if (document.implementation.createDocument) 	{         // Mozilla, create a new DOMParser         var parser = new DOMParser();         xmlString = "<doc>";        // add as many as you'd like to here. These variables will be accessible via the agent.         xmlString = xmlString + "<DocID>" + document.forms[0].boleto_exercicio.value + "</DocID>" ;        xmlString = xmlString + "<CGC>" + document.forms[0].cnpj_digitado.value + "</CGC>" ;                xmlString = xmlString +  "</doc>" ;        objDOM = parser.parseFromString(xmlString, "text/xml"); 	} 	// This "If" condition tests the browser (for IE).  If you have a specific 	// browser test you'd like to do here, thats fine.   else if (window.ActiveXObject) 	{         // IE, create a new XML document using ActiveX         // and use loadXML as a DOM parser.         var objDOM = new ActiveXObject("Microsoft.XMLDOM")         RootEl = objDOM.createNode(1, "RootElement", "")         objDOM.documentElement = RootEl         // add as many of these nodes as you need.         // these variables will be accessible via the agent.         objHeaders = objDOM.createNode(1, "DocID", "") 	   objHeaders.text = document.all.boleto_exercicio.value	   RootEl.appendChild(objHeaders)	   objHeaders = objDOM.createNode(1, "CGC", "")	   objHeaders.text = document.all.cnpj_digitado.value	   RootEl.appendChild(objHeaders)	} return objDOM; } // Cross-Browser ----- Calls the Agent function runAgent(strAgentName, strXMLvariables) { strUrl = document.forms[0].pathName.value + "/"+strAgentName+"?OpenAgent"; // This "If" condition tests the browser (for Mozzilla, non IE). //  If you have a specific browser test you'd like to do here, thats fine. if (document.implementation.createDocument) 	{         objHTTP = new XMLHttpRequest(); 	   objHTTP.open("POST", strUrl, false); 	}    else if (window.ActiveXObject) 	{ 		objHTTP = new ActiveXObject("Microsoft.XMLHTTP"); 		objHTTP.open("POST", strUrl, false, "", ""); } 	   objHTTP.setRequestHeader("Content-type", "application/x-www-form-urlencoded");    objHTTP.send(strXMLvariables);    resp = objHTTP.responseText;    objHTTP = null;    return resp; }