     formId = new Date().getTime() + Math.floor( Math.random() * 99999 )
     formId.toString().substr formId.toString().length-9, 9
 
+  @findForm: (form) ->
+    # check jquery event
+    if form && form.target
+      form = form.target
+
+    # create jquery object if not already exists
+    if form instanceof jQuery
+      # do nothing
+    else
+      form = $(form)
+
+    #console.log('FF', form)
+    # get form
+    if form.is('form') is true
+      #console.log('direct from')
+      return form
+    else if form.find('form').is('form') is true
+      #console.log('child from')
+      return form.find('form')
+    else if $(form).parents('form').is('form') is true
+      #console.log('parent from')
+      return form.parents('form')
+    # use current content as form if form isn't already finished
+    else if !@finishForm
+      #console.log('finishForm')
+      return form
+    else
+      App.Log.error 'ControllerForm', 'no form found!', form
+    form
+
   @disable: (form) ->
-    App.Log.notice 'ControllerForm', 'disable...', $(form.target).parent()
-    $(form.target).parent().find('button').attr('disabled', true)
-    $(form.target).parent().find('[type="submit"]').attr('disabled', true)
-    $(form.target).parent().find('[type="reset"]').attr('disabled', true)
-
+    lookupForm = @findForm(form)
+
+    if lookupForm
+      App.Log.notice 'ControllerForm', 'disable...', lookupForm
+      lookupForm.find('button').attr('disabled', true)
+      lookupForm.find('[type="submit"]').attr('disabled', true)
+      lookupForm.find('[type="reset"]').attr('disabled', true)
+    else
+      App.Log.notice 'ControllerForm', 'disable item...', form
+      form.attr('disabled', true)
 
   @enable: (form) ->
-    App.Log.notice 'ControllerForm', 'enable...', $(form.target).parent()
-    $(form.target).parent().find('button').attr('disabled', false)
-    $(form.target).parent().find('[type="submit"]').attr('disabled', false)
-    $(form.target).parent().find('[type="reset"]').attr('disabled', false)
+
+    lookupForm = @findForm(form)
+
+    if lookupForm
+      App.Log.notice 'ControllerForm', 'enable...', lookupForm
+      lookupForm.find('button').attr('disabled', false)
+      lookupForm.find('[type="submit"]').attr('disabled', false)
+      lookupForm.find('[type="reset"]').attr('disabled', false)
+    else
+      App.Log.notice 'ControllerForm', 'enable item...', form
+      form.attr('disabled', false)
 
   @validate: (data) ->
 
+    lookupForm = @findForm(data.form)
+
     # remove all errors
-    $(data.form).parents().find('.has-error').removeClass('has-error')
-    $(data.form).parents().find('.help-inline').html('')
+    lookupForm.find('.has-error').removeClass('has-error')
+    lookupForm.find('.help-inline').html('')
 
     # show new errors
     for key, msg of data.errors
-      $(data.form).parents('form').find('[name="' + key + '"]').parents('div .form-group').addClass('has-error')
-      $(data.form).parents('form').find('[name="' + key + '"]').parent().find('.help-inline').html(msg)
+      lookupForm.find('[name="' + key + '"]').parents('div .form-group').addClass('has-error')
+      lookupForm.find('[name="' + key + '"]').parent().find('.help-inline').html(msg)
 
     # set autofocus
-    $(data.form).parents('form').find('.has-error').find('input, textarea').first().focus()
+    lookupForm.find('.has-error').find('input, textarea').first().focus()

    App.Log.debug 'ControllerForm', 'formGen', @model.configure_attributes

    fieldset = $('<fieldset></fieldset>')

    # collect form attributes
    @attributes = []

  @params: (form) ->
    param = {}

    lookupForm = @findForm(form)

    # get form elements
    array = lookupForm.serializeArray()

    # 1:1 and boolean params
    for key in array

      # check if item is-hidden and should not be used
      if lookupForm.find('[name="' + key.name + '"]').hasClass('is-hidden')
        continue

      # collect all other params
