             else
                 null
 
-        issueNotice: (status, message, issuer, speed) ->
-            that = $ @
-            notices = $ "p.form-notice"
-            notice = $ "p.form-#{status}-notice:contains(#{message})"
-            noticesLength = notices.length
-            console.log noticesLength
-            
-            if notice.length is 0
+        issueNotice: (validate, speed) ->
+            that = $ @
+            lengthNotice = that.nextUntil ':input', "p.form-length-notice"
+            notice = that.nextUntil ':input', "p.form-#{validate.status}-notice:contains(#{validate.message})"
+
+            addNotice = (item) ->
+                item.hide().insertAfter(that).slideDown speed
+
+                if that.css('float') isnt 'none'
+                    notices = that.nextUntil ':input', "p.form-notice"
+                    noticesLength = notices.length
+                    console.log noticesLength
+                    that.parent().css 'position', 'relative'
+                    elemLeft = parseInt that.position().left, 10
+                    elemTop = parseInt that.position().top, 10
+                    elemHeight = parseInt that.css('height'), 10
+
+                    if noticesLength is 1
+                        that.css 'margin-bottom': '40px'
+                        styles =
+                            'position': 'absolute'
+                            'left': elemLeft + 'px'
+                            'top': elemTop + elemHeight + 15 + 'px'
+                    else
+                        that.css 'margin-bottom': 40 + (15 * noticesLength) + 'px'
+                        lastNotice = notices.last()
+                        noticeTop = parseInt lastNotice.position().top, 10
+                        noticeHeight = parseInt lastNotice.css('height'), 10
+                        styles =
+                            'position': 'absolute'
+                            'left': elemLeft + 'px'
+                            'top': noticeTop + noticeHeight + 15 + 'px'
+
+                    notice.css styles
+            
+            if validate.status is 'length' and lengthNotice.length is 0
                 notice = $ '<p></p>',
-                    text: message,
-                    class: "form-#{status}-notice form-notice"
-                    'data-issuer': issuer
+                    text: validate.message,
+                    class: "form-#{validate.status}-notice form-notice"
+                    'data-issuer': validate.issuer
                 
-                notice.hide().insertAfter(that).slideDown speed
-
-                # if that.css('float') isnt 'none'
-
-                    # notice.css styles
-
-        positionNotice: (notice) ->
-            that.parent().css 'position', 'relative'
-            elemLeft = parseInt that.position().left, 10
-            elemTop = parseInt that.position().top, 10
-            elemHeight = parseInt that.css('height'), 10
-
-            if noticesLength is 0
-                that.css 'margin-bottom': '40px'
-                return styles =
-                    'position': 'absolute'
-                    'left': elemLeft + 'px'
-                    'top': elemTop + elemHeight + 10 + 'px'
-            else
-                that.css 'margin-bottom': 40 + (15 * noticesLength) + 'px'
-                lastNotice = notices.last()
-                noticeTop = parseInt lastNotice.position().top, 10
-                noticeHeight = parseInt lastNotice.css('height'), 10
-                return styles =
-                    'position': 'absolute'
-                    'left': elemLeft + 'px'
-                    'top': noticeTop + noticeHeight + 10 + 'px'
+                addNotice notice
+
+            else if validate.status is 'length'
+                lengthNotice.text validate.message
+
+            else if notice.length is 0
+                notice = $ '<p></p>',
+                    text: validate.message,
+                    class: "form-#{validate.status}-notice form-notice"
+                    'data-issuer': validate.issuer
+                
+                addNotice notice
 
         removeNotice: (issuer, speed) ->
-            notice = $ "p[data-issuer='#{issuer}']"
+            notice = $(@).nextUntil ':input', "p[data-issuer='#{issuer}']"
 
             if notice.length isnt 0
                 notice.slideUp speed, ->

                if validate?
                    validateField.call @, value, validate

        trackLength: ->
            that = $ @
            value = $.trim that.val()
            length = value.length
            lengthNotice = that.nextUntil ':input', '.form-length-notice'
            notices = $ "p.form-notice"
            noticesLength = notices.length
            console.log noticesLength
            
            createMessage = (length) ->
                if length is 1 then "#{length} character" else "#{length} characters"
            
            if length is 0
                lengthNotice.remove()
            else if lengthNotice.length is 0
                message = createMessage length
                lengthNotice = $ '<p></p>',
                    text: message
                    class: 'form-length-notice form-notice'
                
                lengthNotice.hide().insertAfter(that).show()

                # if that.css('float') isnt 'none'

                    # lengthNotice.css styles
            else
                message = createMessage length
                lengthNotice.text message

        getValue: ->
            value = $.trim $(@).val()


            validateField = (value, validate) ->
                if validate.message?
                    self.issueNotice.call @, validate, self.speed
                else
                    self.removeNotice.call @, validate.issuer, self.speed
                self.removeValidationClass.call @, validate.status
