	/**
	 *
	 * Validação de valores numéricos
	 *
	 */

	function validarNumero(numero){
		var s = new RegExp('^[0-9]+$');
		if(numero.match(s) == null) {
	   		alert("Este campo apenas permite digitos numéricos!");
	   		return false;
	  	}
	  	return true;
	}
	
	/**
	 *
	 * Validação de datas
	 *
	 */

	function validarData(data) {
		s = new RegExp('^([0][1-9]|[12][0-9]|[3][01])/([0][1-9]|[1][0-2])/([0-9]{4})$');
	  	if(data.match(s) == null) {
	   		alert("O formato de data é dd/mm/aaaa");
	   		return false;
	  	} 
	  	var
   		oPartes = data.split( "/" ),
   		nDia = parseInt( oPartes[ 0 ], 10 ),
   		nMes =  parseInt( oPartes[ 1 ], 10 ),
   		nAno =  parseInt( oPartes[ 2 ], 10 ),
   		t = anoBissexto( nAno );
	   	if((nMes == 4) | (nMes == 6) | (nMes == 9) | (nMes == 11)){
			if(nDia > 30){ 
		 		alert("O mês "+nMes+" de "+nAno+" só tem 30 dias!");
				return false;
		 	}
	   	}
	   	else if(nMes == 2){
			if(t == false){
		 		if(nDia > 28){ 
					alert("O mês "+nMes+" de "+nAno+" só tem 28 dias!");
					return false;
		 		} 
		 	} else {
				if(nDia > 29){ 
					alert("O mês "+nMes+" de "+nAno+" só tem 29 dias!");
					return false;
		 		}
		 	}
	   	}
	   	return true;
	}

	/**
     *
     * Verifica se o ano é bisexto
     * @param nAno ano a ser validado
     *
     */
	function anoBissexto( nAno ) {
		return ( nAno % 4 == 0 ) && ( ( nAno % 100 != 0 ) || ( nAno % 400 == 0 ) );
	}

	/**
     *
     * Compara intervalo entre Datas
     * @param dtInicio data inicial
     * @param dtFim data final
     *
     */
	function compararData(dtInicio,dtFim){
		vlr1 = dtInicio;
		vlr1 = vlr1.substr(6,4)+vlr1.substr(3,2)+vlr1.substr(0,2);
		vlr2 = dtFim;
		vlr2 = vlr2.substr(6,4)+vlr2.substr(3,2)+vlr2.substr(0,2);
		vlrF = vlr2 - vlr1;
		if(vlrF < 0){
			return false;
		}
		return true;
	}
	
	/**
	 *
	 * Validação de email
	 *
	 */
	 
	 function validarEmail(email){
		var s = new RegExp('^[A-Za-z0-9_.-]+@([A-Za-z0-9_-]+\[.])+[A-Za-z]{2,4}$');
		if(email.match(s) == null) {
	   		alert("O formato de E-mail é voce@dominio.com.br");
	   		return false;
	  	}
	  	return true;
	}
	
	/**
	 *
	 * Validação de Cpf
	 *
	 */
	 
	 function validarCpf(strCpf){ 

		var i; 
		s = strCpf; 
		  
		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){ 
			return false; 
	
		} 
		  
		d1 = 11 - (d1 % 11); 
		if (d1 > 9) d1 = 0; 
		if (dv.charAt(0) != d1){ 
			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){ 
			return false; 
		}
	
		return true; 
	
	}
	/**
     *
     * Fade-in dos campos de formulário
     *
     */
	var corErro 		= '#FFAEAE';
	var corObrigatorio 	= '#FFFFBF';
	var corInicial  	= '#FFFFFF';
	
	var steps = 10;
	var stepDuration = 40;
	
	//--------------------------------------------------------------
	function htmlColorString (r,g,b) {
	  var r = r.toString(16); if (r.length == 1) r = '0'+r;
	  var g = g.toString(16); if (g.length == 1) g = '0'+g;
	  var b = b.toString(16); if (b.length == 1) b = '0'+b;
	
	  return "#" + r + g + b;
	}

	//--------------------------------------------------------------
	function alterandoCor (id,estado) {
	  var oId = document.getElementById(id);
	  
	  if (oId.step) {
	    oId.step --
	
	    var from = corInicial.substr(1);
	    var   to = (estado == 'Erro') ? corErro.substr(1) : corObrigatorio.substr(1);
	    var step = oId.step;
	
	    var r0 = parseInt (from.substr(0,2),16)
	    var g0 = parseInt (from.substr(2,2),16)
	    var b0 = parseInt (from.substr(4,2),16)
	
	    var r1 = parseInt (  to.substr(0,2),16)
	    var g1 = parseInt (  to.substr(2,2),16)
	    var b1 = parseInt (  to.substr(4,2),16)
	
	    var r = Math.floor (r1 * ((steps-step)/steps) + r0 * (step/steps))
	    var g = Math.floor (g1 * ((steps-step)/steps) + g0 * (step/steps))
	    var b = Math.floor (b1 * ((steps-step)/steps) + b0 * (step/steps))
	
	    var color = htmlColorString (r,g,b)
	
	    oId.style.backgroundColor = color
	  }
	
	  if ( oId.step != 0 )
	    oId.timerId = setTimeout ("alterandoCor('"+id+"','"+estado+"')", stepDuration)
	  
	}

	//--------------------------------------------------------------
	function alterarCor (id,estado) {
		var oId = document.getElementById(id);
		oId.step = steps;
		setTimeout ("alterandoCor('"+id+"','"+estado+"')", 0);
		oId.focus();
	}
	
	function setStyleByClass(t,c,p,v){
		var elements;
		if(t == '*') {
			// '*' not supported by IE/Win 5.5 and below
			elements = (ie) ? document.all : document.getElementsByTagName('*');
		} else {
			elements = document.getElementsByTagName(t);
		}
		for(var i = 0; i < elements.length; i++){
			var node = elements.item(i);
			for(var j = 0; j < node.attributes.length; j++) {
				if(node.attributes.item(j).nodeName == 'class') {
					if(node.attributes.item(j).nodeValue == c) {
						eval('node.style.' + p + " = '" +v + "'");
					}
				}
			}
		}
	}
	
	function setStyleByTag(e, p, v, g) {
		if(g) {
			var elements = document.getElementsByTagName(e);
			for(var i = 0; i < elements.length; i++) {
				if(elements.item(i).type != 'checkbox') {
					elements.item(i).style[p] = v;
				}
			}
		} else {
			var sheets = document.styleSheets;
			if(sheets.length > 0) {
				for(var i = 0; i < sheets.length; i++) {
					var rules = sheets[i].cssRules;
					if(rules.length > 0) {
						for(var j = 0; j < rules.length; j++) {
							var s = rules[j].style;
							// selectorText broken in NS 6/Mozilla: see
							// http://bugzilla.mozilla.org/show_bug.cgi?id=51944
							ugly_selectorText_workaround();
							if(allStyleRules) {
								if(allStyleRules[j] == e) {
									s[p] = v;
								}			
							} else {
								// use the native selectorText and style stuff
								if(((s[p] != "") && (s[p] != null)) &&
								   (rules[j].selectorText == e)) {
									s[p] = v;
								}
							}
	
						}
					}
				}
			}
		}
	}

	function limparValidacao() {
		setStyleByTag("input","backgroundColor","#FFFFFF",1);
		setStyleByTag("select","backgroundColor","#FFFFFF",1);
	}
