 		options.selectors.itemDimensionInput(dimension, this).change(dimensionChangeHandler)
 
 	if options.warnUnavailable
-		options.selectors.warnUnavailable(this).find('form').submit (e) ->
-			e.preventDefault()
-			options.selectors.warnUnavailable(this).find('#notifymeLoading').show()
-			options.selectors.warnUnavailable(this).find('form').hide()
-			xhr = options.warnUnavailablePost(e.target)
-			xhr.done -> options.selectors.warnUnavailable(this).find('#notifymeSuccess').show()
-			xhr.fail -> options.selectors.warnUnavailable(this).find('#notifymeError').show()
-			xhr.always -> options.selectors.warnUnavailable(this).find('#notifymeLoading').hide()
-			return false
+		options.selectors.warnUnavailable(this).find('form').submit(warnUnavailableSubmitHandler)
 
 	# Select first dimension
 	if options.selectOnOpening or skuSelectorObj.findSelectedSku()
 		selectDimension(options.selectors.itemDimensionInput(dimensions[0], this))
 
+	# Chaining
 	return this
 
 

# UTILITY FUNCTIONS
#

# Sanitizes text: "Caçoá (teste 2)" becomes "cacoateste2"
sanitize = (str = this) ->
	specialChars =  "ąàáäâãåæćęèéëêìíïîłńòóöôõøśùúüûñçżź"
	plain = "aaaaaaaaceeeeeiiiilnoooooosuuuunczz"

		.toLowerCase()
	return sanitized.charAt(0).toUpperCase() + sanitized.slice(1)

# Format currency to brazilian reais: 123455 becomes "1.234,55"
formatCurrency = (value) ->
	if value? and not isNaN value
		return parseFloat(value/100).toFixed(2).replace('.',',').replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1.')
