Event.addBehavior.reassignAfterAjax = true;
Event.addBehavior({
  // Turn all links and form with class=remote to remote links/forms
  // (called using ajax).
  ".remote": Remote,

  // Remote forms with file upload.
  "form.remote_multipart": AjaxUpload,

  // Submit form when any of it's element changes.
  "form.autosubmit": function() {
    var form = this;

    form.getElements().each(function(element) {
      element.observe("change", form.submit.bind(form));
    });
  },

  // Remote forms that submit when any of their elements changes.
  "form.remote_autosubmit": function() {
    var form = this;

    form.getElements().each(function(element) {
      element.observe("change", form.request.bind(form, {}));
    });
  },

  '.chart_controls': ChartControls,

  'form#provider-signup input#signup_account_org_name': function() {
    var subdomainField = this.up('form').down('#signup_account_subdomain');
    var nameField = this;

    var update = function() {
      new Ajax.Request('/strings/subdomainize', {
        method: 'get',
        parameters: {name: nameField.value}, 
        onSuccess: function(transport) {
          subdomainField.value = transport.responseText;
        }
      });
    };
   
    new Form.Element.Observer(nameField, 0.5, update);

    if (subdomainField.value.blank()) {
      update();
    }
  },

	"forum#new_pricing_rule:submit" : function(e) {
		checkRule(e.element());
	},
	
  'a.popup_widget_trigger': PopupLink({boxClass: 'popup_widget', placement: 'center'}),
  'a.assets_widget_trigger': PopupLink({boxClass: 'assets_widget'}),
  'a.plans_widget_trigger': PopupLink({boxClass: 'plans_widget', cache: false}),

  'a.wiki_preview_trigger': PopupLink({
    boxClass: 'wiki_preview',
    placement: 'center',
    method: 'post',
    cache: false,
    
    onStart: function(behaviour) {
      // Send content of form before popping up.
      var form = behaviour.element.up("form");
      var elements = form.getElements().reject(function(element) {
        return element.name == "_method";
      });

      behaviour.parameters = Form.serializeElements(elements);
    },

    onComplete: function(behaviour) {
      // Apply syntax highlighting.
      behaviour.content.getElementsBySelector("pre code").each(function(element) {
        hljs.highlightBlock(element, hljs.tabReplace);
      });
    }
  }),

  '.metric_slot_close_button:click': function() {
    $$('.metric_slot, .plans_widget').each(Element.remove);
  },

  '.stats_close_button:click': function() {
    this.up("div").update('');
  },

  'input.watch_infinity:change': function(event) {
	  if (event.element().value == '') {
  		$('infinity_image').show();
    }	else {
  		$('infinity_image').hide();
    }
  },

  'img.helpButton:mouseover': function(e) {
    if(e.element().src.search(/Passive|Hove/) != -1) {
      e.element().src = '/images/v2/questionHover.png'
    }
  },
  'img.helpButton:mouseout': function(e) {
    if(e.element().src.search(/Passive|Hove/) != -1) {
      e.element().src = '/images/v2/questionPassive.png'
    }
  },
  '#view_panel:click': Event.delegate({
    'img.helpButton': function(e) {
      Help.toggleHelp(e.element());
      return false;
    }
  }),
  'img.helpButton:click': function(e) {
    Help.toggleHelp(e.element());
    return false;
  },

	'a#switchToggle:click':function(e) {
		var region = $(e.element().title);
		var alternative = $(e.element().title + "-alternative");
		toggleDBValue(e.element().title, region.visible())
		
		region.toggle();
		if(alternative)
			alternative.toggle();
	},

	'select#rollback-selectbox:change':function(e){
		var el = e.element();
		var version = el.options[el.selectedIndex].value;
		var loc = location.pathname + "?v=" + version
		location.href = loc
	},

	'a#dashboardToggle:click':function(e) {
		var checklist = $('checklist')
		var toggle = $('dashboardToggle');
		if(checklist.visible()) {
			toggle.innerHTML = 'show &raquo;';
			toggleValue('1');
		}
		else {
			toggle.innerHTML = 'hide &raquo;';
			toggleValue('0');
		}

		$('checklist').toggle();
	},

  '#domain_field input[type=text]:change': function(event) {
    event.element().up('table').select('tr').each(function(row) {
      var field = row.down('input[type=text]');

      if (field && field != event.element()) {
        field.value = '';
      }
    });

    event.element().up('tr').down('input[type=radio]').checked = true;
  },

  '#domain_field input[type=radio]:change': function(event) {
    var field = event.element().up('tr').down('input[type=text]');
    if (field) {
      field.focus();
    }
  },

  '#domain_field #account_domain_type_none:change': function(event) {
    event.element().up('table').select('tr').each(function(row) {
      var field = row.down('input[type=text]');
      if (field) {
        field.value = '';
      }
    });
  },


  // Behaviour now inline solutions/solutions/plans for speed
  // 'a.currency:click': function(event) {
  //   var currency = this.classNames()
  //                      .find(function(name) { return name.startsWith("currency_") })
  //                      .sub(/^currency_/, '');
  // 
  //   $$("span.price").each(Element.hide);
  //   $$("span.price_" + currency).each(Element.show);
  // 
  //   if (!this.hasClassName("active")) {
  //     $$("a.currency").each(function(element) { element.toggleClassName("active") });
  //   }
  // 
  //   event.stop();
  // }

  'a.toggle_credit_card_details_form:click': function(event) {
    $("credit_card_details_form").toggle();
    $("credit_card_partial_details").toggle();

    event.stop();
  },

  'select#account_payment_gateway_type:change': function(event) {
    $('supported_cardtypes').show();
    $$(".payment_gateway_options").each(Element.hide);
    $$(".payment_gateway_options input").each(Form.Element.disable);

    var fields = $("payment_gateway_" + this.value);

    fields.show();
    fields.select("input").each(Form.Element.enable);
  }

});
