/*
 *
 * Copyright (c) 2007 Tulio Faria (http://www.tuliofaria.net - http://www.iwtech.com.br)
 * Licensed under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 * Version 1.0
 * Demo: http://www.tuliofaria.net/jquery-floatnumber/
 *
 * $LastChangedDate$
 * $Rev$
 */
(function($) {
		
	//Main Method
	$.fn.number = function(precision,separator) {	
		
		return this.each(function(){		
			var input=$(this);
			var valid=false;   

      separator = ((separator == undefined) ? ',' : separator);
					
			// Event Blur
      function blur()
      {
        var re = new RegExp(",", "g");
        s = input.val();
        s = s.replace(re, ".");

        if (s=="")
          s = "0";

        if (!isNaN(s))
        {
          n = parseFloat(s);

          s = n.toFixed(precision);

          re2 = new RegExp("\\.", "g");
          s = s.replace(re2, separator);

          input.val(s);
        }
      }
			input.bind("blur",    blur);

			// Event KeyDown
      function keydown(ev)
      {
        var digits = (precision > 0);
        var key    = ev.keyCode;
        var s      = input.val();

        if (isKeyControl(key))
          return true;
        if (((key >= VK_N0) && (key <= VK_N9)) || ((key >= VK_NUM0) && (key <= VK_NUM9)))
          return true;
        if ((separator == ',') && (key == 188) && (s.indexOf(',') == -1) && (digits)) // ,
          return true;
        if ((separator == '.') && (key == 190) && (s.indexOf('.') == -1) && (digits)) // .
          return true;
        if (key == 189) // -
          return true;

        return false;
      }
			input.bind("keydown", keydown);

      // Verifica se é uma tecla de controle
      function isKeyControl(key)
      {
        return ((key == VK_TAB) || (key == VK_RETURN) || (key == VK_SHIFT) || (key == VK_CTRL) || (key == VK_ALT) || (key == VK_CAPSLOCK)  || (key == VK_ESC) 
             || (key == VK_PGUP) || (key == VK_PGDOWN) || (key == VK_END) || (key == VK_HOME) || (key == VK_LEFT) || (key == VK_RIGHT) || (key == VK_UP) || (key == VK_DOWN)
             || (key == VK_INSERT) || (key == VK_DELETE) || (key == VK_BACKSPACE));
      }
		});
		
		
	};
})(jQuery);

