    //valida formulario newsletter
    function ValidaNewsletter(){
      f = document.newsletter;
      ook = true;
      msg = "Os seguintes campos devem ser preenchidos, ou apresentaram erros\n\n";
      
    	if (CampoVazio(f.txtNome.value)) { ook = false; msg = msg + " Nome\n"; }
    	if (EmailValidate(f.txtEmail.value)) { ook = false; msg = msg + " E-Mail em branco ou invalido.\n"; }
    	if (check_date()) { ook = false; msg = msg + " Data Inválida.\n"; }
           
    
      // testa valicao e envia alerta ou formulario
      if (! ook){
      	 alert (msg);
    	 document.newsletter.txtNome.focus();
    	}
      else{ f.submit();}
    }

    //funcao de valida numero
    function numerop (x)
    {
        s = new String(x);
        ___ok = 1;
        for (i = 0; i < s.length; i++)
        {
        r = (s.charAt(i) == "0"
            || s.charAt(i) == "1" 
            || s.charAt(i) == "2" 
            || s.charAt(i) == "3" 
            || s.charAt(i) == "4" 
            || s.charAt(i) == "5" 
            || s.charAt(i) == "6"  
            || s.charAt(i) == "7" 
            || s.charAt(i) == "8" 
            || s.charAt(i) == "9" 
            || s.charAt(i) == "." 
            || s.charAt(i) == "-" );
        ___ok = ___ok & r;
        }
        return ___ok;
    }

    //valida campos em branco
    function CampoVazio(s){ return ((s == null) || (s.length == 0))}

    //funcao de validacao de email
    function EmailValidate(emailToValidate){
    	if(emailToValidate == "" || emailToValidate.indexOf("@") == -1 || emailToValidate.indexOf("@") == 0 || emailToValidate.indexOf(".") == -1 || emailToValidate.indexOf(".") == (emailToValidate.indexOf("@")+1) || emailToValidate.indexOf(".") == emailToValidate.length -1){ return true;}
      else{ return false};
     }

    // funcao que valida cep
    function ValidaCep(Cep_Pref,Cep_Suf){
        // ***** return 1 = cep invalido
        // ***** return 2 = Prefixo do cep invalido
        // ***** return 3 = cep invalido
        if (CampoVazio(Cep_Pref) || CampoVazio(Cep_Suf) || ! numerop (Cep_Pref) || ! numerop (Cep_Suf)) { return 1; }
        if (!CampoVazio(Cep_Pref) && Cep_Pref.length < 5) { return 2; }
        if (!CampoVazio(Cep_Suf) && Cep_Suf.length < 3) { return 3; }
   }
	
    // funcao de auto-tab entre campos
    function tabField(proximocampo,campoatual){
        	if(((campoatual.value).length) >= 9) {
        		proximocampo.focus();
        	}
    }

    // funcao de auto-tab entre campos quando tecla enter acionada
    function tcEnter (field, event) {
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
		if (keyCode == 13) {
			var i;
			var nmCampo;
			for (i = 0; i < field.form.elements.length; i++)
			if (field == field.form.elements[i])
				break;
			nmCampo=field.form.elements[i].name

			if (nmCampo=="txtNome"){
				i = (i + 3) % field.form.elements.length;
			}else{
				i = (i + 1) % field.form.elements.length;
			}

			field.form.elements[i].focus();
			return false;

			} 
		else
		return true;
    }  

    // funcao de formatacao de CEP
    function FormataCEP(tammax,pos,teclapres){
    	var tecla = teclapres.keyCode;
    	vr = document.newsletter.txtCEP.value;
    	vr = vr.replace( "-", "" );
    	vr = vr.replace( ".", "" );
    	vr = vr.replace( "/", "" );
    	tam = vr.length ;
    
    	if (tam < tammax && tecla != 8){ tam = vr.length + 1 ; }
    
    	if (tecla == 8 ){ tam = tam - 1 ; }
    			
    	if ( tecla == 8 || tecla == 88 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ){
    		if ( tam <= 2 ){
    	 		document.newsletter.txtCEP.value = vr ;}
    		if ( tam > pos && tam <= tammax ){
    			document.newsletter.txtCEP.value = vr.substr( 0, tam - pos ) + '-' + vr.substr( tam - pos, tam );}
    	}
    }


    // funcao para digitos somente numericos
    function NumbersOnly(){
    	if (event.keyCode<48||event.keyCode>57)
    		return false;
    }

    
// ************************************************************
//                    FUNCAO - CALENARIO POPUP
// ************************************************************
  
    // if two digit year input dates after this year considered 20 century.
    var NUM_CENTYEAR = 30;
    // is time input control required by default
    var BUL_TIMECOMPONENT = false;
    // are year scrolling buttons required by default
    var BUL_YEARSCROLL = true;
    
    var calendars = [];
    var RE_NUM = /^\-?\d+$/;
    
    function calendar1(obj_target) {
   
    	// assigning methods
    	this.gen_date = cal_gen_date1;
    	this.gen_time = cal_gen_time1;
    	this.gen_tsmp = cal_gen_tsmp1;
    	this.prs_date = cal_prs_date1;
    	this.prs_time = cal_prs_time1;
    	this.prs_tsmp = cal_prs_tsmp1;
    	this.popup    = cal_popup1;
    
    	// validate input parameters
    	if (!obj_target)
    		return cal_error("Error calling the calendar: no target control specified");
    	if (obj_target.value == null)
    		return cal_error("Error calling the calendar: parameter specified is not valid target control");
    	this.target = obj_target;
    	this.time_comp = BUL_TIMECOMPONENT;
    	this.year_scroll = BUL_YEARSCROLL;
    	
    	// register in global collections
    	this.id = calendars.length;
    	calendars[this.id] = this;
    }
    
    function cal_popup1 (str_datetime) {
    	if (str_datetime) {
    		this.dt_current = this.prs_tsmp(str_datetime);
    	}
    	else {
    		this.dt_current = this.prs_tsmp(this.target.value);
    		this.dt_selected = this.dt_current;
    	}
    	if (!this.dt_current) return;
    
    	var obj_calwindow = window.open(
    		'/include/calendar.html?datetime=' + this.dt_current.valueOf()+ '&id=' + this.id,
    		'Calendar', 'width=200,height='+(this.time_comp ? 215 : 190)+
    		',status=no,resizable=no,top=200,left=200,dependent=yes,alwaysRaised=yes'
    	);
    	obj_calwindow.opener = window;
    	obj_calwindow.focus();
    }
    
    // timestamp generating function
    function cal_gen_tsmp1 (dt_datetime) {
    	return(this.gen_date(dt_datetime) + ' ' + this.gen_time(dt_datetime));
    }
    
    // date generating function
    function cal_gen_date1 (dt_datetime) {
    	return (
    		(dt_datetime.getDate() < 10 ? '0' : '') + dt_datetime.getDate() + "/"
    		+ (dt_datetime.getMonth() < 9 ? '0' : '') + (dt_datetime.getMonth() + 1) + "/"
    		+ dt_datetime.getFullYear()
    	);
    }
    // time generating function
    function cal_gen_time1 (dt_datetime) {
    	return (
    		(dt_datetime.getHours() < 10 ? '0' : '') + dt_datetime.getHours() + ":"
    		+ (dt_datetime.getMinutes() < 10 ? '0' : '') + (dt_datetime.getMinutes()) + ":"
    		+ (dt_datetime.getSeconds() < 10 ? '0' : '') + (dt_datetime.getSeconds())
    	);
    }
    
    // timestamp parsing function
    function cal_prs_tsmp1 (str_datetime) {
    	// if no parameter specified return current timestamp
    	if (!str_datetime)
    		return (new Date());
    
    	// if positive integer treat as milliseconds from epoch
    	if (RE_NUM.exec(str_datetime))
    		return new Date(str_datetime);
    		
    	// else treat as date in string format
    	var arr_datetime = str_datetime.split(' ');
    	return this.prs_time(arr_datetime[1], this.prs_date(arr_datetime[0]));
    }
    
    // date parsing function
    function cal_prs_date1 (str_date) {
    
    	var arr_date = str_date.split('/');
    
    	if (arr_date.length != 3) return cal_error ("Formato de Data Inválido: '" + str_date + "'.\nO Formato aceito é dd/mm/yyyy.");
    	if (!arr_date[0]) return cal_error ("Formato de Data Inválido: '" + str_date + "'.\nEste DIA do mês não foi encontrado.");
    	if (!RE_NUM.exec(arr_date[0])) return cal_error ("Dia Inválido do m&ecirc;s: '" + arr_date[0] + "'.\nValores Permitidos.");
    	if (!arr_date[1]) return cal_error ("Formato de Data Inválido: '" + str_date + "'.\nEste MÊS não foi encontrado.");
    	if (!RE_NUM.exec(arr_date[1])) return cal_error ("Mês Inválido: '" + arr_date[1] + "'.\nValores Permitidos.");
    	if (!arr_date[2]) return cal_error ("Formato de Data Inválido: '" + str_date + "'.\nEste ANO não foi encontrado.");
    	if (!RE_NUM.exec(arr_date[2])) return cal_error ("Ano Inválido: '" + arr_date[2] + "'.\nValores Permitidos.");
    
    	var dt_date = new Date();
    	dt_date.setDate(1);
    
    	if (arr_date[1] < 1 || arr_date[1] > 12) return cal_error ("Mês Inválido: '" + arr_date[1] + "'.\nValores Permitido são 01-12.");
    	dt_date.setMonth(arr_date[1]-1);
    	 
    	if (arr_date[2] < 100) arr_date[2] = Number(arr_date[2]) + (arr_date[2] < NUM_CENTYEAR ? 2000 : 1900);
    	dt_date.setFullYear(arr_date[2]);
    
    	var dt_numdays = new Date(arr_date[2], arr_date[1], 0);
    	dt_date.setDate(arr_date[0]);
    	if (dt_date.getMonth() != (arr_date[1]-1)) return cal_error ("Dia Inválido do mês: '" + arr_date[0] + "'.\nValores Permitidos 01-"+dt_numdays.getDate()+".");
    
    	return (dt_date)
    }
    
    // time parsing function
    function cal_prs_time1 (str_time, dt_date) {
    
    	if (!dt_date) return null;
    	var arr_time = String(str_time ? str_time : '').split(':');
    
    	if (!arr_time[0]) dt_date.setHours(0);
    	else if (RE_NUM.exec(arr_time[0]))
    		if (arr_time[0] < 24) dt_date.setHours(arr_time[0]);
    		else return cal_error ("Invalid hours value: '" + arr_time[0] + "'.\nAllowed range is 00-23.");
    	else return cal_error ("Invalid hours value: '" + arr_time[0] + "'.\nAllowed values are unsigned integers.");
    	
    	if (!arr_time[1]) dt_date.setMinutes(0);
    	else if (RE_NUM.exec(arr_time[1]))
    		if (arr_time[1] < 60) dt_date.setMinutes(arr_time[1]);
    		else return cal_error ("Invalid minutes value: '" + arr_time[1] + "'.\nAllowed range is 00-59.");
    	else return cal_error ("Invalid minutes value: '" + arr_time[1] + "'.\nAllowed values are unsigned integers.");
    
    	if (!arr_time[2]) dt_date.setSeconds(0);
    	else if (RE_NUM.exec(arr_time[2]))
    		if (arr_time[2] < 60) dt_date.setSeconds(arr_time[2]);
    		else return cal_error ("Invalid seconds value: '" + arr_time[2] + "'.\nAllowed range is 00-59.");
    	else return cal_error ("Invalid seconds value: '" + arr_time[2] + "'.\nAllowed values are unsigned integers.");
    
    	dt_date.setMilliseconds(0);
    	return dt_date;
    }
    
    function cal_error (str_message) {
    	alert (str_message);
    	return null;
    }

// ************************************************************
//                    FUNCAO - VALIDA DATA
// ************************************************************
    function check_date(){
    DateField = document.newsletter;
    var checkstr = "0123456789";
    var Datevalue = "";
    var DateTemp = "";
    var seperator = "/";
    var day;
    var month;
    var year;
    var leap = 0;
    var err = 0;
    var i;
       err = 0;
       DateValue = DateField.DataNascimento.value;

       if (DateValue == "" || DateValue == null) {
           return false;
       }

       /* Delete all chars except 0..9 */
       for (i = 0; i < DateValue.length; i++) {
    	  if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {
    	     DateTemp = DateTemp + DateValue.substr(i,1);
    	  }
       }
       DateValue = DateTemp;
       
       /* Always change date to 8 digits - string*/
       /* if year is entered as 2-digit / always assume 20xx */
       if (DateValue.length == 6) {
          DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2); }
       if (DateValue.length != 8) {
           return true;
          //err = 19;
       }
 
       /* year is wrong if year = 0000 */
       year = DateValue.substr(4,4);
       if (year == 0) {
           return true;
           //err = 20;

       }
       /* Validation of month*/
       month = DateValue.substr(2,2);
       if ((month < 1) || (month > 12)) {
           return true;
          //err = 21;
       }

       /* Validation of day*/
       day = DateValue.substr(0,2);
       if (day < 1) {
           return true;
          //err = 22;
       }

       /* Validation leap-year / february / day */
       if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
          leap = 1;
       }
       if ((month == 2) && (leap == 1) && (day > 29)) {
           return true;
          //err = 23;
       }

       if ((month == 2) && (leap != 1) && (day > 28)) {
           return true;
          //err = 24;
       }

       /* Validation of other months */
       if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
           return true;
          //err = 25;
       }

       if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
           return true;
          //err = 26;
       }

       /* if 00 ist entered, no error, deleting the entry */
       if ((day == 0) && (month == 0) && (year == 00)) {
           return true;
          day = ""; month = ""; year = ""; seperator = "";
          //err = 0;
       }

       /* if no error, write the completed date to Input-Field (e.g. 13.12.2001) */
       if (err == 0) {
          DateField.value = day + seperator + month + seperator + year;
       }
       /* Error-message if err != 0 */
       else {
           return true;
          //alert("Date is incorrect!");
          //DateField.select();
    	  //DateField.focus();
       }
    return false;
   }