/*
-----------------------------------------------
Horizon Shutters Ordering
Author: Chad Spencer & Jeremy Boles
----------------------------------------------- */

window.addEvent('domready', function() {
  
  var order = $$('form#ordering');
  if (order.length == 1) {
    order = order[0];
    
    // Lets sort all of the form elements for access later
    var opening_type = order.getElements('input[name=opening-type]');
    var width = $('width');
    var width_plus = $('width-plus');
    var height = $('height');
    var height_plus = $('height-plus');
    var shutter_style = order.getElements('input[name=shutter-style]');
    var installation_method = order.getElements('input[name=installation-method]');
    var inj = $('inj');
    var inh = $('inh');
    var fot = $('fot');
    var how = $('how');
    var fow = $('fow');
    var hot = $('hot');
    var unit_configuration = order.getElements('input[name=unit-configuration]');
    var amounts = order.getElements('div.panel-amount');
    var pattern = $('fold-pattern');
    var patterns = order.getElements('#fold-pattern option').clone();

    // Store this in an Elements object so we can work with all of them at once
    var elements = $$([opening_type, width, width_plus, height,
                       height_plus, shutter_style, installation_method,
                       unit_configuration].flatten());
    
    // Functions for calculating the current width/height
    var full_width = function() { return width.get('value').toFloat() + width_plus.get('value').toFloat(); };
    var full_height = function() { return height.get('value').toFloat() + height_plus.get('value').toFloat(); };
    
    // Display the correct installation methods based on the opening types
    opening_type.addEvent('change', function() {
      // Hide all installation methods
      installation_method.each(function(m) { m.getParent('label').setStyle('display', 'none'); });
      
      // Create a list of elements to show
      var o_types = $$([inj, inh]);
      // Figure out which opening type is selected
      var selected = opening_type.filter(function(c) { return c.get('checked'); })[0].get('value');
      
      // Based on the opening, figure out which installation method to show
      if (selected == 300) {
        o_types.combine([fow, how]);
      } else if (selected == 400) {
        o_types.combine([fot, hot]);
      } else if (selected == 500) {
        o_types.combine([fow, how]);
      } else if (selected == 600) {
        o_types.combine([fot, hot]);
      }

      o_types.each(function(e) { e.getParent('label').setStyle('display', 'block'); });
    });
    
    // Store all the information about the unit-config elements for easy access
    unit_configuration.parsed = $H();
    unit_configuration.each(function(c) {
      // Storing their parents
      unit_configuration.parsed.set(c.get('value'), $H({ 'parent' : c.getParent() }));
    });
        
    // Show the appropriate fields
    elements.addEvent('change', function() {
      var width = full_width();
      var height = full_height();
      
      // Show the appropriate link for the finishes or hardware
      var style = shutter_style.filter('[checked]');
      if (style.length > 0) {
        var finish_link = $('finish-link');
        var hardware_link = $('hardware-link');
        if (style[0].get('value')[0] == 'T') {
          finish_link.set('href', '/traditional-shutters/finishes');
          hardware_link.set('href', '/traditional-shutters/finishes#hardware');
        } else {
          finish_link.set('href', '/plantation-shutters/finishes');
          hardware_link.set('href', '/plantation-shutters/finishes#hardware');
        }
      }
      
      unit_configuration.parsed.each(function(el) {
        el.parent.setStyle('display', 'none');
      });
      
      
      // Show the right options
      var style = shutter_style.filter('[checked]');
      if (style.length > 0) {
        var crap = $('crappy-alert');
        if (crap) { crap.destroy(); }
        if (style[0].get('value')[0] == 'T') {
          // Big mess of if statements
          if (width >=  7 && width < 14 && height < 40) {
            unit_configuration.parsed['1 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 single divider'].parent.setStyle('display', 'block');
          } else if (width >=  7 && width < 14 && height >= 40) {
            unit_configuration.parsed['1 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 14 && width < 16 && height < 40) {
            unit_configuration.parsed['1 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 16 &&  width < 21 && height >= 40) {
            unit_configuration.parsed['2 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 16 && width < 21 && height < 40) {
            unit_configuration.parsed['2 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 16 && width < 21 && height >= 40) {
            unit_configuration.parsed['2 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 21 && width < 28 && height < 40) {
            unit_configuration.parsed['2 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single divider'].parent.setStyle('display', 'block');       
            unit_configuration.parsed['3 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 21 && width < 28 && height >= 40) {
            unit_configuration.parsed['2 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 28 && width < 32 && height < 40) {
            unit_configuration.parsed['2 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single divider'].parent.setStyle('display', 'block');       
            unit_configuration.parsed['3 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 28 && width < 32 && height >= 40) {
            unit_configuration.parsed['2 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 32 && width < 42 && height < 40) {
            unit_configuration.parsed['3 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 32 && width < 42 && height >= 40) {
            unit_configuration.parsed['3 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 42 && width < 48 && height < 40) {
            unit_configuration.parsed['3 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 42 && width < 48 && height >= 40) {
            unit_configuration.parsed['3 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 48 && width < 64 && height < 40) {
            unit_configuration.parsed['4 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 48 && width < 64 && height >= 40) {
            unit_configuration.parsed['4 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 64 && width < 96 && height < 40) {
            unit_configuration.parsed['6 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 64 && width < 96 && height >= 40) {
            unit_configuration.parsed['6 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 single divider'].parent.setStyle('display', 'block');
          } else if(width >= 96) {
            var el = new Element('div', { 'html' : '<div class="alert" id="crappy-alert"><p>Your window is larger than standard size. Please call 888-399-4947 for to place your order.</p></div>'});
            el.getChildren()[0].inject($$('fieldset.shutter-style')[0], 'before');
          }
        } else {
          if (width >=  7 && width < 16 && height < 76) {
            unit_configuration.parsed['1 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 single divider'].parent.setStyle('display', 'block');
          } else if (width >=  7 && width < 16 && height >= 76) {
            unit_configuration.parsed['1 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 16 && width < 24 && height < 76) {
            unit_configuration.parsed['1 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 16 && width < 24 && height >= 76) {
            unit_configuration.parsed['1 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 24 && width < 32 && height < 76) {
            unit_configuration.parsed['1 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 24 && width < 32 && height >= 76) {
            unit_configuration.parsed['1 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 32 && width < 36 && height < 76) {
            unit_configuration.parsed['1 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 32 && width < 36 && height >= 76) {
            unit_configuration.parsed['1 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['1 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 36 && width < 48 && height < 76) {
            unit_configuration.parsed['2 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 36 && width < 48 && height >= 76) {
            unit_configuration.parsed['2 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 48 && width < 72 && height < 76) {
            unit_configuration.parsed['2 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 48 && width < 72 && height >= 76) {
            unit_configuration.parsed['2 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['2 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 64 && width < 108 && height < 76) {
            unit_configuration.parsed['3 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 64 && width < 108 && height >= 76) {
            unit_configuration.parsed['3 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['3 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 108 && width < 144 && height < 76) {
            unit_configuration.parsed['4 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 full'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 single'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 108 && width < 144 && height >= 76) {
            unit_configuration.parsed['4 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['4 single divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 divider'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 double'].parent.setStyle('display', 'block');
            unit_configuration.parsed['6 single divider'].parent.setStyle('display', 'block');
          } else if (width >= 144) {
            var el = new Element('div', { 'html' : '<div class="alert" id="crappy-alert"><p>Your window is larger than standard size. Please call 888-399-4947 for to place your order.</p></div>'});
            el.getChildren()[0].inject($$('fieldset.shutter-style')[0], 'before');
          }
        }
      }

      // We're not supposed to show cafe types if it FOW or FOT installation
      var method = installation_method.filter('[checked]');
      if (method.length == 1)
      {
        method = method[0].get('value');
        if (method == 'FOW' || method == 'FOT')
        {
          unit_configuration.parsed['1 single'].parent.setStyle('display', 'none');
          unit_configuration.parsed['1 single divider'].parent.setStyle('display', 'none');
          unit_configuration.parsed['2 single'].parent.setStyle('display', 'none');
          unit_configuration.parsed['2 single divider'].parent.setStyle('display', 'none');
          unit_configuration.parsed['3 single'].parent.setStyle('display', 'none');
          unit_configuration.parsed['3 single divider'].parent.setStyle('display', 'none');
          unit_configuration.parsed['4 single'].parent.setStyle('display', 'none');
          unit_configuration.parsed['4 single divider'].parent.setStyle('display', 'none');
          unit_configuration.parsed['6 single'].parent.setStyle('display', 'none');
          unit_configuration.parsed['6 single divider'].parent.setStyle('display', 'none');
        }
      }

      pattern.empty();
			
			// Figure out how many panels are selected
			var uc = unit_configuration.filter(function(c) { return c.get('checked'); });
			if (uc.length == 1) {
			  uc = uc[0].get('value');
			} else {
			  uc = '';
			}
			
			// Show the division point, if a divider rail style is selected
			var division_point_fields = $('division-point-fields');
			if (uc.contains('divider') || uc.contains('double')) {
			  division_point_fields.setStyle('display', 'block');
			  var select = division_point_fields.getElements('select')[0];
			  
			  var max = Math.floor(full_height()) - 12;
			  var to_inject = '<option></option>';
			  for (var i = 12; i <= max; i++)
			  {
			    to_inject += '<option value="' + i + '">' + i + '"</option>';
			  }
			  select.set('html', to_inject);
			} else {
			  division_point_fields.setStyle('display', 'none');
			}
			
			// Show the appropriate fold patterns
      patterns.each(function(p) {
        if (
          (uc.test('1') && p.get('value') == '1r') ||
          (uc.test('1') && p.get('value') == '1l') ||
          (uc.test('2') && p.get('value') == '2r') ||
          (uc.test('2') && p.get('value') == '2l') ||
          (uc.test('2') && p.get('value') == '1l/1r') ||
          (uc.test('3') && p.get('value') == '3r') ||
          (uc.test('3') && p.get('value') == '3l') ||
          (uc.test('3') && p.get('value') == '2l/1r') ||
          (uc.test('3') && p.get('value') == '1l/2r') ||
          (uc.test('4') && p.get('value') == '4l') ||
          (uc.test('4') && p.get('value') == '4r') ||
          (uc.test('4') && p.get('value') == '2l/2r') ||
          (uc.test('6') && p.get('value') == '3l/3r')
        ) {
          p.store('include', true);
        } else {
          p.store('include', false);
        }
      });
      
      // Inject the options
      var to_inject = patterns.filter(function(p){
        return p.retrieve('include', false);
      }).map(function(p) {
        if (p.outerHTML) {
          return p.outerHTML;
        } else {
          var element = new Element('div');
          p.clone().inject(element)
          // (function() { (this).dispose()}).delay(5000, element);
          return element.innerHTML;
        }
        return p.outerHTML;
      }).join('');
      
      to_inject = '<option></option>' + to_inject;
      pattern.set('html', to_inject);
      
      // Show only the amount groups that have visible fields
      amounts.each(function(a) {
        var groups = a.getElements('label').filter(function(l) {
          return (l.getStyle('display') == 'block');
        });
        
        if (groups.length > 0 ) {
          a.setStyle('display', 'block');
        } else {
          a.setStyle('display', 'none');
        }
      });
      
    });
    
    $$('input[name=unit-configuration]').addEvent('mouseup', function(e) {
      (function() { this.blur() }).delay(500, this);
    });
    
    $('order-submit-button').addEvent('click', function(e) {

      opening_type_res = $$(opening_type).filter('[checked]').length;
      shutter_style_res = $$(shutter_style).filter('[checked]').length;
      installation_method_res = $$(installation_method).filter('[checked]').length;
      unit_configuration_res = $$(unit_configuration).filter('[checked]').length;
      fold_pattern_res = $(pattern).getChildren('option[selected]').filter(function(i) { return (i.get('value') != ''); }).length;
      finish_color_res = $('finish-color').getChildren('option[selected]').filter(function(i) { return (i.get('value') != ''); }).length;
      hardware_finish_res = $('hardware-finish').getChildren('option[selected]').filter(function(i) { return (i.get('value') != ''); }).length;
      quantity_res = $('quantity').get('value');
      location_field = $('location').get('value');
      
      var error = $('validation-error');
      if ($type(error) == 'element') { error.destroy(); }
      
      if (opening_type_res && full_width() && full_height() && shutter_style_res &&
          installation_method_res && unit_configuration_res && fold_pattern_res &&
          finish_color_res && hardware_finish_res && quantity_res && location_field) {
          order.submit();
      } else {
        e.preventDefault();
        
        var button = $('order-submit-button');
        
        var error = new Element('div', {
          'id' : 'validation-error',
          'html' : '<p>All entries are required. Please complete fields with missing information.</p>', 
          'class' : 'alert'
        });
        error.setStyles({
          'margin-bottom' : '20px',
          'width' :'589px'
        });
        
        error.inject(button, 'before');
      }
    });
  }
  
  
  var payment_method = $('payment-method-field');
  if (payment_method)
  {
    var card = $('credit-card-fields');
    var card_elements = card.getElements('input, select');
    var check = $('check-fields');
    
    payment_method.addEvent('change', function() {
      if (payment_method.get('value') == 'Check') {
        card_elements.removeClass('required');
        check.setStyle('display', 'block');
        card.setStyle('display', 'none');
      } else {
        card_elements.addClass('required');
        card.setStyle('display', 'block');
        check.setStyle('display', 'none');
      }
    });
  }
  
  var forms = $$('#registration-form, #samples-form');
  if (forms)
  {
   forms.each(function(form) {
     var myFormValidator = new FormValidator(form, {
       onElementFail : function(element, failures)
       {
         var message = '';
         if (failures.contains('required'))
         {
           message += 'This field is required';
         }
         else if (failures.contains('validate-email'))
         {
           message += 'Please provide a valid email address';
         }
         else if (failures.contains('validate-digits'))
         {
           message += 'Please provide a valid phone number';
         }
         else if (failures.contains('validate-match'))
         {
           message += 'Password fields do not match';
         }
         
         if (!element.retrieve('error-message'))
         {
           var label = new Element('span', { 'class' : 'error', 'text' : message });
           element.store('error-message', label);
           label.inject(element, 'after');
         }
         else
         {
           var label = element.retrieve('error-message');
           label.set('text', message);
         }

         element.retrieve('error-message').setStyle('display', 'block');
       },
       onElementPass : function(element)
       {
         var label = element.retrieve('error-message');
         if (label)
         {
           label.setStyle('display', 'none');
         }
       }
     });
     
   }); 
  }
});