whole_func_string: function (cls, el, mdf) {
    var display = el.getAttribute('animate-display')
    if (display !== null) {
      el.style.display= dispay
    } else {
      var none = el.getAttribute('animate-display-none')
      if (none === null || none !== 'false') {
        el.style.display= 'block'
      }
    }
    if (isString(cls)) {
      if (isDefine(mdf)) {
        var inverseAnim = animate_direction(cls, mdf)
        if (isDefine(inverseAnim) && classList(el).hasClass(inverseAnim)) {
          var rmClass = {}
          rmClass[inverseAnim] = false
          object_class(rmClass, el)
        }
      }
      var hasToggling = false
      if (classList(el).hasClass(cls)) {
        hasToggling = true
        var rmClass = {}
        rmClass[cls] = false
        object_class(rmClass, el)
      }
      if (isDefine(mdf) && hasToggling) {
        var inverseAnim = animate_direction(cls, mdf)
        if (isDefine(inverseAnim)){
          object_class(inverseAnim, el)
        }
      } else {
        var animate = !classList(el).hasClass('animated') ? ['animated', cls] : cls
        object_class(animate, el)
      }
    }
    if (isArray(cls)) {
      var i = 0
      var size = cls.length
      var iClass
      var animate
      for (i; i < size; i++) {
        if (classList(el).hasClass(cls[i])) {
          var rmClass = {}
          rmClass[cls[i]] = false
          iClass = i
          object_class(rmClass, el)
        }
      }
      if (isDefine(mdf) && mdf === 'toggle') {
        var getClass = isDefine(iClass) && size > 0 && (iClass + 1) < size ?  cls[(iClass + 1)] : cls[0]
        animate = !classList(el).hasClass('animated') ? ['animated', getClass] : getClass
      } else {
        animate = !classList(el).hasClass('animated') ? cls.push('animated') : cls
      }
      object_class(animate, el)
    }
  }
func_code_string: function (cls, el, mdf) {
    var display = el.getAttribute('animate-display')
    if (display !== null) {
      el.style.display= dispay
    } else {
      var none = el.getAttribute('animate-display-none')
      if (none === null || none !== 'false') {
        el.style.display= 'block'
      }
    }
    if (isString(cls)) {
      if (isDefine(mdf)) {
        var inverseAnim = animate_direction(cls, mdf)
        if (isDefine(inverseAnim) && classList(el).hasClass(inverseAnim)) {
          var rmClass = {}
          rmClass[inverseAnim] = false
          object_class(rmClass, el)
        }
      }
      var hasToggling = false
      if (classList(el).hasClass(cls)) {
        hasToggling = true
        var rmClass = {}
        rmClass[cls] = false
        object_class(rmClass, el)
      }
      if (isDefine(mdf) && hasToggling) {
        var inverseAnim = animate_direction(cls, mdf)
        if (isDefine(inverseAnim)){
          object_class(inverseAnim, el)
        }
      } else {
        var animate = !classList(el).hasClass('animated') ? ['animated', cls] : cls
        object_class(animate, el)
      }
    }
    if (isArray(cls)) {
      var i = 0
      var size = cls.length
      var iClass
      var animate
      for (i; i < size; i++) {
        if (classList(el).hasClass(cls[i])) {
          var rmClass = {}
          rmClass[cls[i]] = false
          iClass = i
          object_class(rmClass, el)
        }
      }
      if (isDefine(mdf) && mdf === 'toggle') {
        var getClass = isDefine(iClass) && size > 0 && (iClass + 1) < size ?  cls[(iClass + 1)] : cls[0]
        animate = !classList(el).hasClass('animated') ? ['animated', getClass] : getClass
      } else {
        animate = !classList(el).hasClass('animated') ? cls.push('animated') : cls
      }
      object_class(animate, el)
    }
  }
func_documentation_string: (cls → string | array, el → dom, mdf → string)
  - inview animation handler