// [dFilter] - A Numerical Input Mask for JavaScript
// Written By Dwayne Forehand - March 27th, 2003
// Please reuse & redistribute while keeping this notice.

var dFilterStep

var dFilterMask = '##/##/####';

var dFilterMask2 = '##,##';

function dFilterStrip (dFilterTemp, dFilter)
{
    dFilter = replace(dFilter,'#','');
    for (dFilterStep = 0; dFilterStep < dFilter.length++; dFilterStep++)
		{
		    dFilterTemp = replace(dFilterTemp,dFilter.substring(dFilterStep,dFilterStep+1),'');
		}
		return dFilterTemp;
}

function dFilterMax (dFilter)
{
 	dFilterTemp = dFilter;
    for (dFilterStep = 0; dFilterStep < (dFilter.length+1); dFilterStep++)
	{
	 		if (dFilter.charAt(dFilterStep)!='#')
			{
	        dFilterTemp = replace(dFilterTemp,dFilter.charAt(dFilterStep),'');
			}
	}
	return dFilterTemp.length;
}

function dFilter (key, textbox)
{
	dFilterNum = dFilterStrip(textbox.value, dFilterMask);
	
	if (key==9)
	{
	    return true;
	}
	else if (key==8&&dFilterNum.length!=0)
	{
	 	 	dFilterNum = dFilterNum.substring(0,dFilterNum.length-1);
	}
 	else if ( ((key>47&&key<58)||(key>95&&key<106)) && dFilterNum.length<dFilterMax(dFilterMask) )
	{
        dFilterNum=dFilterNum+String.fromCharCode(key);
	}

	var dFilterFinal='';
    for (dFilterStep = 0; dFilterStep < dFilterMask.length; dFilterStep++)
	{
        if (dFilterMask.charAt(dFilterStep)=='#')
		{
			  if (dFilterNum.length!=0)
			  {
		        dFilterFinal = dFilterFinal + dFilterNum.charAt(0);
			      dFilterNum = dFilterNum.substring(1,dFilterNum.length);
			  }
		    else
		    {
		        dFilterFinal = dFilterFinal + "";
		    }
		}
 		else if (dFilterMask.charAt(dFilterStep)!='#')
		{
		    dFilterFinal = dFilterFinal + dFilterMask.charAt(dFilterStep); 			
		}
//		dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
	}
	textbox.value = dFilterFinal;
	if (key==13){
		return true;
	}
    return false;
}

function dFilter2 (key, textbox)
{
	dFilterNum = dFilterStrip(textbox.value, dFilterMask2);
	if (key==9)
	{
		return true;
	}
	else if (key==8&&dFilterNum.length!=0)
	{
		dFilterNum = dFilterNum.substring(0,dFilterNum.length-1);
	}
 	else if ( ((key>47&&key<58)||(key>95&&key<106)) && dFilterNum.length<dFilterMax(dFilterMask2) )
	{
    	dFilterNum=dFilterNum+String.fromCharCode(key);
	}

	var dFilterFinal='';
    for (dFilterStep = 0; dFilterStep < dFilterMask2.length; dFilterStep++)
	{
        if (dFilterMask2.charAt(dFilterStep)=='#')
		{
			if (dFilterNum.length!=0)
			{
		    	dFilterFinal = dFilterFinal + dFilterNum.charAt(0);
				dFilterNum = dFilterNum.substring(1,dFilterNum.length);
			}
	   		else
	    	{
	        	dFilterFinal = dFilterFinal + "";
	   		}
		}
		else if (dFilterMask2.charAt(dFilterStep)!='#')
		{
			dFilterFinal = dFilterFinal + dFilterMask2.charAt(dFilterStep); 			
		}
//		    dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
	}
	textbox.value = dFilterFinal;
	if (key==13){
		return true;
	}
    return false;
}


function replace(fullString,text,by) {
// Replaces text with by in string
    var strLength = fullString.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return fullString;

    var i = fullString.indexOf(text);
    if ((!i) && (text != fullString.substring(0,txtLength))) return fullString;
    if (i == -1) return fullString;

    var newstr = fullString.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(fullString.substring(i+txtLength,strLength),text,by);

    return newstr;
}

	function validar_data(data){
		var dia = parseInt(data.substring(0,2),10);
		var mes = parseInt(data.substring(3,5),10);
		var ano = parseInt(data.substring(6,10),10);
		
		if (dia <= 31 && mes <=12 && ano >= 1000){
			if (data.substring(0,1)=='0' && data.substring(1,2) != '0' ||
					data.substring(0,1)!='0'){
				if (data.substring(2,3)=="/"){
					if (data.substring(3,4)=='0' && data.substring(4,5)!='0' ||
							data.substring(3,4)!='0'){
						if (data.substring(5,6)=="/"){
							if (data.substring(6,7)== '0' ||
									data.substring(6,7)=='' && data.substring(7,8)!='0'){
												alert("Digite uma data correta no formato dd/mm/aaaa");
								return false;
								
								if (mes == 2){
									if ((dia > 0 ) && (dia <= 29)){
										if (dia == 29){
											if ((ano % 4) == 0){
												return true;
											}else{
												alert('Digite uma data correta no formato dd/mm/aaaa');
												return false; 
											}
										}
									}else{
												alert('Digite uma data correta no formato dd/mm/aaaa');
										return false; 
									}
								} 
								if ((mes == 4)||(mes == 6)||(mes == 9)||(mes == 11)){
									if ((dia > 0 ) && (dia <= 30)){
										return true;
									}else{
												alert('Digite uma data correta no formato dd/mm/aaaa');
										return false;
									}
								}
								if ((mes == 1)||(mes == 3)||(mes == 5)||(mes ==7)||(mes == 8)||(mes == 10)||(mes == 12)){
									if ((dia > 0) && (dia <= 31)) {
										return true;
									}else{
												alert('Digite uma data correta no formato dd/mm/aaaa');
										return false;
									}
								}
							}
						}else{
												alert('Digite uma data correta no formato dd/mm/aaaa');
									return false;
						}
					}else{
												alert('Digite uma data correta no formato dd/mm/aaaa');
						return false;
					}
				}else{
												alert('Digite uma data correta no formato dd/mm/aaaa');
					return false;
				}
			}else{
												alert('Digite uma data correta no formato dd/mm/aaaa');
				return false;
			}
		}else{
												alert('Digite uma data correta no formato dd/mm/aaaa');
			return false;
		}
		return true;
	}

