   else
     p.element.bind p.bindName, (e) -> getProperty p.vm, p.property, e
 
+objToString = (obj) ->
+  str = '\n'
+  for p of obj when obj.hasOwnProperty(p) and not _.isFunction(obj[p]) and not _.isObject(obj[p])
+    str += p + '::' + obj[p] + '\n'
+  str
 ViewModel.addBind 'value', (p) ->
   delayTime = p.elementBind['delay'] or 0
   delayName = p.vm._vm_id + '_' + p.bindName + "_" + p.property
   isSelect = p.element.is "select"
   isMultiple = p.element.prop('multiple')
   isInput = p.element.is("input")
+  isIE8 = (document.documentMode || 9) < 9
   p.autorun (c) ->
     newValue = getProperty p.vm, p.property
     if isSelect and isMultiple

      if isInput
        VmHelper.delay 500, delayName + "X", ->
          p.vm._vm_delayed[p.property] newValue if p.vm._vm_delayed[p.property]() isnt newValue
    if delayTime
      VmHelper.delay delayTime, delayName, f
    else

  if isInput
    p.vm._vm_addDelayedProperty p.property, getProperty(p.vm, p.property), p.vm

  p.element.bind "cut paste keyup input change", (ev) ->
    f = ->
      newValue = p.element.val()

      currentValue = getProperty(p.vm, p.property)
      if isSelect and isMultiple
        if not VmHelper.arraysAreEqual(currentValue, newValue)
