updated for version 7.0e02
diff --git a/runtime/autoload/htmlcomplete.vim b/runtime/autoload/htmlcomplete.vim
index 61d2a09..c663e3c 100644
--- a/runtime/autoload/htmlcomplete.vim
+++ b/runtime/autoload/htmlcomplete.vim
@@ -1,7 +1,7 @@
 " Vim completion script
-" Language:	XHTML 1.0 Strict
+" Language:	HTML (XHTML 1.0 Strict by default)
 " Maintainer:	Mikolaj Machowski ( mikmach AT wp DOT pl )
-" Last Change:	2006 Mar 25
+" Last Change:	2006 Apr 17
 
 function! htmlcomplete#CompleteTags(findstart, base)
   if a:findstart
@@ -159,12 +159,12 @@
 	if exists("b:entitiescompl")
 		unlet! b:entitiescompl
 
-		if !exists("g:xmldata_xhtml10s")
-			runtime! autoload/xml/xhtml10s.vim
-			"call htmlcomplete#LoadData()
+		if !exists("g:html_omni")
+			"runtime! autoload/xml/xhtml10s.vim
+			call htmlcomplete#LoadData()
 		endif
 
-	    let entities =  g:xmldata_xhtml10s['vimxmlentities']
+	    let entities =  g:html_omni['vimxmlentities']
 
 		if len(a:base) == 1
 			for m in entities
@@ -443,29 +443,7 @@
 			let attrname = matchstr(attr, '.*\ze\s*=')
 			let entered_value = matchstr(attr, ".*=\\s*[\"']\\zs.*")
 			let values = []
-			if attrname == 'media'
-				let values = ["screen", "tty", "tv", "projection", "handheld", "print", "braille", "aural", "all"]
-			elseif attrname == 'xml:space'
-				let values = ["preserve"]
-			elseif attrname == 'shape'
-				let values = ["rect", "circle", "poly", "default"]
-			elseif attrname == 'valuetype'
-				let values = ["data", "ref", "object"]
-			elseif attrname == 'method'
-				let values = ["get", "post"]
-			elseif attrname == 'dir'
-				let values = ["ltr", "rtl"]
-			elseif attrname == 'frame'
-				let values = ["void", "above", "below", "hsides", "lhs", "rhs", "vsides", "box", "border"]
-			elseif attrname == 'rules'
-				let values = ["none", "groups", "rows", "all"]
-			elseif attrname == 'align'
-				let values = ["left", "center", "right", "justify", "char"]
-			elseif attrname == 'valign'
-				let values = ["top", "middle", "bottom", "baseline"]
-			elseif attrname == 'scope'
-				let values = ["row", "col", "rowgroup", "colgroup"]
-			elseif attrname == 'href'
+			if attrname == 'href'
 				" Now we are looking for local anchors defined by name or id
 				if entered_value =~ '^#'
 					let file = join(getline(1, line('$')), ' ')
@@ -476,18 +454,12 @@
 						let values += ['#'.matchstr(i, "^[a-zA-Z][a-zA-Z0-9%_-]*")]
 					endfor
 				endif
-			elseif attrname == 'type'
-				if context =~ '^input'
-					let values = ["text", "password", "checkbox", "radio", "submit", "reset", "file", "hidden", "image", "button"]
-				elseif context =~ '^button'
-					let values = ["button", "submit", "reset"]
-				elseif context =~ '^style'
-					let values = ["text/css"]
-				elseif context =~ '^script'
-					let values = ["text/javascript"]
-				endif
 			else
-				return []
+				if has_key(g:html_omni, tag) && has_key(g:html_omni[tag][1], attrname)
+					let values = g:html_omni[tag][1][attrname]
+				else
+					return []
+				endif
 			endif
 
 			if len(values) == 0
@@ -518,13 +490,12 @@
 		let sbase = matchstr(context, '.*\ze\s.*')
 
 		" Load data {{{
-		if !exists("g:xmldata_xhtml10s")
-			runtime! autoload/xml/xhtml10s.vim
-			"call htmlcomplete#LoadData()
+		if !exists("g:html_omni_gen")
+			call htmlcomplete#LoadData()
 		endif
 		" }}}
 		"
-		let attrs = keys(g:xmldata_xhtml10s[tag][1])
+		let attrs = keys(g:html_omni[tag][1])
 
 		for m in sort(attrs)
 			if m =~ '^'.attr
@@ -534,13 +505,13 @@
 			endif
 		endfor
 		let menu = res + res2
-		if has_key(g:xmldata_xhtml10s, 'vimxmlattrinfo')
+		if has_key(g:html_omni, 'vimxmlattrinfo')
 			let final_menu = []
 			for i in range(len(menu))
 				let item = menu[i]
-				if has_key(g:xmldata_xhtml10s['vimxmlattrinfo'], item)
-					let m_menu = g:xmldata_xhtml10s['vimxmlattrinfo'][item][0]
-					let m_info = g:xmldata_xhtml10s['vimxmlattrinfo'][item][1]
+				if has_key(g:html_omni['vimxmlattrinfo'], item)
+					let m_menu = g:html_omni['vimxmlattrinfo'][item][0]
+					let m_info = g:html_omni['vimxmlattrinfo'][item][1]
 					if m_menu !~ 'Bool'
 						let item .= '="'
 					endif
@@ -569,9 +540,9 @@
 		endif
 	endif
 	" Load data {{{
-	if !exists("g:xmldata_xhtml10s")
-		runtime! autoload/xml/xhtml10s.vim
-		"call htmlcomplete#LoadData()
+	if !exists("g:html_omni")
+		"runtime! autoload/xml/xhtml10s.vim
+		call htmlcomplete#LoadData()
 	endif
 	" }}}
 	" Tag completion {{{
@@ -580,15 +551,15 @@
 	" MM: TODO: GLOT works always the same but with some weird situation it
 	" behaves as intended in HTML but screws in PHP
 	let g:ot = opentag
-	if opentag == '' || &ft == 'php' && !has_key(g:xmldata_xhtml10s, opentag)
+	if opentag == '' || &ft == 'php' && !has_key(g:html_omni, opentag)
 		" Hack for sometimes failing GetLastOpenTag.
 		" As far as I tested fail isn't GLOT fault but problem
 		" of invalid document - not properly closed tags and other mish-mash.
 		" Also when document is empty. Return list of *all* tags.
-	    let tags = keys(g:xmldata_xhtml10s)
+	    let tags = keys(g:html_omni)
 		call filter(tags, 'v:val !~ "^vimxml"')
 	else
-		let tags = g:xmldata_xhtml10s[opentag][0]
+		let tags = g:html_omni[opentag][0]
 	endif
 	" }}}
 
@@ -600,13 +571,13 @@
 		endif
 	endfor
 	let menu = res + res2
-	if has_key(g:xmldata_xhtml10s, 'vimxmltaginfo')
+	if has_key(g:html_omni, 'vimxmltaginfo')
 		let final_menu = []
 		for i in range(len(menu))
 			let item = menu[i]
-			if has_key(g:xmldata_xhtml10s['vimxmltaginfo'], item)
-				let m_menu = g:xmldata_xhtml10s['vimxmltaginfo'][item][0]
-				let m_info = g:xmldata_xhtml10s['vimxmltaginfo'][item][1]
+			if has_key(g:html_omni['vimxmltaginfo'], item)
+				let m_menu = g:html_omni['vimxmltaginfo'][item][0]
+				let m_info = g:html_omni['vimxmltaginfo'][item][1]
 			else
 				let m_menu = ''
 				let m_info = ''
@@ -621,4 +592,27 @@
 	" }}}
   endif
 endfunction
+
+function! htmlcomplete#LoadData() " {{{
+	if !exists("g:html_omni_flavor")
+		let g:html_omni_flavor = 'xhtml10s'
+	endif
+	exe 'runtime! autoload/xml/'.g:html_omni_flavor.'.vim'
+	" This one is necessary because we don't know if
+	" g:html_omni_flavor file exists and was sourced
+	" Proper checking for files would require iterating through 'rtp'
+	" and could introduce OS dependent mess.
+	if !exists("g:xmldata_".g:html_omni_flavor)
+		let g:html_omni_flavor = 'xhtml10s'
+		runtime! autoload/xml/xhtml10s.vim
+	endif
+
+	exe 'let g:html_omni = g:xmldata_'.g:html_omni_flavor
+
+	" Free some memory
+	exe 'unlet! g:xmldata_'.g:html_omni_flavor
+
+	"call htmlcomplete#LoadData()
+endfunction
+" }}}
 " vim:set foldmethod=marker:
diff --git a/runtime/autoload/xml/xhtml10s.vim b/runtime/autoload/xml/xhtml10s.vim
index 1d15cef..2fe68cd 100644
--- a/runtime/autoload/xml/xhtml10s.vim
+++ b/runtime/autoload/xml/xhtml10s.vim
@@ -1460,9 +1460,21 @@
 \ 'style' : [[],
 \ {
 \ 'lang' : [],
-\ 'media' : [],
+\ 'media' : [
+\ 'screen',
+\ 'tty',
+\ 'tv',
+\ 'projection',
+\ 'handheld',
+\ 'print',
+\ 'braille',
+\ 'aural',
+\ 'all'
+\ ],
 \ 'title' : [],
-\ 'type' : [],
+\ 'type' : [
+\ 'text/css'
+\ ],
 \ 'xml:space' : [
 \ 'preserve'
 \ ],
@@ -3342,7 +3354,17 @@
 \ ],
 \ 'onkeydown' : [],
 \ 'onkeyup' : [],
-\ 'media' : [],
+\ 'media' : [
+\ 'screen',
+\ 'tty',
+\ 'tv',
+\ 'projection',
+\ 'handheld',
+\ 'print',
+\ 'braille',
+\ 'aural',
+\ 'all'
+\ ],
 \ 'href' : [],
 \ 'onmouseup' : [],
 \ 'id' : [],
@@ -3369,7 +3391,9 @@
 \ 'BOOL'
 \ ],
 \ 'src' : [],
-\ 'type' : [],
+\ 'type' : [
+\ 'text/javascript'
+\ ],
 \ 'charset' : [],
 \ 'xml:space' : [
 \  'preserve'