// some nice looking calculator method

var build_keys  = ["cookie", "form", "xhr", "fx", "events", "olds", "safe", "minify"];
var build_sizes_t = "61:8537,e3:9ee5,96:a100,de:8934,df:855a,54:213e5,66:a67a,97:9d26,a2:ad2f,30:1f833,55:a64e,ea:9805,78:1a2d7,67:a2a0,a:bc4e,31:9e5e,79:7c7e,a3:a955,eb:942b,b:b874,38:1c53c,36:8e99,5c:1e517,7e:796f,14:23eb6,7f:7595,15:b359,ba:8024,37:8abf,5d:9b94,42:b9fa,39:86ed,bb:7c4a,43:b620,3e:83db,4a:af40,f2:806e,2:c70c,3f:8001,84:29719,d0:1f907,a8:21d9f,cc:23d7a,f3:7c94,3:c332,85:d1cf,4b:ab66,a9:a563,d1:a3ad,cd:ba0a,fa:75b4,1a:99fd,b2:8ade,ae:a271,d6:93ee,fb:71da,9c:20686,b3:8704,af:9e97,d7:9014,9d:a4e2,6c:21a41,70:1d5ce,c0:18d0c,1b:9623,24:26b74,c1:787a,71:93f3,6d:aa50,25:bf73,c6:b63f,76:8429,8a:b893,2c:23ca6,e0:19742,77:804f,8b:b4b9,c7:b265,2d:b4b5,e1:817e,94:23554,dc:1dbb5,e6:a2bf,95:afa0,dd:97db,64:2490f,a0:1c213,8:25c08,52:97a9,e8:1fb3a,65:b50a,53:93cf,a1:8e8b,e9:9af4,e7:9ee5,9:bf31,e:bc4e,a6:ad2f,34:209af,ee:9805,7c:1b87c,7d:8821,12:a4bb,40:1966e,5a:8cef,b8:1bbda,a7:a955,35:9d44,ef:942b,5b:8915,13:a0e1,41:7c2f,f:b874,b9:8334,3c:1dae1,46:b9fa,be:8024,48:23137,ca:ab85,47:b620,f0:1cc6c,3d:9286,bf:7c4a,0:2a07b,82:c351,f1:903a,49:b220,cb:a7ab,1:d588,83:bf77,4e:af40,b0:1eed1,ac:23344,d4:20a83,f8:19975,f6:806e,6:c70c,d5:a295,4f:ab66,ad:b0fc,f7:7c94,18:1fa43,9a:9642,7:c332,6a:9bc0,22:b0ea,b1:9aa5,f9:78c5,19:9d02,9b:9268,6b:97e6,23:ad10,b6:8ade,fe:75b4,1e:99fd,b7:8704,ff:71da,74:1e74a,88:252a6,c4:26c48,1f:9623,2a:a62c,75:92db,89:bb78,c5:c4c4,2b:a252,92:a100,8e:b893,da:8934,62:a67a,8f:b4b9,e4:23fad,93:9d26,db:855a,50:20269,63:a2a0,e5:b151,51:a766,7a:796f,ec:210df,32:8e99,a4:26212,56:97a9,10:22d3a,c:271ad,58:1cf72,57:93cf,7b:7595,33:8abf,ed:a697,11:b473,d:caca,59:8ff1,a5:bbba,16:a4bb,44:275aa,3a:83db,5e:8cef,bc:1d17f,80:17409,c8:227d5,17:a0e1,45:c87d,3b:8001,5f:8915,bd:8ed1,81:71c4,c9:ae67,4c:246dc,4:2a07b,86:c351,ce:ab85,f4:1dde8,98:1f0e1,5:d588,aa:a271,d2:93ee,4d:bdc3,f5:8f22,87:bf77,ab:9e97,20:1cb75,d3:9014,cf:a7ab,68:2049c,99:9949,21:9244,1c:20fe8,9e:9642,b4:2004d,69:9ead,fc:1af1a,1d:a89b,c2:b63f,26:b0ea,b5:998b,6e:9bc0,fd:8468,9f:9268,28:22701,72:8429,29:a91c,27:ad10,73:804f,6f:97e6,c3:b265,8c:2684b,d8:1c610,2e:a62c,90:223d8,d9:8c38,60:1a0a4,e2:a2bf,2f:a252,91:b0ba,8d:c711";
var build_sizes = {};
build_sizes_t.split(',').each(function(pair) {
  pair = pair.split(':');
  var key = pair[0].toInt(16).toString(2).split('');
  while (key.length < build_keys.length) key.unshift('0');
  build_sizes[key.join('')] = pair[1].toInt(16);
});

var max_size    = Math.max.apply(null, Object.values(build_sizes));
var min_size    = Math.min.apply(null, Object.values(build_sizes));

$(document).onReady(function() {
  var build_form  = $('custom-build-form');

  var calc     = $E('div', {id: 'calc'});
  var calc_bar = $E('div', {id: 'bar'}).insertTo(calc);
  var calc_num = $E('div', {id: 'num'}).insertTo(calc_bar);

  build_form.insert(calc, 'top');

  var CalcFx = new Class(Fx.Morph, {
    prepare: function(start_size, end_size) {
      this.startSize = start_size;
      this.endSize   = end_size;

      this.element.highlight('brown', 'green', {queue: false});

      this.$super({height: (calc.sizes().y * (end_size / max_size)) + 'px'});
    },

    render: function(delta) {
      var size = this.startSize + (this.endSize - this.startSize) * delta;
      size = ((size/100).round()/10).toString();
      if (!size.includes('.')) size += ".0";
      calc_num.update(size + 'k');

      this.$super(delta);
    }
  });

  var prev_size = 0;
  var update_calc = function() {
    var options = build_keys.map(function(key) {
      return $("options_"+key)._.checked ? 0 : 1;
    }).join('');
    var new_size = build_sizes[options];
    if (new_size) {
      new CalcFx(calc_bar).start(prev_size, new_size);
      prev_size = new_size;
    }
  };

  build_form.inputs().each(function(input) {
    if (input._.type == 'checkbox') {
      input.on('click', update_calc);
    }
  });
  $('form-reset').on('click', function() { update_calc.delay(50); });

  update_calc();
});




