/** Mascara de formatação de campos */
/**
Filtro
Função que formata campos input do tipo text durante a digitação
@param | object HTML | Objeto input
@param | string | Nome da função que realizará a formatação
*/
function Filtro(FiltroInput, FiltroFunction){
	var $input = FiltroInput;
	var $function = FiltroFunction;
	// Determina o navegador e sua versão
	var $intIndMinNS6 = ( navigator.appName.indexOf("Netscape") >= 0 && parseFloat(navigator.appVersion) >= 5) ? 1 : 0;
	var $intIndMinIE4 = ( document.all ) ? 1 : 0;
	// Se é IE4
	if($intIndMinIE4){
		/*
		Não executar as funções de formatação 
		caso pressionado as seguintes teclas
		8 = backspace
		9 = tab
		16 = shift
		36 = home
		37 = left arrow
		39 = right arrow
		46 = delete
		*/
		var $key = window.event.keyCode;
		switch($key){
			case 37:
			case 8:
			case 36:
			case 39:
			case 46:
			case 16:
			case 9:
				return false;
				break;
		}
	} else if (!$intIndMinNS6) {
		return false;
	}
	$input.value = eval('Filtro'+$function+'("'+$input.value+'")');
}
/**
FiltroInt
Formato 99999 ...
@param | string | Valor
@return | string
*/
function FiltroInt(FiltroIntStr){
	var $str = FiltroIntStr.replace(/\D/g,'');
	return $str;
}
/**
FiltroCEP
Formato 99999-999
@param | string | Valor
@return | string
*/
function FiltroCEP(FiltroCEPStr){
	var $str = FiltroCEPStr.toString();
	$str = FiltroInt($str);
	var $length = $str.length;
	
	if($length>8){
		$length = 8;
		$str = $str.substr(0,$length);
	}
	// Formata CEP com o -
	if($length>5){
		$str = $str.substr(0,5)+'-'+$str.substr(5);
	}
	return $str;
}
/**
FiltroCNPJ
Formato 999.999.999/9999-99
@param | string | Valor
@return | string
*/
function FiltroCNPJ(FiltroCNPJStr){
	var $str = FiltroCNPJStr.toString();
	$str = FiltroInt($str);
	var $strFormat = '';
	var $length = $str.length;
	var $max = 15;
	if($length>$max){
		$length = $max;
		$str = $str.substr(0,$length);
	}
	// Formatar CNPJ com o '-', a '/' e os '.'
	if($length>2){
		$strFormat = '-'+$str.substr($length-2);
		if($length>6){
			$strFormat = '/'+$str.substr($length-6,4)+$strFormat;
			for($i=9;$i<=$length;$i+=3){
				$strFormat = $str.substr($length-$i,3)+$strFormat;
				if($length>$i){
					$strFormat = '.'+$strFormat;
				}
			}
			$strFormat = $str.substr(0,$length-$i+3)+$strFormat;
		}else{
			$strFormat = $str.substr(0,$length-2)+$strFormat;
		} 
	}else{
		$strFormat = $str;
	}
	return $strFormat;
}
/**
FiltroCPF
Formato 999.999.999-99
@param | string | Valor
@return | string
*/
function FiltroCPF(FiltroCPFStr){
	var $str = FiltroCPFStr.toString();
	$str = FiltroInt($str);
	var $strFormat = '';
	var $length = $str.length;
	var $max = 11;
	if($length>$max){
		$length = $max;
		$str = $str.substr(0,$length);
	}
	// Formatar CPF com o '-' e os '.'
	if($length>2){
		$strFormat = '-'+$str.substr($length-2);
		for($i=5;$i<=$length;$i+=3){
			$strFormat = $str.substr($length-$i,3)+$strFormat;
			if($length>$i){
				$strFormat = '.'+$strFormat;
			}
		}
		$strFormat = $str.substr(0,$length-$i+3)+$strFormat;
	}else{
		$strFormat = $str;
	}
    return $strFormat;
}
/**
FiltroData_mm_aaaa
Formato mm/aaaa
@param | string | Valor
@return | string
*/
function FiltroData_mm_aaaa(FiltroData_mm_aaaaStr){
	var $str = FiltroData_mm_aaaaStr.toString();
	$str = FiltroInt($str);
	var $length = $str.length;
	var $max = 6;
	if($length>$max){
		$length = $max;
		$str = $str.substr(0,$length);
	}
	// Formatar data com as /
	if($length>2){
		$str = $str.substr(0,2)+'/'+$str.substr(2);
	}
	return $str;
}
/**
FiltroData_dd_mm_aaaa
Formato dd/mm/aaaa
@param | string | Valor
@return | string
*/
function FiltroData_dd_mm_aaaa(FiltroData_dd_mm_aaaaStr){
	var $str = FiltroData_dd_mm_aaaaStr.toString();
	$str = FiltroInt($str);
	var $length = $str.length;
	var $max = 8;
	if($length>$max){
		$length = $max;
		$str = $str.substr(0,$length);
	}
	// Formatar data com as /
	if($length>4){
		$str = $str.substr(0,2)+'/'+$str.substr(2,2)+'/'+$str.substr(4);
	}else if($length>2){
		$str = $str.substr(0,2)+'/'+$str.substr(2);
	}
	return $str;
}
/**
FiltroHora_hh_mm_ss
Formato hh:mm:ss
@param | string | Valor
@return | string
*/
function FiltroHora_hh_mm_ss(FiltroHora_hh_mm_ssStr){
	var $str = FiltroHora_hh_mm_ssStr.toString();
	$str = FiltroInt($str);
	var $length = $str.length;
	var $max = 6;
	if($length>$max){
		$length = $max;
		$str = $str.substr(0,$length);
	}
	// Formatar hora com os :
	if($length>4){
		$str = $str.substr(0,2)+':'+$str.substr(2,2)+':'+$str.substr(4);
	}else if($length>2){
		$str = $str.substr(0,2)+':'+$str.substr(2);
	}
	return $str;
}
/**
FiltroHora_hh_mm
Formato hh:mm
@param | string | Valor
@return | string
*/
function FiltroHora_hh_mm(FiltroHora_hh_mmStr){
	var $str = FiltroHora_hh_mmStr.toString();
	$str = FiltroInt($str);
	var $length = $str.length;
	var $max = 4;
	if($length>$max){
		$length = $max;
		$str = $str.substr(0,$length);
	}
	// Formatar hora com os :
	if($length>2){
		$str = $str.substr(0,2)+':'+$str.substr(2);
	}
	return $str;
}
/**
FiltroDDD_Telefone
Formato (99) 9999-9999
@param | string | Valor
@return | string
*/
function FiltroDDD_Telefone(FiltroDDD_TelefoneStr){
	var $str = FiltroDDD_TelefoneStr.toString();
	$str = FiltroInt($str);
	var $length = $str.length;
	var $max = 10;
	if($length>$max){
		$length = $max;
		$str = $str.substr(0,$length);
	}
	if($length>6){
		$str = '('+$str.substr(0,2)+') '+$str.substr(2,4)+'-'+$str.substr(6,4);
	}else if($length>1){
		$str = '('+$str.substr(0,2)+') '+$str.substr(2,4);
	}else if($length>0){
		$str = '('+$str;
	}
	return $str;
}
/**
FiltroMilhar
Formato 999.999.999 ...
@param | string | Valor
@return | string
*/
function FiltroMilhar(FiltroMilharStr){
	var $str = FiltroMilharStr.toString();
	$str = FiltroInt($str);
	var $strFormat = '';
	var $length = $str.length;
	// Formata milhar com .
	if($length>3){
		for($i=3;$i<=$length;$i+=3){
			$strFormat = $str.substr($length-$i,3)+$strFormat;
			if($length>$i){
				$strFormat = '.'+$strFormat;
			}
		}
		$strFormat = $str.substr(0,$length-$i+3)+$strFormat;
	}else{
		$strFormat = $str;
	}
	return $strFormat;
}
/**
FiltroValor
Formato 999.999,99 ...
@param | string | Valor
@return | string
*/
function FiltroValor(FiltroValorStr){
	var $str = FiltroValorStr.toString();
	$str = FiltroInt($str);
	var $strFormat = '';
	var $length = $str.length;
	var $decimals = 2;
	if($length>2){
		$strFormat = ','+$str.substr($length-2,2);
		for($i=5;$i<=$length;$i+=3){
			$strFormat = $str.substr($length-$i,3)+$strFormat;
			if($length>$i){
				$strFormat = '.'+$strFormat;
			}
		}
		$strFormat = $str.substr(0,$length-$i+3)+$strFormat;
	}else{
		$strFormat = $str;
	}
	return $strFormat;
}
/**
FiltroLogin
Suporta apenas caracteres: 0-9a-zA-Z
@param | string | Valor
@return | string
*/
function FiltroLogin(FiltroLoginStr){
	var $str = FiltroLoginStr;
	var $not = /[^a-zA-Z0-9]/g;
	return $str.replace($not,'');
}
/**
FiltroTextareaResize
Auto redimensiona uma textarea com base nas linhas digitadas
@param | object HTML | Objeto textarea
*/
function FiltroTextareaResize(FiltroTextareaResizeObj){
	var $obj = FiltroTextareaResizeObj;
	var $rows = $obj.rows;
	var $scrollHeight = $obj.scrollHeight;
	var $offsetHeight = $obj.offsetHeight;
	var $scrollWidth = $obj.scrollWidth;
	var $offsetWidth = $obj.offsetWidth;
	
	if($scrollHeight>$offsetHeight+1||$scrollWidth>$offsetWidth+1){
		$obj.rows = $rows+1;
	}
}
