/* Disabled submit buttons for a calculator form will look like:
 *   <input type="submit" value="Loading" class="loadingbtn" disabled="disabled" />
 * 
 * Active submit buttons will look like:
 *   <input type="submit" value="Submit" class="use_sprite btn_1" />
 */

$(function() {
  /* Submitting a calculator form will POST its values via an AJAX request and
   * load the results into the "calc_results" <div>.  Naturally, this means that
   * only one calculator should exist at a time on a page.
   */
  $('form.calculator').submit(function() {
    var form = this;
    
    // Change submit button while processing
    $('input:submit', form).val('Calculating').attr('disabled', 'disabled');
    
    $.post('/calculator/submit', $(this).serialize(), function(data) {
      // Hide calculator form and display formatted results
      $('#calc_contain').hide();
      $('.calcrail').hide();
      $('div.calc_results').html('<h1 class="grid_3 alpha">Results</h1><div class="grid_1 tm_1 fr"><a href="#" class="use_sprite btn_1" rel="reset">Reset</a></div><div class="clear"></div>' + data + '<div class="grid_1 fr"><a href="#" class="use_sprite btn_1 tm_1" rel="reset">Reset</a></div><div class="clear bm_1"></div>');
      
      // Reset buttons should restore the calculator form and clear results
      $('div.calc_results a[rel=reset]').click(function(){
        $('#calc_contain').show();
        $('.calcrail').show();
        $('div.calc_results').empty();
        return false;
      });
      
      // Restore the submit button
      $('input:submit', form).val('Submit').removeAttr('disabled');
      
      // Trigger Facebook feed post if possible (allow 2-sec delay for slow CalcXML results) 
      if ($.isFunction(window.facebook_calculator_use)) {
        window.setTimeout(window.facebook_calculator_use, 2000);
        
        // Unset the function to prevent duplicate prompts during this page load
        window.facebook_calculator_use = null;
      }
    });
    
    return false;
  });
  
  // Activate submit buttons for calculator forms (from their initial "loading" state)
  $('form.calculator input:submit').val('Submit').addClass('autocenter tm_1 bm_1 btn_2 use_sprite').removeAttr('disabled');
  
  // Add class for all checkboxes within a calculator form
  $('form.calculator input:checkbox').addClass('calccheckbox');
});