module FormHelper
	def self.included(base)
		ActionView::Helpers::FormBuilder.instance_eval do
			include FormBuilderMethods
		end
	end

	module FormBuilderMethods
		def monetary_field(field, options = {})
			scale = options[:scale].present? ? (options[:scale]).to_i : 2
			classes = (options[:class].split(' ') - ['form-control']).join(' ') if options[:class].present?

			zeros = '0' * scale
			noves = '9' * scale

			classes = { class: "form-control #{classes}" }

			decimal_places = {
				'm-dec': scale,
				'a-pad': 2,
				'v-min': '0.' + "#{zeros}",
				'v-max': '9999999999.' + "#{noves}"
			}

			numeric_config = {
				placeholder: 'R$ 0,00',
				data: { autonumeric: true, 'a-sep': '.', 'a-dec':',', 'a-sign': 'R$ ' }.merge(decimal_places)
			}

			text_field field, options.reverse_merge(numeric_config).merge(classes)
		end

		def qtd_field(field, options = {})
			scale = options[:scale].present? ? (options[:scale]).to_i : 2

			zeros = "0" * scale
			noves = "9" * scale

			decimal_places = {
				'm-dec': scale,
				'a-pad': 2,
				'v-min': '0.' + "#{zeros}",
				'v-max': '9999999999.' + "#{noves}"
			}

			numeric_config = {
				placeholder: '0,00',
				min: 0,
				onclick: "this.select();",
				class: "form-control quantidade",
				data: { autonumeric: true, 'a-sep': '.', 'a-dec': ',' }.merge(decimal_places)
			}
			text_field field, options.reverse_merge(numeric_config)
		end

		def qtd_itens_field(field, options = {})
			scale = options[:scale].present? ? (options[:scale]).to_i : 4

			zeros = "0" * scale
			noves = "9" * scale

			decimal_places = {
				'm-dec': scale,
				'a-pad': 4,
				'v-min': '0.' + "#{zeros}",
				'v-max': '9999999999.' + "#{noves}"
			}

			numeric_config = {
				placeholder: '0,0000',
				min: 0,
				onclick: "this.select();",
				class: "form-control quantidade",
				data: { autonumeric: true, 'a-sep': '.', 'a-dec': ',' }.merge(decimal_places)
			}
			text_field field, options.reverse_merge(numeric_config)
		end

		def calendar_field field, options = {}
			@template.content_tag(:div, class: "input-group") do
				content = text_field field, options.reverse_merge({ placeholder: "Ex: 01/01/#{Date.today.year}", class: "form-control date-picker", autocomplete: "off" })
				content += @template.content_tag(:span, class: "input-group-addon") do
					@template.content_tag(:span, class: "icone-calendario") do
					end
				end
				content
			end
		end
	end
end
