addEvent = function(o, e, f, s){
	var r = o[r = "_" + (e = "on" + e)] = o[r] || (o[e] ? [[o[e], o]] : []), a, c, d;
	r[r.length] = [f, s || o], o[e] = function(e){
		try{
			(e = e || event).preventDefault || (e.preventDefault = function(){e.returnValue = false;});
			e.stopPropagation || (e.stopPropagation = function(){e.cancelBubble = true;});
			e.target || (e.target = e.srcElement || null);
			e.key = (e.which + 1 || e.keyCode + 1) - 1 || 0;
		}catch(f){}
		for(d = 1, f = r.length; f; r[--f] && (a = r[f][0], o = r[f][1], a.call ? c = a.call(o, e) : (o._ = a, c = o._(e), o._ = null), d &= c !== false));
		return e = null, !!d;
    }
};

removeEvent = function(o, e, f, s){
	for(var i = (e = o["_on" + e] || []).length; i;)
		if(e[--i] && e[i][0] == f && (s || o) == e[i][1])
			return delete e[i];
	return false;
};

function MascaraMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){
    var sep = 0;
    var key = '';
    var i = j = 0;
    var len = len2 = 0;
    var strCheck   = '0123456789';
    var aux = aux2 = '';
    var whichCode = (window.Event) ? e.which : e.keyCode;
    //if (whichCode == 8) return true;
    //if (whichCode == 13) return true;
    key = String.fromCharCode(whichCode); // Valor para o código da Chave
    if (whichCode == 8){
	  key = objTextBox.value.substr(objTextBox.value.length-1, objTextBox.value.length);
	  if(strCheck.indexOf(key) < 0){
	  	 key = objTextBox.value.substr(objTextBox.value.length-2, objTextBox.value.length-1);
	  }
	  objTextBox.value = objTextBox.value.substr(0, objTextBox.value.length-2);
	}
    if (strCheck.indexOf(key) == -1) return false; // Chave inválida
    len = objTextBox.value.length;
    for(i = 0; i < len; i++)
        if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break;
    aux = '';
    for(; i < len; i++)
        if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i);
    aux += key;
    len = aux.length;
    if (len == 0) objTextBox.value = '';
    if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux;
    if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux;
    if (len > 2) {
        aux2 = '';
        for (j = 0, i = len - 3; i >= 0; i--) {
            if (j == 3) {
                aux2 += SeparadorMilesimo;
                j = 0;
            }
            aux2 += aux.charAt(i);
            j++;
        }
        objTextBox.value = '';
        len2 = aux2.length;
        for (i = len2 - 1; i >= 0; i--)
        objTextBox.value += aux2.charAt(i);
        objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len);
    }
    len = objTextBox.value.length;
    //objTextBox.value = objTextBox.value.substr(len-2);
    return false;
}

function mascara(campo, mask, evt){
if(document.all) { // Internet Explorer
    key = evt.keyCode; }
    else{ // Nestcape
       key = evt.which;
     }
 
campo.maxLength = mask.length;
if (key == 8) { return true; }
if (key == 0) { return true; }

 string = campo.value;  
 i = string.length;

 if (i < mask.length) {
  if (mask.charAt(i) == '?') {
       return (key > 47 && key < 58);
      } else {
       if (mask.charAt(i) == '!'){  return true;  }
   for (c = i; c < mask.length; c++) {
         if (mask.charAt(c) != '?' && mask.charAt(c) != '!')
         campo.value = campo.value + mask.charAt(c);
      else if (mask.charAt(c) == '!'){
                return true;
       } else {
         return (key > 47 && key < 58);
          }
       }
    }
  } else return false;
} 

function getSelText(){
     var txt = '';
     if (window.getSelection){
        txt = window.getSelection();
     }else if (document.getSelection){
        txt = document.getSelection();
     }else if(document.selection){
        txt = document.selection(); 
     }else{
        txt = document.selection.createRange().text;
     }     
	 return txt;
}

//<![CDATA[
function formatCurrency(o, n, dig, dec){
	o.c = !isNaN(n) ? Math.abs(n) : 2;
	o.dec = typeof dec != "string" ? "," : dec, o.dig = typeof dig != "string" ? "." : dig;
	addEvent(o, "keypress", function(e){		

    var txt = '';
    if (document.selection){
        txt = document.selection.createRange().text;
    }else if(window.getSelection){
	    var selLength = this.textLength;
	    var selStart = this.selectionStart;
	    var selEnd = this.selectionEnd;
	    if (selEnd==1 || selEnd==2) selEnd=selLength;
	    var s1 = (this.value).substring(0,selStart);
	    var s2 = (this.value).substring(selStart, selEnd)
	    var s3 = (this.value).substring(selEnd, selLength);
    	txt = s2;       	
	}
	
	var oldValues = this.value;
	if(txt != ''){
		this.focus();
		this.value = this.value.replace(txt, '');
	}
		
		if((e.key > 47 && e.key < 58) || (e.key == 8)){
			var o, s, l = (s = ((o = this).value.replace(/^0+/g, "") + String.fromCharCode(e.key)).replace(/\D/g, "")).length, n;
			if(o.maxLength + 1 && l >= o.maxLength) return false;
			l <= (n = o.c) && (s = new Array(n - l + 2).join("0") + s);
			for(var i = (l = (s = s.split("")).length) - n; (i -= 3) > 0; s[i - 1] += o.dig);
			n && n < l && (s[l - ++n] += o.dec);
			o.value = s.join("");
		}else{
			if(oldValues == '')
				this.value = '0'; else
				this.value = oldValues;
		}
		

		e.key > 30 && e.preventDefault();
	});
	
	addEvent(o, "blur", function(e){
		if(o.value == ""){
			o.value = "0";
		}
		e.key > 30 && e.preventDefault();
	});
}
//]]>

//<![CDATA[

function formataMoeda(o, n, dig, dec){
	o.c = !isNaN(n) ? Math.abs(n) : 2;
	o.dec = typeof dec != "string" ? "," : dec, o.dig = typeof dig != "string" ? "." : dig;
	
	addEvent(o, "keypress", function(e){
///*
		o.setAttribute('maxlength', 20);
		var oldValues = this.value;

		if((e.key > 47 && e.key < 58) || (e.key == 8)){
			if(oldValues == "0") o.value = "";
			if(e.key == 8 && oldValues.length == 1){
				o.value = "0";				
				return false;
			}else{
				return true;
			}
		}else
		if(e.key == 44 || e.key == 46){
			var virg = oldValues.replace(/([^\.,]+)/, '');
			
			if(e.key == 44){
				if(virg == '') o.value = oldValues+'.';
				return false;
			}	
			if(virg == '') return true; else return false;
		}
		e.key > 30 && e.preventDefault();
	});
	
	addEvent(o, "blur", function(e){
		if(o.value == "") o.value = "0";
		o.value = moeda.formatar(o.value);
	});
	addEvent(o, "focus", function(e){ o.value = moeda.desformatar(o.value); });
}
//]]> 

var moeda = {
	//retiraFormatacao
	desformatar: function(num){
		num = num.replace(".", "");
		num = num.replace(",", ".");
		return parseFloat(num);
	},

	//formatar
	formatar: function(num){
		x = 0;
		if(num < 0){
			num = Math.abs(num);
			x = 1;
		}
		if(isNaN(num)) num = "0";
		cents = Math.floor((num*100+0.5)%100);
		num   = Math.floor((num*100+0.5)/100).toString();
		
		if(cents < 10) cents = "0" + cents;
		for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
			num = num.substring(0,num.length-(4*i+3))+'.'+num.substring(num.length-(4*i+3));
		
		ret = num + ',' + cents;
		if (x == 1) ret = ' - ' + ret;return ret;
	},
	
	//arredondar
	arredondar: function(num){ return Math.round(num*Math.pow(10,2))/Math.pow(10,2); }
}
