// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

function remove_student_member(id) {
  Element.replace('student_'+id, '');
}

function select_student_type(type) {
  if (type == 'single') {
    $('student_single').style.display = 'block';
    $('student_group').style.display = 'none';
    $('student_results').style.display = 'block';
  } else {
    $('student_single').style.display = 'none';
    $('student_group').style.display = 'block';
    $('student_results').style.display = 'none';
  }
}

function select_unit_type(type) {
  if (type == 'single') {
    $('unit_single').style.display = 'block';
    $('unit_group').style.display = 'none';
    $('unit_results').style.display = 'block';
  } else {
    $('unit_single').style.display = 'none';
    $('unit_group').style.display = 'block';
    $('unit_results').style.display = 'none';
  }
}

function count_selected_enrolments(form_name) {
  var boxes = $(form_name).getElementsByClassName('radiobox');
  var sum = 0;
  for(var idx = 0; idx < boxes.length; idx++) {
    if (boxes[idx].id != 'terms' && boxes[idx].checked == true ) sum += 1;
  }
  return sum;
}

function confirm_sms_recipients() {
	if ($('send_sms').checked) {
		/* Count the recipients */
		count = parseInt($$('#visible_recipients li').length);
		if ($('recipients[all_students]') && $('recipients[all_students]').checked) {
			count += parseInt($F('all_students_count'));
		}
		if ($('recipients[all_trainers]') && $('recipients[all_trainers]').checked) {
			count += parseInt($F('all_trainers_count'));
		}
		price = (parseFloat(count) * 20.00)/100.00;
		return confirm("You are about to send " + count + " SMS messages totalling $" + roundNumber(price, 2) + " (+GST). Do you wish to proceed?");
	}
	return true;
}

function toggle_sms() {
	if ($('send_sms').checked) {
		$('subject_field').style.display = 'none';
		$('message_message_note').style.display = 'inline';
		FormHelpers.limiter._perform_limit($('message_message'));
	} else {
		$('message_message_limit').update('');
		$('subject_field').style.display = 'block';
		$('message_message_note').style.display = 'none';
	}
}

function roundNumber(num, dec) {
	var res = parseFloat(Math.round(num*Math.pow(10,dec))/Math.pow(10,dec));
	var split = res.toString().split('.');
	if (split[1].length == 1) {
		return res.toString() + "0";
	} else {
		return res;
	}
}

var FormHelpers = {

  checker: {

    all: function(button, style) {
      var checkboxes = $$(style);
      var checked = button.all_checked ? false : true;
      for(var i = 0, l = checkboxes.length; i < l; i++)
        checkboxes[i].checked = checked;
      button.all_checked = checked;
      button.update(checked ? 'Deselect all' : 'Select all');
    }

  },

  limiter: {

    CLASS_NAME_ERROR: 'form_limiter_error',
    CLASS_NAME_OK: 'form_limiter_ok',

    touch: function(field) {
      field = $(field);
      if(!field.limiter_touched) {
        field.observe('keyup', this._key_response.bind(this));
        field.observe('keydown', this._key_response.bind(this));
        field.limiter_touched = true;
      }
      return field;
    },

    maximum: function(field, max) {
      field = this.touch(field);
      field.maximum = parseInt(max);
      this._perform_limit(field);
    },

    minimum: function(field, min) {
      field = this.touch(field);
      field.minimum = parseInt(min);
      this._perform_limit(field);
    },

    _key_response: function(event) {
      this._perform_limit(Event.element(event));
    },

    _perform_limit: function(field) {
	  if (!$('send_sms').checked) return;
      var limiter = $(field.id + '_limit');
      var length = field.value.length;

      if(field.minimum)
        limiter.className = (length < field.minimum) ? this.CLASS_NAME_ERROR : this.CLASS_NAME_OK;

      // We check here to make sure the above validation didnt error.
      if((field.maximum && limiter.className == this.CLASS_NAME_OK) || (field.maximum && !field.minimum)) {
        if(length >= field.maximum) {
          limiter.className = this.CLASS_NAME_ERROR;
        } else {
          limiter.className = this.CLASS_NAME_OK;
        }
      }

      limiter.update(field.maximum - length);
    } 
  }
}

