/*
 $Id: dFilter.js 905 2007-02-23 17:12:37Z julio.kronbauer $
 $Author: julio.kronbauer $
 $Date: 2007-02-23 15:12:37 -0200 (sex, 23 fev 2007) $
 $Rev: 905 $
 $LastChangedDate: 2007-02-23 15:12:37 -0200 (sex, 23 fev 2007) $
 $LastChangedRevision: 905 $
 $LastChangedBy: julio.kronbauer $
 $HeadURL: http://172.16.0.110/sizeof.com.br_sizeofapi/js/dFilter.js $
*/

// [dFilter] - A Numerical Input Mask for JavaScript
// Written By Dwayne Forehand - March 27th, 2003
// Please reuse & redistribute while keeping this notice.

var dFilterStep




function dFilterStrip(dFilterTemp, dFilterMask){
    dFilterMask = replace(dFilterMask,'#','');
    for(dFilterStep = 0; dFilterStep < dFilterMask.length++; dFilterStep++) dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
	return dFilterTemp;
}




function dFilterMax(dFilterMask){
	dFilterTemp = dFilterMask;
    for(dFilterStep = 0; dFilterStep < (dFilterMask.length+1); dFilterStep++) if(dFilterMask.charAt(dFilterStep)!='#') dFilterTemp = replace(dFilterTemp,dFilterMask.charAt(dFilterStep),'');
	return dFilterTemp.length;
}




function dFilter(e, textbox, dFilterMask){
	var key = getKeyCode(e);
	if(key==0 || key==9 || key==13 || key==116 || key==119) return true;
	else{
		if(key > 58) key -= 48;
		dFilterNum = dFilterStrip(textbox.value, dFilterMask);
		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),'');
	}

	if(dFilterFinal == replace(dFilterMask,'#','')) dFilterFinal='';
	textbox.value = dFilterFinal;
    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 getKeyCode(e){
	return ((document.layers || document.getElementById) && !document.all) ? e.which : e.keyCode;
}




function maskTelefone(){
	var a = maskTelefone.arguments;
	if(a.length < 2) return false;
	try{
		e = a[0];
		t = a[1];

		k = getKeyCode(e);
		if(k==0 || k==9) return true;

		t.value = replace(replace(replace(replace(replace(replace(t.value,'X',''),'x',''),' ',''),'(',''),')',''),'#','');

		if(t.value.length < 8) return dFilter(e,t,'(xx) ###-####');
		if(t.value.length < 9) return dFilter(e,t,'(xx) ####-####');
		if(t.value.length < 10) return dFilter(e,t,'(##) ###-####');
		if(t.value.length >= 10) return dFilter(e,t,'(##) ####-####');
	}catch(e){
		return false;
	}
}




function maskPlacaCarroBR(){
	var a = maskPlacaCarroBR.arguments;
	if(a.length < 2) return false;
	try{
		e = a[0];
		t = a[1];

		k = getKeyCode(e);
		if(k==0 || k==9) return true;

		e_numero = k>=48 && k<=57;
		e_backspace = k==8;
		e_letra = (k>=65 && k<=90) || (k>=97 && k<=122);

		t.value = replace(t.value,'-','');
		if(!e_backspace && ((t.value.length < 3 && !e_numero) || (t.value.length >= 3 && e_numero))) t.value += String.fromCharCode(k);
		if(e_backspace) t.value = t.value.substring(0,t.value.length-1);
		t.value = t.value.length ? t.value.substring(0,3) + '-' + t.value.substring(3,7) : '';
		t.value = t.value.toUpperCase();

		return false;
	}catch(e){
		return false;
	}
}




function getMoneySeparator(locale){
	switch(locale){
		case 'en_US': return new Array('.', ','); break;
		case 'pt_BR':
		default: return new Array(',', '.'); break;
	}
}




function moedaToFloat(valor, locale){
	var seps = getMoneySeparator(locale);
	var sep_dec = seps[0];
	var sep_mil = seps[1];
	var pos_ponto = -1;
	v = valor;
	if(v.indexOf(',') == -1){
		if((pos_ponto = v.indexOf('.')) > -1){
			v = v.substring(0, pos_ponto) + ',' + v.substring(pos_ponto + 1, v.length);
		}
	}
	v = replace(v, sep_mil, '');
	v = replace(v, sep_dec, '.');
	v = eval(v);
	if(isNaN(v)) v = 0.00;
	return v;
}




function floatToMoeda(valor, locale, casas_decimais){
	casas_decimais = !isNaN(casas_decimais) ? casas_decimais : 2;

	var seps = getMoneySeparator(locale);
	var sep_dec = seps[0];
	var sep_mil = seps[1];
	var i;

	var v = Math.round(valor*100)/100;
	v = v.toString();
	if(v.indexOf('.')==-1){
		v = v + '.';
		for(i=1; i<=casas_decimais; i++) v = v + '0';
	}
	while(v.indexOf('.')>v.length-(casas_decimais+1)) v = v + '0';
	v = replace(replace(v,sep_dec,''),sep_mil,'');

	var formatado = '', j = 0;
	i = v.length - 1;
	while(i>=0){
		j++;
		coloca_sep_dec = j==casas_decimais+1 && formatado.length==casas_decimais;
		coloca_sep_mil = j==4 && formatado.length>=6 && !isNaN(parseInt(v.charAt(i)));
		if(coloca_sep_dec) formatado = sep_dec + formatado;
		if(coloca_sep_mil) formatado = sep_mil + formatado;
		if(!coloca_sep_dec && !coloca_sep_mil){ formatado = v.charAt(i) + formatado; i--; }
		if(coloca_sep_dec || coloca_sep_mil) j = 0;
	}
	return formatado;
}




function maskMoney(){
	a = maskMoney.arguments;
	if(a.length < 3) return false;
	try{
		e = a[0];
		t = a[1];
		l = a[2];
		casas_decimais = a[3] ? a[3] : 2;

		var seps = getMoneySeparator(l);
		var sep_dec = seps[0];
		var sep_mil = seps[1];

		k = getKeyCode(e);
		if(k==0 || k==9 || k==13 || k==110 || k==116) return true;

		e_numero = k>=48 && k<=57;
		e_backspace = k==8;

		temp = t.value;

		if(!e_backspace && e_numero) temp += String.fromCharCode(k);
		if(e_backspace) temp = temp.substring(0,temp.length-1);

		temp = replace(replace(temp,sep_dec,''),sep_mil,'');

		var formatado = '', i = temp.length - 1, j = 0;
		while(i>=0){
			j++;
			coloca_sep_dec = j==casas_decimais+1 && formatado.length==casas_decimais;
			coloca_sep_mil = j==4 && formatado.length>=6;
			if(coloca_sep_dec) formatado = sep_dec + formatado;
			if(coloca_sep_mil) formatado = sep_mil + formatado;
			if(!coloca_sep_dec && !coloca_sep_mil){ formatado = temp.charAt(i) + formatado; i--; }
			if(coloca_sep_dec || coloca_sep_mil) j = 0;
		}

		while(formatado.indexOf('0')==0 && (formatado.indexOf(sep_dec)==2 || formatado.indexOf(sep_mil)==1)) formatado = formatado.substring(1,formatado.length);

		if(formatado.length < casas_decimais+1){
			temp2 = formatado;
			formatado = '0' + sep_dec;
			for(i=0; i<casas_decimais-temp2.length; i++)
			formatado += '0';
			formatado += temp2;
		}

		t.value = formatado;

		return false;
	}catch(e){
		return false;
	}
}




function maskNumber(){
	a = maskNumber.arguments;
	if(a.length < 3) return false;
	try{
		e = a[0];
		t = a[1];
		l = a[2];

		var seps = getMoneySeparator(l);
		var sep_mil = seps[1];

		k = getKeyCode(e);
		if(k==0 || k==9 || k==13 || k==110 || k==116) return true;

		e_numero = k>=48 && k<=57;
		e_backspace = k==8;

		temp = t.value;

		if(!e_backspace && e_numero) temp += String.fromCharCode(k);
		if(e_backspace) temp = temp.substring(0,temp.length-1);

		temp = replace(temp,sep_mil,'');

		var formatado = '', i = temp.length - 1, j = 0;
		while(i>=0){
			j++;
			coloca_sep_mil = j==4 && formatado.length>=3;
			if(coloca_sep_mil){
				formatado = sep_mil + formatado;
				j = 0;
			}
			else{
				formatado = temp.charAt(i) + formatado;
				i--;
			}
		}

		while(formatado.indexOf('0')==0 || formatado.indexOf(sep_mil)==0) formatado = formatado.substring(1,formatado.length);

		t.value = formatado;

		return false;
	}catch(e){
		return false;
	}
}