(function() {
  var Contact, Rollovers, Tabs, init, regexes;
  Tabs = (function() {
    var onAddressChange, onTabClick, self;
    function Tabs() {}
    self = Tabs;
    onTabClick = function() {
      var path;
      path = $(this).data('url');
      return $.address.value(path);
    };
    onAddressChange = function(e) {
      var path;
      path = e.pathNames[0] === void 0 ? 'default' : e.pathNames[0];
      self.$tabs.find('.selected').removeClass('selected');
      self.$tabs.find("#" + path + "_tab").addClass('selected');
      $('.current_tab_content').removeClass('current_tab_content');
      return $("#" + path + "_content").addClass('current_tab_content');
    };
    self.init = function(tabs) {
      self.$tabs = tabs;
      $.address.change(onAddressChange);
      return self.$tabs.delegate('li', 'click', onTabClick);
    };
    return Tabs;
  })();
  regexes = {
    'text': /./,
    'email': /^\w+(?:\.\w+)*@\w+(?:\.\w+)+$/
  };
  Contact = (function() {
    var addErrors, onPost, onSubmit, removeError, self, submitForm, validate;
    function Contact() {}
    self = Contact;
    self.inputValues = {};
    onPost = function(status) {
      if (status === 'sent') {
        self.$form.hide(200);
        return $('#thank_you').fadeIn();
      }
    };
    submitForm = function() {
      return $.post('./send.php', self.inputValues, onPost);
    };
    addErrors = function() {
      var offset;
      offset = self.$form.find('.error:first').offset();
      if ($(window).scrollTop() > offset.top - 40) {
        return $("html, body").animate({
          scrollTop: offset.top - 40
        });
      }
    };
    validate = function() {
      var $fields, isValid;
      isValid = true;
      $fields = self.$form.find('.field');
      $fields.each(function() {
        var $this, check, value;
        $this = $(this);
        value = $this.val();
        self.inputValues[this.id] = value;
        check = $this.attr('type') || 'text';
        if (!regexes[check].test(value)) {
          isValid = false;
        }
        if (!regexes[check].test(value)) {
          return $this.addClass('error');
        }
      });
      return isValid;
    };
    onSubmit = function(e) {
      e.preventDefault();
      if (validate()) {
        return submitForm();
      } else {
        return addErrors();
      }
    };
    removeError = function() {
      return $(this).removeClass('error');
    };
    self.init = function(form) {
      self.$form = form;
      self.$form.delegate('.submit', 'click', onSubmit);
      return self.$form.delegate('.field', 'focusin', removeError);
    };
    return Contact;
  })();
  Rollovers = (function() {
    var menuOut, menuOver, onOut, onOver, self;
    function Rollovers() {}
    self = Rollovers;
    menuOver = function() {
      if (!$(this).parent().hasClass('selected')) {
        return $(this).stop(true, true).animate({
          backgroundColor: '#e9e9e9'
        }, 200);
      }
    };
    menuOut = function() {
      if (!$(this).parent().hasClass('selected')) {
        return $(this).stop(true, true).animate({
          backgroundColor: '#F2F2F2'
        }, 200);
      }
    };
    onOver = function() {
      var $this;
      $this = $(this);
      $this.find('.rollover').stop(true, true).animate({
        'opacity': 1
      }, 200);
      return $this.find('.rollout').stop(true, true).animate({
        'opacity': 0
      }, 200);
    };
    onOut = function() {
      var $this;
      $this = $(this);
      $this.find('.rollover').stop(true, true).animate({
        'opacity': 0
      }, 200);
      return $this.find('.rollout').stop(true, true).animate({
        'opacity': 1
      }, 200);
    };
    self.init = function() {
      $('a.js_rollover').live('mouseenter', onOver).live('mouseleave', onOut);
      return $('#nav li a').live('mouseenter', menuOver).live('mouseleave', menuOut);
    };
    return Rollovers;
  })();
  init = function() {
    var $form, $tabs, isIE;
    $('body').addClass('ready');
    $tabs = $('#tabs');
    $form = $('#form');
    isIE = $('.ie7, .ie8').length > 0;
    if ($tabs.length > 0) {
      Tabs.init($tabs);
    }
    if ($form.length > 0) {
      Contact.init($form);
    }
    if (!Modernizr.csstransitions && !isIE) {
      return Rollovers.init();
    }
  };
  $(init);
}).call(this);

