     .done -> app.callers[selname](selname) if typeof app.callers[selname] is 'function'
 
   # get element value or attrible
-  getValue = (elem, name) ->
+  getValue = app.getValue = (elem, name) ->
     switch name.toString().toLowerCase()
       when 'text' then elem.text()
       when 'html' then elem.html()

      else elem.attr name, value

  # data model
  model = app.model = (models, selname) ->
    # getting data
    get = ->
      data = {}
      _get = (sets, root) ->
        sets._selname = selname
        switch sets.base
          when 'list' then app.model.list.get sets, root
          else app.model.base.get sets, root
      for name, sets of models
        if (typeof sets isnt 'object') or $.isArray sets
          data = _get models, $('html')
          break
        data[name] = _get sets, $('html')
      JSON.stringify data
    # setting data
    set = (data) ->
      _set = (sets, data, root) ->
        sets._selname = selname
        switch sets.base
          when 'list' then app.model.list.set sets, data, root
          else app.model.base.set sets, data, root
      for name, sets of models
        if (typeof sets isnt 'object') or $.isArray sets
          _set models, data, $('html')
          break
        _set sets, data[name], $('html')
    # post event
    $.post "#{location.pathname}?_id=event&_key=data&selector=#{selname}",
      get(), set, 'json'

  # base data model
  model.base =
    get: (sets, root) ->
      data = {}
      sets = sets.entry if sets.entry
      for id, attrs of sets


    get: (sets) ->
      data = {}
      actived = models.list.actived sets
      switch sets.method.toLowerCase()
        when 'remove'
          data = models.base.get sets.entry, actived
          data._id = actived.attr 'id'
        when 'active'
          target = actived
          target = models.list.target sets unless sets.active.index? and actived.length > 0
          data = models.base.get sets.entry, target
          data._id = target.attr 'id'
      return data

    set: (sets, data) ->
      actived = models.list.actived sets
      method = sets.method.toLowerCase()
      switch method
        when 'add', 'insert'
