diff --git a/runtime/autoload/ccomplete.vim b/runtime/autoload/ccomplete.vim
index 64e0079..8fde2d3 100644
--- a/runtime/autoload/ccomplete.vim
+++ b/runtime/autoload/ccomplete.vim
@@ -1,7 +1,7 @@
 " Vim completion script
 " Language:	C
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2006 Jan 29
+" Last Change:	2006 Jan 30
 
 
 " This function is used for the 'omnifunc' option.
diff --git a/runtime/autoload/javascriptcomplete.vim b/runtime/autoload/javascriptcomplete.vim
new file mode 100644
index 0000000..2853fba
--- /dev/null
+++ b/runtime/autoload/javascriptcomplete.vim
@@ -0,0 +1,495 @@
+" Vim completion script
+" Language:	Java Script
+" Maintainer:	Mikolaj Machowski ( mikmach AT wp DOT pl )
+" Last Change:	2006 Jan 30
+
+function! javascriptcomplete#CompleteJS(findstart, base)
+  if a:findstart
+    " locate the start of the word
+    let line = getline('.')
+    let start = col('.') - 1
+	let curline = line('.')
+	let compl_begin = col('.') - 2
+	" Bit risky but JS is rather limited language and local chars shouldn't
+	" fint way into names
+    while start >= 0 && line[start - 1] =~ '\w'
+		let start -= 1
+    endwhile
+	let b:compl_context = getline('.')[0:compl_begin]
+    return start
+  else
+	" Initialize base return lists
+    let res = []
+    let res2 = []
+	" a:base is very short - we need context
+	let context = b:compl_context
+	" Shortcontext is context without a:base, useful for checking if we are
+	" looking for objects
+	let shortcontext = substitute(context, a:base.'$', '', '')
+	unlet! b:compl_context
+
+	if shortcontext =~ '\.$'
+		" Complete methods and properties for objects
+		" DOM separate
+		let doms = ['style.']
+		" Arrays
+		let arrayprop = ['constructor', 'index', 'input', 'length', 'prototype']
+		let arraymeth = ['concat', 'join', 'pop', 'push', 'reverse', 'shift', 
+					\ 'splice', 'sort', 'toSource', 'toString', 'unshift', 'valueOf',
+					\ 'watch', 'unwatch']
+		call map(arraymeth, 'v:val."("')
+		let arrays = arrayprop + arraymeth
+
+		" Boolean - complete subset of array values
+		" properties - constructor, prototype
+		" methods    - toSource, toString, valueOf
+
+		" Date
+		" properties - constructor, prototype
+		let datemeth = ['getDate', 'getDay', 'getFullYear', 'getHours', 'getMilliseconds',
+					\ 'getMinutes', 'getMonth', 'getSeconds', 'getTime', 'getTimezoneOffset',
+					\ 'getUTCDate', 'getUTCDay', 'getUTCFullYear', 'getUTCHours', 'getUTCMilliseconds',
+					\ 'getUTCMinutes', 'getUTCMonth', 'getUTCSeconds',
+					\ 'getYear', 'parse', 'parse',
+					\ 'setDate', 'setDay', 'setFullYear', 'setHours', 'setMilliseconds',
+					\ 'setMinutes', 'setMonth', 'setSeconds',
+					\ 'setUTCDate', 'setUTCDay', 'setUTCFullYear', 'setUTCHours', 'setUTCMilliseconds',
+					\ 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds', 'setYear', 'setTime',
+					\ 'toGMTString', 'toLocaleString', 'toLocaleDateString', 'toLocaleTimeString',
+					\ 'toSource', 'toString', 'toUTCString', 'UTC', 'valueOf', 'watch', 'unwatch']
+		call map(datemeth, 'v:val."("')
+		let dates = datemeth
+
+		" Function
+		let funcprop = ['arguments', 'arguments.callee', 'arguments.caller', 'arguments.length',
+					\ 'arity', 'constructor', 'length', 'prototype']
+		let funcmeth = ['apply', 'call', 'toSource', 'toString', 'valueOf']
+		call map(funcmeth, 'v:val."("')
+		let funcs = funcprop + funcmeth
+
+		" Math
+		let mathprop = ['E', 'LN2', 'LN10', 'LOG2E', 'LOG10E', 'PI', 'SQRT1_2', 'SQRT']
+		let mathmeth = ['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'exp', 'floor',
+					\ 'log', 'max', 'min', 'pow', 'random', 'round', 'sin', 'sqrt', 'tan',
+					\ 'watch', 'unwatch']
+		call map(mathmeth, 'v:val."("')
+		let maths = mathprop + mathmeth
+
+		" Number
+		let numbprop = ['MAX_VALUE', 'MIN_VALUE', 'NaN', 'NEGATIVE_INFINITY', 'POSITIVE_INFINITY', 
+					\ 'constructor', 'prototype']
+		let numbmeth = ['toExponential', 'toFixed', 'toPrecision', 'toSource', 'toString', 'valueOf',
+					\ 'watch', 'unwatch']
+		call map(numbmeth, 'v:val."("')
+		let numbs = numbprop + numbmeth
+
+		" Object
+		let objeprop = ['constructor', 'prototype']
+		let objemeth = ['eval', 'toSource', 'toString', 'unwatch', 'watch', 'valueOf']
+		call map(objemeth, 'v:val."("')
+		let objes = objeprop + objemeth
+
+		" RegExp
+		let regeprop = ['constructor', 'global', 'ignoreCase', 'lastIndex', 'multiline', 'source', 'prototype']
+		let regemeth = ['exec', 'toSource', 'toString', 'test', 'watch', 'unwatch']
+		call map(regemeth, 'v:val."("')
+		let reges = regeprop + regemeth
+
+		" String
+		let striprop = ['constructor', 'length', 'prototype']
+		let strimeth = ['anchor', 'big', 'blink', 'bold', 'charAt', 'charCodeAt', 'concat',
+					\ 'fixed', 'fontcolor', 'fontsize', 'fromCharCode', 'indexOf', 'italics',
+					\ 'lastIndexOf', 'link', 'match', 'replace', 'search', 'slice', 'small',
+					\ 'split', 'strike', 'sub', 'substr', 'substring', 'sup', 'toLowerCase',
+					\ 'toSource', 'toString', 'toUpperCase', 'watch', 'unwatch']
+		call map(strimeth, 'v:val."("')
+		let stris = striprop + strimeth
+
+		" User created properties
+		if exists("b:jsrange")
+			let file = getline(b:jsrange[0],b:jsrange[1])
+			unlet! b:jsrange
+		else
+			let file = getline(1, '$')
+		endif
+		let user_props1 = filter(copy(file), 'v:val =~ "this\\.\\w"')
+		let juser_props1 = join(user_props1, ' ')
+		let user_props1 = split(juser_props1, '\zethis\.')
+		unlet! juser_props1
+		call map(user_props1, 'matchstr(v:val, "this\\.\\zs\\w\\+\\ze")')
+		let user_props2 = filter(copy(file), 'v:val =~ "\\.prototype\\.\\w"')
+		call map(user_props2, 'matchstr(v:val, "\\.prototype\\.\\zs\\w\\+\\ze")')
+		let user_props = user_props1 + user_props2
+
+		" HTML DOM properties
+		" Anchors - anchor.
+		let anchprop = ['accessKey', 'charset', 'coords', 'href', 'hreflang', 'id', 'innerHTML',
+					\ 'name', 'rel', 'rev', 'shape', 'tabIndex', 'target', 'type', 'onBlur', 'onFocus']
+		let anchmeth = ['blur', 'focus']
+		call map(anchmeth, 'v:val."("')
+		let anths = anchprop + anchmeth
+		" Area - area.
+		let areaprop = ['accessKey', 'alt', 'coords', 'hash', 'host', 'hostname', 'href', 'id',
+					\ 'noHref', 'pathname', 'port', 'protocol', 'search', 'shape', 'tabIndex', 'target']
+		let areameth = ['onClick', 'onDblClick', 'onMouseOut', 'onMouseOver']
+		call map(areameth, 'v:val."("')
+		let areas = areaprop + areameth
+		" Base - base.
+		let baseprop = ['href', 'id', 'target']
+		let bases = baseprop
+		" Body - body.
+		let bodyprop = ['aLink', 'background', 'gbColor', 'id', 'link', 'scrollLeft', 'scrollTop',
+					\ 'text', 'vLink']
+		let bodys = bodyprop
+		" Document - document.
+		let docuprop = ['anchors', 'applets', 'childNodes', 'embeds', 'forms', 'images', 'links', 'stylesheets',
+					\ 'body', 'cookie', 'documentElement', 'domain', 'lastModified', 'referrer', 'title', 'URL']
+		let documeth = ['close', 'createAttribute', 'createElement', 'createTextNode', 'focus', 'getElementById',
+					\ 'getElementsByName', 'getElementsByTagName', 'open', 'write', 'writeln',
+					\ 'onClick', 'onDblClick', 'onFocus', 'onKeyDown', 'onKeyPress', 'onKeyUp',
+					\ 'onMouseDown', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onResize']
+		call map(documeth, 'v:val."("')
+		let docus = docuprop + documeth
+		" Form - form.
+		let formprop = ['elements', 'acceptCharset', 'action', 'encoding', 'enctype', 'id', 'length',
+					\ 'method', 'name', 'tabIndex', 'target']
+		let formmeth = ['reset', 'submit', 'onReset', 'onSubmit']
+		call map(formmeth, 'v:val."("')
+		let forms = formprop + formmeth
+		" Frame - frame.
+		let framprop = ['contentDocument', 'frameBorder', 'id', 'longDesc', 'marginHeight', 'marginWidth',
+					\ 'name', 'noResize', 'scrolling', 'src']
+		let frammeth = ['blur', 'focus']
+		call map(frammeth, 'v:val."("')
+		let frams = framprop + frammeth
+		" Frameset - frameset.
+		let fsetprop = ['cols', 'id', 'rows']
+		let fsetmeth = ['blur', 'focus']
+		call map(fsetmeth, 'v:val."("')
+		let fsets = fsetprop + fsetmeth
+		" History - history.
+		let histprop = ['length']
+		let histmeth = ['back', 'forward', 'go']
+		call map(histmeth, 'v:val."("')
+		let hists = histprop + histmeth
+		" Iframe - iframe.
+		let ifraprop = ['align', 'frameBorder', 'height', 'id', 'longDesc', 'marginHeight', 'marginWidth',
+					\ 'name', 'scrolling', 'src', 'width']
+		let ifras = ifraprop
+		" Image - image.
+		let imagprop = ['align', 'alt', 'border', 'complete', 'height', 'hspace', 'id', 'isMap', 'longDesc',
+					\ 'lowsrc', 'name', 'src', 'useMap', 'vspace', 'width']
+		let imagmeth = ['onAbort', 'onError', 'onLoad']
+		call map(imagmeth, 'v:val."("')
+		let imags = histprop + imagmeth
+		" Button - accessible only by other properties
+		let buttprop = ['accessKey', 'disabled', 'form', 'id', 'name', 'tabIndex', 'type', 'value']
+		let buttmeth = ['blur', 'click', 'focus', 'onBlur', 'onClick', 'onFocus', 'onMouseDown', 'onMouseUp']
+		call map(buttmeth, 'v:val."("')
+		let butts = buttprop + buttmeth
+		" Checkbox - accessible only by other properties
+		let checprop = ['accept', 'accessKey', 'align', 'alt', 'checked', 'defaultChecked', 
+					\ 'disabled', 'form', 'id', 'name', 'tabIndex', 'type', 'value'] 
+		let checmeth = ['blur', 'click', 'focus', 'onBlur', 'onClick', 'onFocus', 'onMouseDown', 'onMouseUp']
+		call map(checmeth, 'v:val."("')
+		let checs = checprop + checmeth
+		" File upload - accessible only by other properties
+		let fileprop = ['accept', 'accessKey', 'align', 'alt', 'defaultValue', 
+					\ 'disabled', 'form', 'id', 'name', 'tabIndex', 'type', 'value'] 
+		let filemeth = ['blur', 'focus', 'onBlur', 'onClick', 'onFocus', 'onMouseDown', 'onMouseUp']
+		call map(filemeth, 'v:val."("')
+		let files = fileprop + filemeth
+		" Hidden - accessible only by other properties
+		let hiddprop = ['defaultValue', 'form', 'id', 'name', 'type', 'value'] 
+		let hidds = hiddprop
+		" Password - accessible only by other properties
+		let passprop = ['accept', 'accessKey', 'defaultValue', 
+					\ 'disabled', 'form', 'id', 'maxLength', 'name', 'readOnly', 'size', 'tabIndex', 
+					\ 'type', 'value'] 
+		let passmeth = ['blur', 'click', 'focus', 'select', 'onBlur', 'onFocus', 'onKeyDown', 
+					\ 'onKeyPress', 'onKeyUp']
+		call map(passmeth, 'v:val."("')
+		let passs = passprop + passmeth
+		" Radio - accessible only by other properties
+		let radiprop = ['accept', 'accessKey', 'align', 'alt', 'checked', 'defaultChecked', 
+					\ 'disabled', 'form', 'id', 'name', 'tabIndex', 'type', 'value'] 
+		let radimeth = ['blur', 'click', 'focus', 'select', 'onBlur', 'onFocus']
+		call map(radimeth, 'v:val."("')
+		let radis = radiprop + radimeth
+		" Reset - accessible only by other properties
+		let reseprop = ['accept', 'accessKey', 'align', 'alt', 'defaultValue', 
+					\ 'disabled', 'form', 'id', 'name', 'size', 'tabIndex', 'type', 'value'] 
+		let resemeth = ['blur', 'click', 'focus', 'select', 'onBlur', 'onFocus']
+		call map(resemeth, 'v:val."("')
+		let reses = reseprop + resemeth
+		" Submit - accessible only by other properties
+		let submprop = ['accept', 'accessKey', 'align', 'alt', 'defaultValue', 
+					\ 'disabled', 'form', 'id', 'name', 'size', 'tabIndex', 'type', 'value'] 
+		let submmeth = ['blur', 'click', 'focus', 'select', 'onClick', 'onSelectStart']
+		call map(submmeth, 'v:val."("')
+		let subms = submprop + submmeth
+		" Text - accessible only by other properties
+		let textprop = ['accept', 'accessKey', 'align', 'alt', 'defaultValue', 
+					\ 'disabled', 'form', 'id', 'maxLength', 'name', 'readOnly', 
+					\ 'size', 'tabIndex', 'type', 'value'] 
+		let textmeth = ['blur', 'focus', 'select', 'onBlur', 'onChange', 'onFocus', 'onKeyDown',
+					\ 'onKeyPress', 'onKeyUp', 'onSelect']
+		call map(textmeth, 'v:val."("')
+		let texts = textprop + textmeth
+		" Link - link.
+		let linkprop = ['charset', 'disabled', 'href', 'hreflang', 'id', 'media',
+					\ 'rel', 'rev', 'target', 'type']
+		let linkmeth = ['onLoad']
+		call map(linkmeth, 'v:val."("')
+		let links = linkprop + linkmeth
+		" Location - location.
+		let locaprop = ['href', 'hash', 'host', 'hostname', 'pathname', 'port', 'protocol',
+					\ 'search']
+		let locameth = ['assign', 'reload', 'replace']
+		call map(locameth, 'v:val."("')
+		let locas = locaprop + locameth
+		" Meta - meta.
+		let metaprop = ['charset', 'content', 'disabled', 'httpEquiv', 'name', 'scheme']
+		let metas = metaprop
+		" Navigator - navigator.
+		let naviprop = ['plugins', 'appCodeName', 'appName', 'appVersion', 'cookieEnabled',
+					\ 'platform', 'userAgent']
+		let navimeth = ['javaEnabled', 'taintEnabled']
+		call map(navimeth, 'v:val."("')
+		let navis = naviprop + navimeth
+		" Object - object.
+		let objeprop = ['align', 'archive', 'border', 'code', 'codeBase', 'codeType', 'data',
+					\ 'declare', 'form', 'height', 'hspace', 'id', 'name', 'standby', 'tabIndex',
+					\ 'type', 'useMap', 'vspace', 'width']
+		let objes = objeprop
+		" Option - accessible only by other properties
+		let optiprop = ['defaultSelected', 
+					\ 'disabled', 'form', 'id', 'index', 'label', 'selected', 'text', 'value']
+		let optis = optiprop
+		" Screen - screen.
+		let screprop = ['availHeight', 'availWidth', 'colorDepth', 'height', 'width']
+		let scres = screprop
+		" Select - accessible only by other properties
+		let seleprop = ['options', 'disabled', 'form', 'id', 'length', 'multiple', 'name', 
+					\ 'selectedIndex', 'size', 'tabIndex', 'type', 'value'] 
+		let selemeth = ['blur', 'focus', 'remove', 'onBlur', 'onChange', 'onFocus']
+		call map(selemeth, 'v:val."("')
+		let seles = seleprop + selemeth
+		" Style - style.
+		let stylprop = ['background', 'backgroundAttachment', 'backgroundColor', 'backgroundImage',
+					\ 'backgroundPosition', 'backgroundRepeat',
+					\ 'border', 'borderBottom', 'borderLeft', 'borderRight', 'borderTop',
+					\ 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor',
+					\ 'borderBottomStyle', 'borderLeftStyle', 'borderRightStyle', 'borderTopStyle',
+					\ 'borderBottomWidth', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth',
+                    \ 'borderColor', 'borderStyle', 'borderWidth', 'margin', 'marginBottom',
+                    \ 'marginLeft', 'marginRight', 'marginTop', 'outline', 'outlineStyle', 'outlineWidth',
+                    \ 'outlineColor', 'outlineStyle', 'outlineWidth', 'padding', 'paddingBottom',
+                    \ 'paddingLeft', 'paddingRight', 'paddingTop',
+                    \ 'clear', 'clip', 'clipBottom', 'clipLeft', 'clipRight', 'clipTop', 'content',
+                    \ 'counterIncrement', 'counterReset', 'cssFloat', 'cursor', 'direction',
+                    \ 'display', 'markerOffset', 'marks', 'maxHeight', 'maxWidth', 'minHeight',
+					\ 'minWidth', 'overflow', 'overflowX', 'overflowY', 'verticalAlign', 'visibility',
+					\ 'width',
+					\ 'listStyle', 'listStyleImage', 'listStylePosition', 'listStyleType',
+					\ 'cssText', 'bottom', 'height', 'left', 'position', 'right', 'top', 'width', 'zindex',
+					\ 'orphans', 'widows', 'page', 'pageBreakAfter', 'pageBreakBefore', 'pageBreakInside',
+					\ 'borderCollapse', 'borderSpacing', 'captionSide', 'emptyCells', 'tableLayout',
+					\ 'color', 'font', 'fontFamily', 'fontSize', 'fontSizeAdjust', 'fontStretch',
+					\ 'fontStyle', 'fontVariant', 'fontWeight', 'letterSpacing', 'lineHeight', 'quotes',
+					\ 'textAlign', 'textIndent', 'textShadow', 'textTransform', 'textUnderlinePosition',
+					\ 'unicodeBidi', 'whiteSpace', 'wordSpacing']
+		let styls = stylprop
+		" Table - table.
+		let tablprop = ['rows', 'tBodies', 'align', 'bgColor', 'border', 'caption', 'cellPadding',
+					\ 'cellSpacing', 'frame', 'height', 'rules', 'summary', 'tFoot', 'tHead', 'width']
+		let tablmeth = ['createCaption', 'createTFoot', 'createTHead', 'deleteCaption', 'deleteRow',
+					\ 'deleteTFoot', 'deleteTHead', 'insertRow']
+		call map(tablmeth, 'v:val."("')
+		let tabls = tablprop + tablmeth
+		" Table data - TableData.
+		let tdatprop = ['abbr', 'align', 'axis', 'bgColor', 'cellIndex', 'ch', 'chOff',
+					\ 'colSpan', 'headers', 'noWrap', 'rowSpan', 'scope', 'vAlign', 'width']
+		let tdats = tdatprop
+		" Table row - TableRow.
+		let trowprop = ['cells', 'align', 'bgColor', 'ch', 'chOff', 'rowIndex', 'sectionRowIndex',
+					\ 'vAlign']
+		let trowmeth = ['deleteCell', 'insertCell']
+		call map(trowmeth, 'v:val."("')
+		let trows = trowprop + trowmeth
+		" Textarea - accessible only by other properties
+		let tareprop = ['accessKey', 'cols', 'defaultValue', 
+					\ 'disabled', 'form', 'id', 'name', 'readOnly', 'rows', 
+					\ 'tabIndex', 'type', 'value'] 
+		let taremeth = ['blur', 'focus', 'select', 'onBlur', 'onChange', 'onFocus']
+		call map(taremeth, 'v:val."("')
+		let tares = tareprop + taremeth
+		" Window - window.
+		let windprop = ['frames', 'closed', 'defaultStatus', 'length', 'name', 'opener', 'parent',
+					\ 'self', 'status', 'top']
+		let windmeth = ['alert', 'blur', 'clearInterval', 'clearTimeout', 'close', 'confirm', 'focus',
+					\ 'moveBy', 'moveTo', 'open', 'print', 'prompt', 'scrollBy', 'scrollTo', 'setInterval',
+					\ 'setTimeout']
+		call map(windmeth, 'v:val."("')
+		let winds = windprop + windmeth
+		" XMLHttpRequest - access by new xxx()
+		let xmlhprop = ['onreadystatechange', 'readyState', 'responseText', 'responseXML',
+					\ 'status', 'statusText']
+		let xmlhmeth = ['abort', 'getAllResponseHeaders', 'getResponseHeaders', 'open',
+					\ 'send', 'setRequestHeader']
+		call map(xmlhmeth, 'v:val."("')
+		let xmlhs = xmlhprop + xmlhmeth
+
+		let object = matchstr(shortcontext, '\zs\w\+\ze\(\[.\{-}\]\)\?\.$')
+		let decl_line = search(object.'.\{-}=\s*new\s*', 'bn')
+		let object_type = matchstr(getline(decl_line), object.'.\{-}=\s*new\s*\zs\w\+\ze')
+
+		if object_type == 'Date'
+			let values = dates
+		elseif object_type == 'Image'
+			let values = imags
+		elseif object_type == 'Array'
+			let values = arrays
+		elseif object_type == 'Boolean'
+			" TODO: a bit more than real boolean
+			let values = arrays
+		elseif object_type == 'XMLHttpRequest'
+			let values = xmlhs
+		elseif object_type == 'String'
+			let values = stris
+		endif
+
+		if !exists('values')
+		" List of properties
+		if shortcontext =~ 'Math\.$'
+			let values = maths
+		elseif shortcontext =~ 'anchor\.$'
+			let values = anths
+		elseif shortcontext =~ 'area\.$'
+			let values = areas
+		elseif shortcontext =~ 'base\.$'
+			let values = bases
+		elseif shortcontext =~ 'body\.$'
+			let values = bodys
+		elseif shortcontext =~ 'document\.$'
+			let values = docus
+		elseif shortcontext =~ 'form\.$'
+			let values = forms
+		elseif shortcontext =~ 'frameset\.$'
+			let values = fsets
+		elseif shortcontext =~ 'history\.$'
+			let values = hists
+		elseif shortcontext =~ 'iframe\.$'
+			let values = ifras
+		elseif shortcontext =~ 'image\.$'
+			let values = imags
+		elseif shortcontext =~ 'link\.$'
+			let values = links
+		elseif shortcontext =~ 'location\.$'
+			let values = locas
+		elseif shortcontext =~ 'meta\.$'
+			let values = metas
+		elseif shortcontext =~ 'navigator\.$'
+			let values = navis
+		elseif shortcontext =~ 'object\.$'
+			let values = objes
+		elseif shortcontext =~ 'screen\.$'
+			let values = scres
+		elseif shortcontext =~ 'style\.$'
+			let values = styls
+		elseif shortcontext =~ 'table\.$'
+			let values = tabls
+		elseif shortcontext =~ 'TableData\.$'
+			let values = tdats
+		elseif shortcontext =~ 'TableRow\.$'
+			let values = trows
+		elseif shortcontext =~ 'window\.$'
+			let values = winds
+		else
+			let values = user_props + arrays + dates + funcs + maths + numbs + objes + reges + stris
+			let values += doms + anths + areas + bases + bodys + docus + forms + frams + fsets + hists
+			let values += ifras + imags + links + locas + metas + navis + objes + scres + styls
+			let values += tabls + trows + winds
+		endif
+		endif
+
+		for m in values
+			if m =~? '^'.a:base
+				call add(res, m)
+			elseif m =~? a:base
+				call add(res2, m)
+			endif
+		endfor
+
+		unlet! values
+		return res + res2
+
+	endif
+
+	if exists("b:jsrange")
+		let file = getline(b:jsrange[0],b:jsrange[1])
+		unlet! b:jsrange
+	else
+		let file = getline(1, '$')
+	endif
+
+	" Get variables data.
+	let variables = filter(copy(file), 'v:val =~ "var\\s"')
+	call map(variables, 'matchstr(v:val, ".\\{-}var\\s\\+\\zs.*\\ze")')
+	call map(variables, 'substitute(v:val, ";\\|$", ",", "g")')
+	let vars = []
+	" This loop is necessary to get variable names from constructs like:
+	" var var1, var2, var3 = "something";
+	for i in range(len(variables))
+		let comma_separated = split(variables[i], ',\s*')
+		call map(comma_separated, 'matchstr(v:val, "\\w\\+")')
+		let vars += comma_separated
+	endfor
+
+	let variables = sort(vars)
+
+	" Add undeclared variables.
+	let undeclared_variables = filter(copy(file), 'v:val =~ "^\\s*\\w\\+\\s*="')
+	call map(undeclared_variables, 'matchstr(v:val, "^\\s*\\zs\\w\\+\\ze")')
+
+	let variables += sort(undeclared_variables)
+
+	" Get functions
+	let functions = filter(copy(file), 'v:val =~ "^\\s*function\\s"')
+	let arguments = copy(functions)
+	call map(functions, 'matchstr(v:val, "^\\s*function\\s\\+\\zs\\w\\+")')
+	call map(functions, 'v:val."("')
+
+	" Get functions arguments
+	call map(arguments, 'matchstr(v:val, "function.\\{-}(\\zs.\\{-}\\ze)")')
+	let jargs = join(arguments, ',')
+	let jargs = substitute(jargs, '\s', '', 'g')
+	let arguments = split(jargs, ',')
+
+	" Built-in functions
+	let builtin = []
+
+	" Top-level HTML DOM objects
+	let htmldom = ['document', 'anchor', 'area', 'base', 'body', 'document', 'event', 'form', 'frame', 'frameset', 'history', 'iframe', 'image', 'input', 'link', 'location', 'meta', 'navigator', 'object', 'option', 'screen', 'select', 'table', 'tableData', 'tableHeader', 'tableRow', 'textarea', 'window']
+	call map(htmldom, 'v:val."."')
+
+	" Top-level properties
+	let properties = ['decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent',
+				\ 'eval', 'Infinity', 'isFinite', 'isNaN', 'NaN', 'Number', 'parseFloat',
+				\ 'parseInt', 'String', 'undefined', 'escape', 'unescape']
+
+	" Keywords
+	let keywords = ["Array", "Boolean", "Date", "Function", "Math", "Number", "Object", "RegExp", "String", "XMLHttpRequest", "ActiveXObject", "abstract", "boolean", "break", "byte", "case", "catch", "char", "class", "const", "continue", "debugger", "default", "delete", "do", "double ", "else", "enum", "export", "extends", "false", "final", "finally", "float", "for", "function", "goto", "if", "implements", "import", "in ", "instanceof", "int", "interface", "long", "native", "new", "null", "package", "private", "protected", "public", "return", "short", "static", "super ", "switch", "synchronized", "this", "throw", "throws", "transient", "true", "try", "typeof", "var", "void", "volatile", "while", "with"]
+
+	let values = variables + functions + htmldom + arguments + builtin + properties + keywords
+
+	for m in values
+		if m =~? '^'.a:base
+			call add(res, m)
+		elseif m =~? a:base
+			call add(res2, m)
+		endif
+	endfor
+
+	return res + res2
+endfunction
diff --git a/runtime/autoload/spellfile.vim b/runtime/autoload/spellfile.vim
new file mode 100644
index 0000000..387f189
--- /dev/null
+++ b/runtime/autoload/spellfile.vim
@@ -0,0 +1,111 @@
+" Vim script to download a missing spell file
+" Maintainer:	Bram Moolenaar <Bram@vim.org>
+" Last Change:	2006 Feb 01
+
+if !exists('g:spellfile_URL')
+  let g:spellfile_URL = 'ftp://ftp.vim.org/pub/vim/unstable/runtime/spell'
+endif
+let s:spellfile_URL = ''    " Start with nothing so that s:donedict is reset.
+
+" This function is used for the spellfile plugin.
+function! spellfile#LoadFile(lang)
+  " If the netrw plugin isn't loaded we silently skip everything.
+  if !exists(":Nread")
+    if &verbose
+      echomsg 'spellfile#LoadFile(): Nread command is not available.'
+    endif
+    return
+  endif
+
+  " If the URL changes we try all files again.
+  if s:spellfile_URL != g:spellfile_URL
+    let s:donedict = {}
+    let s:spellfile_URL = g:spellfile_URL
+  endif
+
+  " I will say this only once!
+  if has_key(s:donedict, a:lang . &enc)
+    if &verbose
+      echomsg 'spellfile#LoadFile(): Tried this language/encoding before.'
+    endif
+    return
+  endif
+  let s:donedict[a:lang . &enc] = 1
+
+  " Find spell directories we can write in.
+  let dirlist = []
+  let dirchoices = '&Cancel'
+  for dir in split(globpath(&rtp, 'spell'), "\n")
+    if filewritable(dir) == 2
+      call add(dirlist, dir)
+      let dirchoices .= "\n&" . len(dirlist)
+    endif
+  endfor
+  if len(dirlist) == 0
+    if &verbose
+      echomsg 'spellfile#LoadFile(): There is no writable spell directory.'
+    endif
+    return
+  endif
+
+  let msg = 'Cannot find spell file for "' . a:lang . '" in ' . &enc
+  let msg .= "\nDo you want me to try downloading it?"
+  if confirm(msg, "&Yes\n&No", 2) == 1
+    let enc = &encoding
+    if enc == 'iso-8859-15'
+      let enc = 'latin1'
+    endif
+    let fname = a:lang . '.' . enc . '.spl'
+
+    " Split the window, read the file into a new buffer.
+    new
+    setlocal bin
+    echo 'Downloading ' . fname . '...'
+    exe 'Nread ' g:spellfile_URL . '/' . fname
+    if getline(2) !~ 'VIMspell'
+      " Didn't work, perhaps there is an ASCII one.
+      g/^/d
+      let fname = a:lang . '.ascii.spl'
+      echo 'Could not find it, trying ' . fname . '...'
+      exe 'Nread ' g:spellfile_URL . '/' . fname
+      if getline(2) !~ 'VIMspell'
+	echo 'Sorry, downloading failed'
+	bwipe!
+	return
+      endif
+    endif
+
+    " Delete the empty first line and mark the file unmodified.
+    1d
+    set nomod
+
+    let msg = "In which directory do you want to write the file:"
+    for i in range(len(dirlist))
+      let msg .= "\n" . (i + 1) . '. ' . dirlist[i]
+    endfor
+    let dirchoice = confirm(msg, dirchoices) - 2
+    if dirchoice >= 0
+      exe "write " . escape(dirlist[dirchoice], ' ') . '/' . fname
+
+      " Also download the .sug file, if the user wants to.
+      let msg = "Do you want me to try getting the .sug file?\n"
+      let msg .= "This will improve making suggestions for spelling mistakes,\n"
+      let msg .= "but it uses quite a bit of memory."
+      if confirm(msg, "&No\n&Yes") == 2
+	g/^/d
+	let fname = substitute(fname, '\.spl$', '.sug', '')
+	echo 'Downloading ' . fname . '...'
+	exe 'Nread ' g:spellfile_URL . '/' . fname
+	if getline(2) !~ 'VIMsug'
+	  echo 'Sorry, downloading failed'
+	else
+	  1d
+	  exe "write " . escape(dirlist[dirchoice], ' ') . '/' . fname
+	endif
+	set nomod
+      endif
+    endif
+
+    bwipe
+  endif
+endfunc
diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt
index ca6431e..27804b0 100644
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -1,4 +1,4 @@
-*pattern.txt*   For Vim version 7.0aa.  Last change: 2006 Jan 22
+*pattern.txt*   For Vim version 7.0aa.  Last change: 2006 Feb 01
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -821,7 +821,7 @@
 	{not in Vi}
 	WARNING: When the mark is moved after the pattern was used, the result
 	becomes invalid.  Vim doesn't automatically update the matches.
-	Similar to moving the cursor for |\%#|.
+	Similar to moving the cursor for "\%#" |/\%#|.
 
 						*/\%l* */\%>l* */\%<l*
 \%23l	Matches in a specific line.
diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt
index bdda74f..5430be0 100644
--- a/runtime/doc/quickfix.txt
+++ b/runtime/doc/quickfix.txt
@@ -1,4 +1,4 @@
-*quickfix.txt*  For Vim version 7.0aa.  Last change: 2006 Jan 29
+*quickfix.txt*  For Vim version 7.0aa.  Last change: 2006 Jan 30
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -311,14 +311,17 @@
 
 When the quickfix window has been filled, two autocommand events are
 triggered.  First the 'filetype' option is set to "qf", which triggers the
-FileType event.  Then the BufReadPost event is triggered.  This can be used to
-perform some action on the listed errors.  Example: >
+FileType event.  Then the BufReadPost event is triggered, using "quickfix" for
+the buffer name.  This can be used to perform some action on the listed
+errors.  Example: >
 	au BufReadPost quickfix  setlocal modifiable
 		\ | silent exe 'g/^/s//\=line(".")." "/'
 		\ | setlocal nomodifiable
 This prepends the line number to each line.  Note the use of "\=" in the
 substitute string of the ":s" command, which is used to evaluate an
 expression.
+The BufWinEnter event is also triggered, again using "quickfix" for the buffer
+name.
 
 Note: Making changes in the quickfix window has no effect on the list of
 errors.  'modifiable' is off to avoid making changes.  If you delete or insert
@@ -332,7 +335,8 @@
 open a location list window, it is created below the current window and
 displays the location list for the current window.  The location list window
 is similar to the quickfix window, except that you can have more than one
-location list window open at a time.
+location list window open at a time. When you use a location list command in
+this window, the displayed location list is used.
 
 When you select a file from the location list window, the following steps are
 used to find a window to edit the file:
diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt
index f9559c8..43d6fe3 100644
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt*	For Vim version 7.0aa.  Last change: 2006 Jan 25
+*spell.txt*	For Vim version 7.0aa.  Last change: 2006 Feb 01
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -261,6 +261,10 @@
 this succeeds then additionally files with the name LL.EEE.add.spl are loaded.
 All the ones that are found are used.
 
+If no spell file is found the |SpellFileMissing| autocommand event is
+triggered.  This may trigger the |spellfile.vim| plugin to offer you
+downloading the spell file.
+
 Additionally, the files related to the names in 'spellfile' are loaded.  These
 are the files that |zg| and |zw| add good and wrong words to.
 
@@ -560,6 +564,48 @@
 Comment lines with the name of the .spl file are used as a header above the
 words that were generated from that .spl file.
 
+
+SPELL FILE MISSING		*spell-SpellFileMissing* *spellfile.vim*
+
+If the spell file for the language you are using is not available, you will
+get an error message.  But if the "spellfile.vim" plugin is active it will
+offer you to download the spell file.  Just follow the instructions, it will
+ask you where to write the file.
+
+The plugin has a default place where to look for spell files, on the Vim ftp
+server.  If you want to use another location or another protocol, set the
+g:spellfile_URL variable to the directory that holds the spell files.  The
+|netrw| plugin is used for getting the file, look there for the speficic
+syntax of the URL.  Example: >
+	let g:spellfile_URL = 'http://ftp.vim.org/vim/runtime/spell'
+You may need to escape special characters.
+
+The plugin will only ask about downloading a language once.  If you want to
+try again anyway restart Vim, or set g:spellfile_URL to another value (e.g.,
+prepend a space).
+
+To avoid using the "spellfile.vim" plugin do this in your vimrc file: >
+
+	let loaded_spellfile_plugin = 1
+
+Instead of using the plugin you can define a |SpellFileMissing| autocommand to
+handle the missing file yourself.  You can use it like this: >
+
+	:au SpellFileMissing * call Download_spell_file(expand('<amatch>'))
+
+Thus the <amatch> item contains the name of the language.  Another important
+value is 'encoding', since every encoding has its own spell file.  With two
+exceptions:
+- For ISO-8859-15 (latin9) the name "latin1" is used (the encodings only
+  differ in characters not used in dictionary words).
+- The name "ascii" may also be used for some languages where the words use
+  only ASCII letters for most of the words.
+
+The default "spellfile.vim" plugin uses this autocommand, if you define your
+autocommand afterwars you may want to use ":au! SpellFileMissing" to overrule
+it.  If you define your autocommand before the plugin is loaded it will notice
+this and not do anything.
+
 ==============================================================================
 4. Spell file format					*spell-file-format*
 
diff --git a/runtime/doc/tagsrch.txt b/runtime/doc/tagsrch.txt
index 522eb2a..f35f165 100644
--- a/runtime/doc/tagsrch.txt
+++ b/runtime/doc/tagsrch.txt
@@ -257,6 +257,17 @@
 :tl[ast][!]		Jump to last matching tag.  See |tag-!| for [!].  {not
 			in Vi}
 
+							*:lt* *:ltag*
+:lt[ag][!] [ident]	Jump to tag [ident] and add the matching tags to a new
+			location list for the current window.  [ident] can be
+			a regexp pattern, see |tag-regexp|.  When [ident] is
+			not given, the last tag name from the tag stack is
+			used.  The search pattern to locate the tag line is
+			prefixed with "\V" to escape all the special
+			characters (very nomagic). The location list showing
+			the matching tags is independent of the tag stack.
+			See |tag-!| for [!].
+			{not in Vi}
 
 When there is no other message, Vim shows which matching tag has been jumped
 to, and the number of matching tags: >
@@ -275,6 +286,7 @@
 missing files.  When the end of the list of matches has been reached, an error
 message is given.
 
+							*tag-preview*
 The tag match list can also be used in the preview window.  The commands are
 the same as above, with a "p" prepended.
 {not available when compiled without the |+quickfix| feature}
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index efec6ca..7bf4040 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2006 Jan 29
+*todo.txt*      For Vim version 7.0aa.  Last change: 2006 Feb 01
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,8 +30,6 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Truncating error message keeps one char too many, causes an empty line.
-
 Variant of ":helpgrep" that uses a location list?  How about:
     :lhelpgrep  (use local list in help window, not current window)
     :lgrep
@@ -64,18 +62,14 @@
 		    struct pointer).
 - Special mappings for when the popup menu is visible?  Would allow for making
   a specific selection (e.g, methods vs variables).
-- Provide a function to popup the menu, so that an insert mode mapping can
-  start it (with a specific selection).
 
 spelling:
 - Also use the spelling dictionary for dictionary completion.
-  When 'dictionary' is  empty and/or when "kspell" is in 'complete'.
+  When 'dictionary' is empty and/or when "kspell" is in 'complete'.
 - Use runtime/cleanadd script to cleanup .add files.  When to invoke it?
   After deleting a word with "zw" and some timestamp difference perhaps?
   Store it as spell/cleanadd.vim.
 - suggestion for "KG" to "kg" when it's keepcase.
-- Autocommand event for when a spell file is missing.  Allows making a plugin
-  that fetches the file over internet.  Pattern == language.
 - Using KEEPCASE flag still allows all-upper word, docs say it doesn't.
   Don't allow it, because there is no other way to do this.
 - Implement NOSUGGEST flag (used for obscene words).
@@ -252,6 +246,8 @@
 	Completion in .NET framework SharpDevelop: http://www.icsharpcode.net
 
         - Pre-expand abbreviations, show which abbrevs would match?
+    - Provide a function to popup the menu, so that an insert mode mapping can
+      start it (with a specific selection).
 
 -   UNDO TREE: keep all states of the text, don't delete undo info.
     When making a change, instead of clearing any future undo (thus redo)
@@ -409,10 +405,6 @@
 
 Add gui_mch_browsedir() for Motif, Mac OS/X.
 
-Implement:
-    :ltag	      list of matching tags, like :tselect
-Patch from Yegappan Lakshmanan, Jan 13.
-
 HTML indenting can be slow, find out why.  Any way to do some kind of
 profiling for Vim script?  At least add a function to get the current time in
 usec.  reltime([start, [end]])
@@ -2101,14 +2093,10 @@
 
 
 Tags:
-8   Add a function that returns the line in the tags file for a matching tag.
-    Can be used to extract more info (class name, inheritance, etc.) (Rico
-    Hendriks)
 7   Count before CTRL-]: jump to N'th match
 8   Scope arguments for ":tag", e.g.: ":tag class:cPage open", like Elvis.
 8   When output of ":tselect" is long, getting the more-prompt, should be able
     to type the tag number directly.
-7   Add a tag-select window.  Works like ":cwindow".  (Michal Malecki)
 7   Add the possibility to use the "-t {tag}" argument multiple times.  Open a
     window for each tag.
 7   Make output of ":tselect" a bit nicer.  Use highlighting?
@@ -3321,8 +3309,7 @@
     next <li>, ]< to next </li>, [< to previous </li>.
 8   Add ":rename" command: rename the file of the current buffer and rename
     the buffer.  Buffer may be modified.
--   Perhaps ":cexpr" could read errors from a list?
-    Add %b to 'errorformat': buffer number. (Yegappan Lakshmanan / Suresh
+-   Add %b to 'errorformat': buffer number. (Yegappan Lakshmanan / Suresh
     Govindachar)
 6   In the quickfix window statusline add the command used to get the list of
     errors, e.g. ":make foo", ":grep something *.c".
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index a5db46d..053e7d1 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0aa.  Last change: 2006 Jan 28
+*version7.txt*  For Vim version 7.0aa.  Last change: 2006 Feb 01
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -449,6 +449,8 @@
 |:caddexpr|		Add error messages from a Vim expression to an
 			existing quickfix list. (Yegappan Lakshmanan).
 
+|:ltag|			Jump to a tag and add matching tags to a location list.
+
 
 Ex command modifiers: ~
 
@@ -547,6 +549,8 @@
 |QuickFixCmdPost|	after :make, :grep et al. (Ciaran McCreesh)
 |SessionLoadPost|	after loading a session file. (Yegappan Lakshmanan)
 
+|SpellFileMissing|	when a spell file can't be found
+
 
 New items in search patterns: ~
 |/\%d| \%d123		search for character with decimal number
@@ -1629,4 +1633,7 @@
 
 ":set sta ts=8 sw=4 sts=2" deleted 4 spaces halfway a line instead of 2.
 
+In a multi-byte file the foldmarker could be recognized in the trail byte.
+(Taro Muraoka)
+
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/ftplugin/javascript.vim b/runtime/ftplugin/javascript.vim
new file mode 100644
index 0000000..3ac4bbf
--- /dev/null
+++ b/runtime/ftplugin/javascript.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:	Javascript
+" Maintainer:	Bram Moolenaar (for now)
+" Last Change:  2006 Jan 30
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+if exists('&ofu')
+  setlocal ofu=javascriptcomplete#CompleteJS
+endif
diff --git a/runtime/scripts.vim b/runtime/scripts.vim
index 7abab1c..dab9729 100644
--- a/runtime/scripts.vim
+++ b/runtime/scripts.vim
@@ -1,7 +1,7 @@
 " Vim support file to detect file types in scripts
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last change:	2005 Oct 12
+" Last change:	2006 Feb 01
 
 " This file is called by an autocommand for every file that has just been
 " loaded into a buffer.  It checks if the type of file can be recognized by
@@ -184,7 +184,7 @@
     " - "*** " in first line and "--- " in second line (context diff).
     " - "# It was generated by makepatch " in the second line (makepatch diff).
     " - "Index: <filename>" in the first line (CVS file)
-  elseif s:line1 =~ '^\(diff\>\|Only in \|\d\+\(,\d\+\)\=[cda]\d\+\>\|# It was generated by makepatch \|Index:\s\+\f\+$\|===== \f\+ \d\+\.\d\+ vs edited\|==== //\f\+#\d\+\)'
+  elseif s:line1 =~ '^\(diff\>\|Only in \|\d\+\(,\d\+\)\=[cda]\d\+\>\|# It was generated by makepatch \|Index:\s\+\f\+\r\=$\|===== \f\+ \d\+\.\d\+ vs edited\|==== //\f\+#\d\+\)'
 	\ || (s:line1 =~ '^--- ' && s:line2 =~ '^+++ ')
 	\ || (s:line1 =~ '^\* looking for ' && s:line2 =~ '^\* comparing to ')
 	\ || (s:line1 =~ '^\*\*\* ' && s:line2 =~ '^--- ')
