
  function $_(id) {
    return document.getElementById(id);
  }

  function assignLoad(func) {
    var oldonload = window.onload;
    if (typeof oldonload == 'function') {
      window.onload = function() {
        oldonload();
        func();
      }
    }
    else window.onload = function() {
      func();
    }
  }

  function rand(x, y) {
    if (x > y) {
      var tmp = x;
      x = y, y = tmp;
    }
    var len = x.toString().length >= y.toString().length
              ? x.toString().length
              : y.toString().length;
    var rand, regex;
    do {
      rand = parseInt(Math.random().toString().match(new RegExp('\.([0-9]{'+len+'})'))[1]);
    } while (rand < x || rand > y);
    return rand;
  }

  function format_money(v) {

    if (typeof v != 'string')
      v = v.toString();

    v = v.replace(/[^\d]/g, '');
    v_len = v.length;

    if (v_len == 2)
      return v.replace(/(\d)(\d)/, '$1,$2');

    for (var i = 0; i < v_len; i++)
      v = format_money_sub1(v);

    function format_money_sub1(v) {
      // step 1
      v = v.replace(/^([^,]+)([^,]{2})$/, '$1,$2');
      if (/,$/.test(v)) v = v + '00';
      else if (/,0$/.test(v)) v = v + '0';
      // step 2
      v = v.replace(/(\d)(\d{3})([.,])/, '$1.$2$3');
      return v;
    }

    return v;

  }