/*
 * APPLICATION SPECIFIC JAVASCRIPT
 */


function toggleCheckBoxBySelector(box, class_name )
{
  $$( class_name ).each(function(e){
    e.checked = box.checked;
  }); 
}

function inputJumpTo(input, to, length)
{
  if ($(input).value.length >= length) $(to).focus();
}


var Forms = {
  init: function()
  {
    $$('form.form').each(function(f){
      f.observe('submit', function(evt) { Forms.validate(evt)});
      f.focusFirstElement();
    });
  },

  validate: function(evt)
  {
    f = evt.element();

    messages = new Array();
    messages = Forms.validateInput(f, messages);
    messages = Forms.validateCheckbox(f, messages);
    messages = messages.uniq().without(null);

    if (messages.size() != 0)
    {
      alert(messages.join("\n"));
      evt.stop();
    }
  },

  validateInput: function(form_id, messages)
  {
    inputs = new Array();
    inputs.push('#' + f.id + ' input.required');
    inputs.push('#' + f.id + ' textarea.required');
    inputs.push('#' + f.id + ' selects.required');
    $$(inputs.join(', ')).each(function(input){
      if (! input.getValue())
      {
        l = input.getAttribute('data-label');
        messages.push(l + " is required.");
      }
    });
    return messages;
  },


  validateCheckbox: function(f, messages)
  {
    i = 0;
    while(ul = f.down('ul.required', i))
    {
      i++;
      j = 0;
      checks = new Array();
      while(ip = f.down('input[type=checkbox]', j))
      {
        j++;
        if (ip.checked) checks.push(true);
      }
      checks.uniq().without(null);
      if (! checks.size())
      {
        l = ul.getAttribute('data-label');
        messages.push(l + " is required.");
      }
    }
    return messages;
  }


}


Event.observe(window, 'load', Forms.init);


