<script language="VBScript">
'   HTMYLON v.1.2 (VB)
'   Разрешается произвольная  модификация этого скрипта для
'удовлетворения  потребностей пользователя  при  соблюдении
'норм действующего законодательства.
'   Бесплатное  использование  скрипта  и  его  модификаций
'разрешается только для некоммерческих проектов.
'
'Технология HTMYLON подлежит лицензированию при использовании:
'1. на ресурсах, предоставляющих платный контент,
'2. в коммерческом программном обеспечении,
'3. для государственных нужд.

Sub ShowHTMYLONwithKey(wKeyLink)
On Error Resume Next
Dim tags, keytags, color, keycolor, catcher, key_array(), tmpString, taglen, subcolor

	set catcher = CreateObject("InternetExplorer.Application")
    catcher.Visible = false
    catcher.Silent = True    
    catcher.Navigate (wKeyLink)
    external.menuArguments.window.status = "Загрузка ключа"
    do until catcher.ReadyState = 4 
    Loop      
    
    set keytags = catcher.document.getElementsByTagName("font")  
    keydim = 0
    keyindex = 0
	for i=0 to keytags.length - 1
	keylen = len(keytags(i).innerText)
	keycolor = Right(keytags(i).color,3)
	subcolor = Left(Right(keytags(i).color,6),3)
	if keycolor = "" then keycolor = "000" end if
	if subcolor = "" then subcolor = "000"	end if
	if keytags(i).getElementsByTagName("font").length = 0 then if keylen > 0 then keydim = keydim + keylen: ReDim Preserve key_array(keydim): for j=0 to keylen - 1: key_array(keydim-keylen+j) = AscW(Right(keytags(i).innerText, keylen-j)) Xor CInt("&H" + keycolor) Xor CInt("&H" + subcolor): next: end if
	external.menuArguments.window.status = "Обработка ключа "&Int(i*100/keytags.length)&"%": 
  	next
  	
	set tags = external.menuArguments.document.getElementsByTagName("font")
	keyindex = 0
	for i=0 to tags.length - 1
	    tmpString = ""
	    taglen = len(tags(i).innerText)
		color = Right(tags(i).color,3)
		subcolor = Left(Right(tags(i).color,6),3)
	 	if color = "" then color = "000"
	 	if subcolor = "" then subcolor = "000"	
	 	if tags(i).getElementsByTagName("font").length = 0 then	if taglen > 0 then for j=0 to taglen-1: tmpCharCode = AscW(Right(tags(i).innerText, taglen-j)) Xor CInt("&H" + color) Xor CInt("&H" + subcolor) Xor key_array(keyindex): tmpString = tmpString + ChrW(tmpCharCode): keyindex = keyindex + 1 : if keyindex=keydim Then keyindex = 0: end if: next: tags(i).innerText = tmpString: end if
	external.menuArguments.window.status = "Восстановление "&Int(i*100/tags.length)&"%": 
  	next	
  	
    external.menuArguments.window.status = "Готово" 
    catcher.Quit
    Set catcher = Nothing 
end sub

Sub ShowHTMYLON()
On Error Resume Next
Dim tags, keytags, color, tmpString, taglen
	set tags = external.menuArguments.document.getElementsByTagName("font")
	for i=0 to tags.length - 1
	    tmpString = ""
	    taglen = len(tags(i).innerText)
		color = Right(tags(i).color,3)
	 	if color = "" then color = "000"
	 	if tags(i).getElementsByTagName("font").length = 0 then	If taglen > 0 then for j=0 to taglen-1: tmpCharCode = AscW(Right(tags(i).innerText, taglen-j)) Xor CInt("&H" + color): tmpString = tmpString + ChrW(tmpCharCode): next: tags(i).innerText = tmpString: end if
	external.menuArguments.window.status = "Восстановление "&Int(i*100/tags.length)&"%": 
  	next	  	
    external.menuArguments.window.status = "Готово"    
end sub

Sub OnContextMenu()
On Error Resume Next
Dim LinkEvent, LinkElement, KeyLink
	if IsNull(external.menuArguments) then 
		exit sub
	end if
	set LinkEvent = external.menuArguments.event
	set LinkElement = external.menuArguments.document.elementFromPoint(LinkEvent.clientX,LinkEvent.clientY)
	if LinkEvent.type="MenuExtUnknown" then
		set KeyLink = LinkElement
		do until TypeName(KeyLink)="HTMLAnchorElement"
			set KeyLink=KeyLink.parentElement
			if TypeName(KeyLink)="Nothing" then 
				Call ShowHTMYLONwithKey(LinkElement.href) 
				exit sub
			end if
			if TypeName(KeyLink)="HTMLBody" then 
				Call ShowHTMYLON() 
				exit sub
			end if			
		Loop
		if IsNull(KeyLink.href) then 
			Call ShowHTMYLON() 
		else 
			Call ShowHTMYLONwithKey(KeyLink.href) 
		end if		
	elseif 1=1 then
			Call ShowHTMYLON() 
	end if
end sub

call OnContextMenu()

</script>