                         number: $credit_card_number.val(),
                         exp_month: $credit_card_expiration_month.val(),
                         exp_year: $credit_card_expiration_year.val()
-                    }, stripeResponseHandler))
+                    }, stripeResponseHandler)
+                else
+                    scrollTo(($ @).find('.unhappy').offset().top)
+
 
 render_nested_product_attribute_input = ($el) ->
     attribute = $el.data('attribute')


        ($ "#order_form")
            .isHappy(order_form_validation_rules)
            .submit((e) ->
                e.preventDefault()

                # this is really hacky, but it's all happy.js gives us to work with

    $ -> ($ '.mobile-form')
        .isHappy(store_form_validation_rules)
        .submit((e) ->
            if ($ @).find('.unhappy').length
                e.preventDefault()
                scrollTo(($ @).find('.unhappy').offset().top))

if gon.page is 'orders_new' or gon.page is 'orders_edit' or gon.page is 'orders_create'
    $ ->
