   function is_email(str)
   {
      var reg = /\w+@\w+\.[a-z]{2,4}/;
      return reg.test(str);
   }

   function is_url(str)
   {
      var reg = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
      return reg.test(str);
   }

   function get_id(str)
   {
        var id = parseInt(str.replace(/[^0-9]/g, ''));
        if(!id) {return 0;}
        return id;
   }

   function number_format(number, decimals, dec_point, thousands_sep){
      var exponent = "";
      var numberstr = number.toString ();
      var eindex = numberstr.indexOf ("e");
      var i, z;

      if(eindex > -1){
         exponent = numberstr.substring (eindex);
         number = parseFloat (numberstr.substring (0, eindex));
      }

      if(decimals != null){
         var temp = Math.pow (10, decimals);
         number = Math.round (number * temp) / temp;
      }

      var sign = number < 0 ? "-" : "";
      var integer = (number > 0 ? Math.floor (number) : Math.abs (Math.ceil (number))).toString ();

      var fractional = number.toString ().substring (integer.length + sign.length);
      dec_point = dec_point != null ? dec_point : ".";
      fractional = decimals != null && decimals > 0 || fractional.length > 1 ? (dec_point + fractional.substring (1)) : "";

      if(decimals != null && decimals > 0)
      {
         for(i = fractional.length - 1, z = decimals; i < z; ++i)
         fractional += "0";
      }

      thousands_sep = (thousands_sep != dec_point || fractional.length == 0) ? thousands_sep : null;

      if(thousands_sep != null && thousands_sep != ""){
      for (i = integer.length - 3; i > 0; i -= 3)
         integer = integer.substring (0 , i) + thousands_sep + integer.substring (i);
      }
      return sign + integer + fractional + exponent;
   }

   function round(digit, prec)
   {
      digit = parseFloat(digit);
      if(!digit) { digit = 0; }
      if(!prec || prec < 1) { prec = 0; }
      prec = Math.round(prec);
      prec = Math.pow(10, prec);
      digit = Math.round(digit * prec) / prec;
      return digit;
   }

   function get_coords(e)
   {
      if(!e) {e = window.event;}
      x = e.pageX;
      y = e.pageY;

      return {x: x, y: y};
   }

   function digit_ending(digit, ending)
   {
      digit = Math.abs(parseInt(digit));

      end_digit = parseInt(Math.round((digit / 10 - parseInt(digit / 10)) * 10));
      two_digits = parseInt(Math.round((digit / 100 - parseInt(digit / 100)) * 100));

      switch(true)
      {
         case digit == 0 || (two_digits > 4 && two_digits < 21):
         return ending[2];
         break;

         case end_digit == 1:
         return ending[0];
         break;

         case end_digit > 1 && end_digit < 5:
         return ending[1];
         break;

         default:
         return ending[2];
         break;
      }
   }
