// calculator javascript

window.addEvent('domready', function() {
  calculator = new Calculator();
});

var Calculator = new Class({
  
  chk_home_cleaning: Object,
  chk_carpet_cleaning: Object,
  tr_product_id: Object,
  tr_bedrooms: Object,
  tr_bathrooms: Object,
  tr_carpeted_rooms: Object,
  btn_send: Object,
	
  initialize: function() {
	
  	// initialize variables
  	
  	this.chk_home_cleaning = $('product_group-1');
  	this.chk_carpet_cleaning = $('product_group-2');
  	this.tr_product_id = $('tr_product_id');
  	this.tr_bedrooms = $('tr_bedrooms');
  	this.tr_bathrooms = $('tr_bathrooms');
  	this.tr_carpeted_rooms = $('tr_carpeted_rooms');
  	this.btn_send = $('send');
  	
    // add required fields
  	
    this.tr_product_id.getElement('label').set('html', '<span class="required">*</span>Cleaning Package');
    this.tr_bedrooms.getElement('label').set('html', '<span class="required">*</span>No of Bedrooms');
  	this.tr_bathrooms.getElement('label').set('html', '<span class="required">*</span>No of Bathrooms');
    this.tr_carpeted_rooms.getElement('label').set('html', '<span class="required">*</span>No of Carpeted Rooms');
  	
  	// add events
  	
  	this.chk_home_cleaning.addEvent('click', function(e) {
      this.tr_product_id.setStyle('display', (this.tr_product_id.getStyle('display') == 'none') ? '' : 'none');
      this.tr_bedrooms.setStyle('display', (this.tr_bedrooms.getStyle('display') == 'none') ? '' : 'none');
      this.tr_bathrooms.setStyle('display', (this.tr_bathrooms.getStyle('display') == 'none') ? '' : 'none');
      this.btn_send.disabled = (this.chk_home_cleaning.checked || this.chk_carpet_cleaning.checked) ? false : true;
    }.bind(this));
    
  	this.chk_carpet_cleaning.addEvent('click', function(e) {
  	  this.tr_carpeted_rooms.setStyle('display', (this.tr_carpeted_rooms.getStyle('display') == 'none') ? '' : 'none');
  	  this.btn_send.disabled = (this.chk_home_cleaning.checked || this.chk_carpet_cleaning.checked) ? false : true;
    }.bind(this));
    
    // hide rows
    
    if(!this.chk_home_cleaning.checked) {
      this.tr_product_id.setStyle('display', 'none');
      this.tr_bedrooms.setStyle('display', 'none');
      this.tr_bathrooms.setStyle('display', 'none');
    }

    if(!this.chk_carpet_cleaning.checked) {
      this.tr_carpeted_rooms.setStyle('display', 'none');
    }
    
    if(!this.chk_home_cleaning.checked && !this.chk_carpet_cleaning.checked) {
      this.btn_send.disabled = true;
    }
  },
  
  validate: function(form) {
    if(this.chk_home_cleaning.checked) {
      if(!this.validate_radio('product_id')) { alert("'Cleaning Package' is a required field"); $$('input[name=product_id]')[0].focus(); return false; }
      if(!this.validate_radio('bedrooms')) { alert("'No of Bedrooms' is a required field"); $$('input[name=bedrooms]')[0].focus(); return false; }
      if(!this.validate_radio('bathrooms')) { alert("'No of Bathrooms' is a required field"); $$('input[name=bathrooms]')[0].focus(); return false; }
    }
    
    if(this.chk_carpet_cleaning.checked) {
      if(form.carpeted_rooms.value.trim() == '') { alert("'No of Carpeted Rooms' is a required field"); form.carpeted_rooms.focus(); return false; }
      if(!form.carpeted_rooms.value.trim().match(/^\d+$/)) { alert("'No of Carpeted Rooms' must be numeric"); form.carpeted_rooms.focus(); return false; }
    }
    
    return true;
  },
  
  validate_radio: function(element_name) {
    var checked = false;
    $$('input[name=' + element_name + ']').each(function(radio) {
      if(radio.checked) checked = true;
    });
    return checked;
  }
  
});