 					.attr('data-value', value)
 					.attr('value', valueSanitized)
 					.attr('specification', valueSanitized)
-					.attr('id', "#{@productId}_#{dimensionSanitized}_#{i}")
-					.addClass("input-dimension-#{dimensionSanitized}")
+					.attr('id', "#{selector.productId}_#{dimensionSanitized}_#{i}")
+					.addClass(@generateItemDimensionClass(dimension))
 					.addClass("sku-selector")
 					.addClass("skuespec_#{valueSanitized}")
 				skuList.find('label').text(value)
-					.attr('for', "#{@productId}_#{dimensionSanitized}_#{i}")
+					.attr('for', "#{selector.productId}_#{dimensionSanitized}_#{i}")
 					.addClass("dimension-#{dimensionSanitized}")
 					.addClass("espec_#{dimensionIndex}")
 					.addClass("skuespec_#{valueSanitized}")
 
 				skuList.appendTo(dimensionList.find('.skuList'))
 
-			dimensionList.appendTo(context.find('.dimensionLists'))
-
-	disableInvalidInputs: (context, selectors) =>
-		undefinedDimensions = @findUndefinedDimensions()
-		selectableSkus = @findSelectableSkus()
+			dimensionList.appendTo(@context.find('.dimensionLists'))
+
+	disableInvalidInputs: (selector) =>
+		undefinedDimensions = selector.findUndefinedDimensions()
+		selectableSkus = selector.findSelectableSkus()
 
 		for dimension in undefinedDimensions
 			# Disable all options in this row, add disabled class, remove checked class and matching removeAttr checked
-			selectors.itemDimensionInput(dimension, context)
+			@selectItemDimensionInput(dimension)
 				.addClass('item_unavaliable')
 				.removeClass('checked sku-picked')
 				.attr('disabled', 'disabled')
 				.removeAttr('checked')
-			selectors.itemDimensionLabel(dimension, context)
+			@selectItemDimensionLabel(dimension)
 				.addClass('disabled item_unavaliable')
 				.removeClass('checked sku-picked')
 
 			# Enable all selectable options in this row
-			for value in @uniqueDimensionsMap[dimension]
+			for value in selector.uniqueDimensionsMap[dimension]
 				# Search for the sku dimension value corresponding to this dimension
 				for sku in selectableSkus
 					skuDimensionValue = sku.dimensions[dimension]
 					# If the dimension value matches, enable the button
 					if skuDimensionValue is value
-						selectors.itemDimensionValueInput(dimension, value, context).removeAttr('disabled')
+						@selectItemDimensionValueInput(dimension, value).removeAttr('disabled')
 					# If the dimension value matches and this sku is available, show as selectable
 					if skuDimensionValue is value and sku.available
-						selectors.itemDimensionValueInput(dimension, value, context).removeClass('item_unavaliable')
-						selectors.itemDimensionValueLabel(dimension, value, context).removeClass('disabled item_unavaliable')
+						@selectItemDimensionValueInput(dimension, value).removeClass('item_unavaliable')
+						@selectItemDimensionValueLabel(dimension, value).removeClass('disabled item_unavaliable')
 
 #
 # PLUGIN ENTRY POINT

# Sku Selector elements function.
$.skuSelector = {}


#
# CLASSE
#

# TODO separar em classes menores

		price: (context) -> $('.skuselector-price', context)
		warning: (context) -> $('.skuselector-warning', context)
		warnUnavailable: (context) -> $('.skuselector-warn-unavailable', context)

	# Called when we failed to receive variations.
	skuVariationsFailHandler: ($el, options, reason) ->
