Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/directfb-ui/imeWindow.html
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/directfb-ui/imeWindow.html	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/directfb-ui/imeWindow.html	(revision 23513)
@@ -0,0 +1,480 @@
+<!-- saved from url=(0022)http://internet.e-mail -->
+<!-- saved from url=(0022)http://internet.e-mail -->
+<!-- saved from url=(0022)http://internet.e-mail -->
+<!-- saved from url=(0022)http://internet.e-mail -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE
+ html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<!-- This is a translucent window used to display status messages.
+A JavaScript callback is used to update the status message.  -->
+<html>
+	<head>
+		<title>ime page</title>
+		<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />			
+		<script type="text/javascript">		
+			var row = 1 ;
+			var col = 0 ;
+			var keys 			= null ;
+			var bCapsLock = false;
+			var bEng			= true;
+			var bRus			= false;
+			var bGer			= false;
+			function keypress_cb(code) {
+				keyDown(code);
+			}		
+			
+			function keyDown(key){ 
+				//if(col == 16 && ((key == 'up' &&  row == 1)||(key == 'down' &&  row == 3))) return;
+				var oldCell = "" + row + col ;
+				if(key == '1') {
+					message = "1";
+					value = opera.sendPlatformMessage("key://"+message);
+				
+				} else if(key == 'left'){
+					if(--col < 0)
+						col = 15 ;
+				}else if(key == 'right') { //right
+					if(row == 1 || row == 2 || row == 3)
+					{
+					if(++col > 16)
+						col = 0;
+					}
+					else
+					{
+					if(++col > 15)
+						col = 0;
+					}
+										
+				} else if(key == 'up') { //up
+					//if(--row <=0)
+				  		//row = 33
+				  --row;
+				  if(col == 16 && row == 0)
+				  {
+				  	row = 3;
+				  }
+				  else
+				  {
+				  	if(row == 0)
+				  	{
+				  		row = 5;
+				  	}
+				  }
+
+				} else if(key == "down") { //down
+					//if(++row > 5)				
+						//row = 1;
+					++row;
+				  if(col == 16 && row == 4)
+				  {
+				  	row = 1;
+				  }
+				  else
+				  {
+						if(row > 5)
+						{
+							row = 1;
+						}
+				  }
+				} else if(key == 'enter') { //enter
+					input_char(row,col);
+				}
+
+				var cell = "" + row + col ;
+
+				console.log("==>" + row + col );
+
+				if(oldCell != cell)
+					focus_cell(oldCell,cell);
+			} 
+
+			//document.onkeydown = keyDown;
+
+			function focus_cell(oldCell,cell) {
+				console.log('-->at focus_cell' );
+					if(oldCell != null) {
+					//document.getElementById(oldCell).style.backgroundColor = "#bbbbbb";
+					document.getElementById(oldCell).style.color = "#000000";
+					if(bCapsLock == true)
+						document.getElementById("315").style.color = "#00FF00"; //caps
+					if(bEng == true)
+						document.getElementById("116").style.color = "#00FF00"; //Eng
+					else
+					{
+						if(bRus == true)
+						{
+							document.getElementById("316").style.color = "#00FF00"; //Rus
+						}
+						else
+						document.getElementById("216").style.color = "#00FF00"; //Ger
+					}
+				}
+				
+				//document.getElementById(cell).style.backgroundColor = "#FF0000";
+				document.getElementById(cell).style.color = "#FF0000";				
+				//document.getElementById(cell).focus();
+
+			}			
+
+			function input_char(row,col){			
+				var cell = "" + row + col ;	
+				var message = document.getElementById(cell).value;
+				if(message == "Eng")
+				{
+						bEng = true;
+						bRus = false;
+						bGer = false;
+						document.getElementById("216").style.color = "#000000";
+					  document.getElementById("316").style.color = "#000000";
+				}
+				if(message == "Rus")
+				{
+						bEng = false;
+						bRus = true;
+						bGer = false;
+						document.getElementById("116").style.color = "#000000";
+						document.getElementById("216").style.color = "#000000"
+				}
+				if(message == "Ger")
+				{
+						bEng = false;
+						bRus = false;
+						bGer = true;
+						document.getElementById("116").style.color = "#000000";
+						document.getElementById("316").style.color = "#000000";
+				}	
+
+				if(message == "caps")
+				{
+					if(bCapsLock == false)
+					{
+						bCapsLock = true;
+												
+					}					
+					else
+					{
+						bCapsLock = false;
+					}
+				}
+				else if(document.getElementById(cell).className.indexOf('language') != -1)
+				{
+					// Replace Chars
+					if(bEng != false)
+					{
+						for(var i=0 ;i < 82; i++)
+						{
+							inputs[i].value = keyList[0][i];
+						}
+					}
+					else
+					{
+						if(bRus != false)
+						{
+							for(var i=0 ;i < 82; i++)
+							{
+								inputs[i].value = keyList[2][i];
+							}
+						}
+						else
+						{
+							for(var i=0 ;i < 82; i++)
+							{
+								inputs[i].value = keyList[1][i];
+							}
+
+						}
+					}
+				}
+				else
+				{
+					//value = opera.sendPlatformMessage(message); 
+					if(bCapsLock == true)
+					{
+						switch(message)
+						{
+							case 'a':
+							case 'b':
+							case 'c':
+							case 'd':
+							case 'e':
+							case 'f':
+							case 'g':
+							case 'h':
+							case 'i':
+							case 'j':
+							case 'k':
+							case 'l':
+							case 'm':
+							case 'n':
+							case 'o':
+							case 'p':
+							case 'q':
+							case 'r':
+							case 's':
+							case 't':
+							case 'u':
+							case 'v':
+							case 'w':
+							case 'x':
+							case 'y':
+							case 'z':
+								message= message.toUpperCase();
+								break;
+							case 'а':
+								message= 'А';
+								break;
+							case 'б':
+								message= 'Б';
+								break;
+
+							case 'в':
+								message= 'В';
+								break;
+							case 'г':
+								message= 'Г';
+								break;
+							case 'д':
+								message= 'Д';
+								break;
+							case 'е':
+								message= 'Е';
+								break;
+							case 'ё':
+								message= 'Ё';
+								break;
+							case 'ж':
+								message= 'Ж';
+								break;
+							case 'з':
+								message= 'З';
+								break;
+							case 'и':
+								message= 'И';
+								break;
+							case 'й':
+								message= 'Й';
+								break;
+							case 'к':
+								message= 'К';
+								break;
+							case 'л':
+								message= 'Л';
+								break;
+							case 'м':
+								message= 'М';
+								break;
+							case 'н':
+								message= 'Н';
+								break;
+							case 'о':
+								message= 'О';
+								break;
+							case 'п':
+								message= 'П';
+								break;
+							case 'р':
+								message= 'Р';
+								break;
+							case 'с':
+								message= 'С';
+								break;
+							case 'т':
+								message= 'Т';
+								break;
+							case 'у':
+								message= 'У';
+								break;
+							case 'ф':
+								message= 'Ф';
+								break;
+							case 'х':
+								message= 'х';
+								break;
+							case 'ц':
+								message= 'Ц';
+								break;
+							case 'ч':
+								message= 'Ч';
+								break;
+							case 'ш':
+								message= 'Ш';
+								break;
+							case 'щ':
+								message= 'Щ';
+								break;
+							case 'ъ':
+								message= 'Ъ';
+								break;
+							case 'ы':
+								message= 'Ы';
+								break;
+							case 'ь':
+								message= 'Ь';
+								break;
+							case 'э':
+								message= 'Э';
+								break;
+							case 'ю':
+								message= 'Ю';
+								break;
+							case 'я':
+								message= 'Я';
+								break;
+								
+							case 'ä':
+								message= 'Ä';
+								break;
+							case 'ö':
+								message= 'Ö';
+								break;
+
+							case 'ü':
+								message= 'Ü';
+								break;
+							case 'г':
+								message= 'Г';
+								break;
+							case 'д':
+								message= 'Д';
+								break;
+							default:
+								break;
+						}			
+					}						
+					value = opera.sendPlatformMessage("key://"+message); 
+				}
+			}
+
+			var keyList = [
+				['www.','1','2','3','4','5','6','7','8','9','0','-','=','\\','<-','del','Eng','.com','!','@','#','$','%','^','&','*','(',')','_','+','|','->','space','Ger','.net','q','w','e','r','t','y','u','i','o','p','[',']','{','}','caps','Rus','.org','a','s','d','f','g','h','j','k','l',';',':','\'','"','~','clear','http://','z','x','c','v','b','n','m',',','.','/','<','>','?','`','enter'],
+				['www.','1','2','3','4','5','6','7','8','9','0','ß','=','\\','<-','del','Eng','.com','!','@','#','€','%','^','&','*','(',')','-','+','|','->','space','Ger','.net','q','w','e','r','t','z','u','i','o','p','ü','[',']','£','caps','Rus','.org','a','s','d','f','g','h','j','k','l','ö','ä','{','}','$','clear','http://','<','y','x','c','v','b','n','m',',','.',';','>',':','_','enter'],
+				['www.','1','2','3','4','5','6','7','8','9','0','-','=','\\','<-','del','Eng','.com','!','@','#','$','*','^','&','%','(',')','_','+','|','->','space','Ger','.net','а','б','в','г','д','е','ё','ж','з','и','й','к','{','}','caps','Rus','.org','л','м','н','о','п','р','с','т','у','ф','х','\'','"','~','clear','http://','ц','ч','ш','щ','ъ','ы','ь','э','ю','я','<','>','?','`','enter'],
+
+			];
+		
+			var inputs;
+			var flag = 0;
+			function init() {
+					focus_cell(null,"10");		
+					inputs = document.getElementsByTagName('input');
+			}
+			window.onload=function(){
+			init();
+		}		
+		</script>
+		
+		<style type="text/css">
+			input
+			{
+				#font-size: 26px;
+				font-size: 21px;
+				font-weight: bold;
+				text-align: center;
+			}
+		</style>
+	</head>
+<body style="background-color: transparent;">
+<table width="300" height="100" border="0" cellspacing="0" bgcolor="#eeeeee" style=" font-weight: bold;font-size:30px;border:1px #AAA solid;" mce_style=" font-weight: bold;font-size:30px;border:1px #AAA solid;">
+	<tr>
+		<td> <input type="button" id="10"      value='www.'> </td>
+		<td> <input type="button" id="11"      value='1'> </td>
+		<td> <input type="button" id="12"      value='2'> </td>
+		<td> <input type="button" id="13"      value='3'> </td>
+		<td> <input type="button" id="14"      value='4'> </td>
+		<td> <input type="button" id="15"      value='5'> </td>
+		<td> <input type="button" id="16"      value='6'> </td>
+		<td> <input type="button" id="17"      value='7'> </td>
+		<td> <input type="button" id="18"      value='8'> </td>
+		<td> <input type="button" id="19"      value='9'> </td><ol><li></li></ol>
+		<td> <input type="button" id="110"    value='0'> </td>
+		<td> <input type="button" id="111"    value='-'> </td>
+		<td> <input type="button" id="112"    value='='> </td>
+		<td> <input type="button" id="113"    value='\'</td>
+		<td> <input type="button" id="114"    value='<-'</td>
+		<td> <input type="button" id="115"    value='del'> </td>
+
+		<td> <input type="button" id="116"    value='Eng' class='language' style="color:#00FF00;" onclick="keypress_cb('enter')"> </td>
+	</tr>	
+
+	<tr>
+		<td> <input type="button" id="20"     value='.com'> </td>	
+		<td> <input type="button" id="21"     value='!'> </td>
+		<td> <input type="button" id="22"     value='@'> </td>
+		<td> <input type="button" id="23"     value='#'> </td>
+		<td> <input type="button" id="24"     value='$'> </td>
+		<td> <input type="button" id="25"     value='%'> </td>
+		<td> <input type="button" id="26"     value='^'> </td>
+		<td> <input type="button" id="27"     value='&'> </td>
+		<td> <input type="button" id="28"     value='*'> </td>
+		<td> <input type="button" id="29"     value='('> </td>
+		<td> <input type="button" id="210"   value=')'> </td>
+		<td> <input type="button" id="211"   value='_'> </td>
+		<td> <input type="button" id="212"   value='+'> </td>
+		<td> <input type="button" id="213"   value='|'</td>		
+		<td> <input type="button" id="214"   value='->'</td>
+		<td> <input type="button" id="215"   value='space'> </td>
+		<td> <input type="button" id="216"    value='Ger' class='language' onclick="keypress_cb('enter')"> </td>
+	</tr>
+
+	<tr>
+		<td> <input type="button" id="30"     value='.net'> </td>
+		<td> <input type="button" id="31"     value='q'> </td>
+		<td> <input type="button" id="32"     value='w'> </td>
+		<td> <input type="button" id="33"     value='e'> </td>
+		<td> <input type="button" id="34"     value='r'> </td>
+		<td> <input type="button" id="35"     value='t'> </td>
+		<td> <input type="button" id="36"     value='y'> </td>
+		<td> <input type="button" id="37"     value='u'> </td>
+		<td> <input type="button" id="38"     value='i'> </td>
+		<td> <input type="button" id="39"     value='o'> </td>
+		<td> <input type="button" id="310"   value='p'> </td>
+		<td> <input type="button" id="311"   value='['> </td>
+		<td> <input type="button" id="312"   value=']'> </td>
+		<td> <input type="button" id="313"   value='{'> </td>
+		<td> <input type="button" id="314"   value='}'> </td>
+		<td> <input type="button" id="315"   value='caps'> </td>
+		<td> <input type="button" id="316"    value='Rus' class='language' onclick="keypress_cb('enter')"> </td>
+	</tr>
+
+
+	<tr>
+		<td> <input type="button" id="40"     value='.org'> </td>
+		<td> <input type="button" id="41"     value='a'> </td>
+		<td> <input type="button" id="42"     value='s'> </td>
+		<td> <input type="button" id="43"     value='d'> </td>
+		<td> <input type="button" id="44"     value='f'> </td>
+		<td> <input type="button" id="45"     value='g'> </td>
+		<td> <input type="button" id="46"     value='h'> </td>
+		<td> <input type="button" id="47"     value='j'> </td>
+		<td> <input type="button" id="48"     value='k'> </td>
+		<td> <input type="button" id="49"     value='l'> </td>
+		<td> <input type="button" id="410"   value=';'> </td>
+		<td> <input type="button" id="411"   value=':'> </td>
+		<td> <input type="button" id="412"   value="'"> </td>
+		<td> <input type="button" id="413"   value='"'> </td>
+		<td> <input type="button" id="414"   value='~'> </td>
+		<td> <input type="button" id="415"   value='clear'> </td>		
+	</tr>
+	
+	<tr>		
+		<td> <input type="button" id="50"     value='http://'> </td>
+		<td> <input type="button" id="51"     value='z'> </td>
+		<td> <input type="button" id="52"     value='x'> </td>
+		<td> <input type="button" id="53"     value='c'> </td>
+		<td> <input type="button" id="54"     value='v'> </td>
+		<td> <input type="button" id="55"     value='b'> </td>
+		<td> <input type="button" id="56"     value='n'> </td>
+		<td> <input type="button" id="57"     value='m'> </td>	
+		<td> <input type="button" id="58"     value=','> </td>
+		<td> <input type="button" id="59"     value='.'> </td>
+		<td> <input type="button" id="510"   value='/'> </td>
+		<td> <input type="button" id="511"   value='<'> </td>
+		<td> <input type="button" id="512"   value='>'> </td>
+		<td> <input type="button" id="513"   value='?'> </td>
+		<td> <input type="button" id="514"   value='`'> </td>
+		<td> <input type="button" id="515"   value='enter'> </td>
+	</tr>
+</table>
+</body>	
+</html>
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/directfb-ui/key.js
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/directfb-ui/key.js	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/directfb-ui/key.js	(revision 23513)
@@ -0,0 +1,31 @@
+// JavaScript Document
+
+var KEY_OK=13;
+var KEY_UP=38;
+var KEY_DOWN=40;
+var KEY_LEFT=37;
+var KEY_RIGHT=39;
+var KEY_RED=112;
+var KEY_GREEN=113;
+var KEY_YELLOW=114;
+var KEY_BLUE=115;
+var KEY_WHITE=191;
+
+var KEY_DELETE=8;
+var KEY_MENU=5;
+var KEY_HOME=36;
+var KEY_EXIT=27;
+
+
+/*
+var KEY_OK=13;
+var KEY_UP=38;
+var KEY_DOWN=40;
+var KEY_LEFT=37;
+var KEY_RIGHT=39;
+var KEY_RED=49;
+var KEY_GREEN=50;
+var KEY_YELLOW=51;
+var KEY_BLUE=52;
+var KEY_WHITE=53;
+*/
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/fonts/ARPHIC.TXT
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/fonts/ARPHIC.TXT	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/fonts/ARPHIC.TXT	(revision 23513)
@@ -0,0 +1,58 @@
+ARPHIC PUBLIC LICENSE
+
+Copyright (C) 1999 Arphic Technology Co., Ltd.
+11Fl. No.168, Yung Chi Rd., Taipei, 110 Taiwan
+All rights reserved except as specified below.
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is forbidden.
+
+Preamble
+
+   The licenses for most software are designed to take away your freedom to share and change it. By contrast, the ARPHIC PUBLIC LICENSE specifically permits and encourages you to use this software, provided that you give the recipients all the rights that we gave you and make sure they can get the modifications of this software.
+
+Legal Terms
+
+0. Definitions:
+   Throughout this License, "Font" means the TrueType fonts "AR PL Mingti2L Big5", "AR PL KaitiM Big5" (BIG-5 character set) and "AR PL SungtiL GB", "AR PL KaitiM GB" (GB character set) which are originally distributed by Arphic, and the derivatives of those fonts created through any modification including modifying glyph, reordering glyph, converting format, changing font name, or adding/deleting some characters in/from glyph table.
+
+   "PL" means "Public License".
+
+   "Copyright Holder" means whoever is named in the copyright or copyrights for the Font.
+
+   "You" means the licensee, or person copying, redistributing or modifying the Font.
+
+   "Freely Available" means that you have the freedom to copy or modify the Font as well as redistribute copies of the Font under the same conditions you received, not price. If you wish, you can charge for this service.
+
+1. Copying & Distribution
+   You may copy and distribute verbatim copies of this Font in any medium, without restriction, provided that you retain this license file (ARPHICPL.TXT) unaltered in all copies.
+
+2. Modification
+   You may otherwise modify your copy of this Font in any way, including modifying glyph, reordering glyph, converting format, changing font name, or adding/deleting some characters in/from glyph table, and copy and distribute such modifications under the terms of Section 1 above, provided that the following conditions are met:
+
+   a) You must insert a prominent notice in each modified file stating how and when you changed that file.
+
+   b) You must make such modifications Freely Available as a whole to all third parties under the terms of this License, such as by offering access to copy the modifications from a designated place, or distributing the modifications on a medium customarily used for software interchange.
+
+   c) If the modified fonts normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the Font under these conditions, and telling the user how to view a copy of this License.
+
+   These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Font, and can be reasonably considered independent and separate works in themselves, then this License and its terms, do not apply to those sections when you distribute them as separate works. Therefore, mere aggregation of another work not based on the Font with the Font on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
+
+3. Condition Subsequent
+   You may not copy, modify, sublicense, or distribute the Font except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Font will automatically retroactively void your rights under this License. However, parties who have received copies or rights from you under this License will keep their licenses valid so long as such parties remain in full compliance.
+
+4. Acceptance
+   You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to copy, modify, sublicense or distribute the Font. These actions are prohibited by law if you do not accept this License. Therefore, by copying, modifying, sublicensing or distributing the Font, you indicate your acceptance of this License and all its terms and conditions.
+
+5. Automatic Receipt
+   Each time you redistribute the Font, the recipient automatically receives a license from the original licensor to copy, distribute or modify the Font subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 
+
+6. Contradiction
+   If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Font at all. For example, if a patent license would not permit royalty-free redistribution of the Font by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Font.
+
+   If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. 
+
+7. NO WARRANTY
+   BECAUSE THE FONT IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE FONT, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS OR OTHER PARTIES PROVIDE THE FONT "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE FONT IS WITH YOU. SHOULD THE FONT PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+8. DAMAGES WAIVER
+   UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING, IN NO EVENT WILL ANY COPYRIGHTT HOLDERS, OR OTHER PARTIES WHO MAY COPY, MODIFY OR REDISTRIBUTE THE FONT AS PERMITTED ABOVE, BE LIABLE TO YOU FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, INCIDENTAL, SPECIAL OR EXEMPLARY DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE FONT (INCLUDING BUT NOT LIMITED TO PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA OR PROFITS; OR BUSINESS INTERRUPTION), EVEN IF SUCH HOLDERS OR OTHER PARTIES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/fonts/BITSTREAM_VERA.TXT
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/fonts/BITSTREAM_VERA.TXT	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/fonts/BITSTREAM_VERA.TXT	(revision 23513)
@@ -0,0 +1,124 @@
+Bitstream Vera Fonts Copyright
+
+The fonts have a generous copyright, allowing derivative works (as
+long as "Bitstream" or "Vera" are not in the names), and full
+redistribution (so long as they are not *sold* by themselves). They
+can be be bundled, redistributed and sold with any software.
+
+The fonts are distributed under the following copyright:
+
+Copyright
+=========
+
+Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream
+Vera is a trademark of Bitstream, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the fonts accompanying this license ("Fonts") and associated
+documentation files (the "Font Software"), to reproduce and distribute
+the Font Software, including without limitation the rights to use,
+copy, merge, publish, distribute, and/or sell copies of the Font
+Software, and to permit persons to whom the Font Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright and trademark notices and this permission notice
+shall be included in all copies of one or more of the Font Software
+typefaces.
+
+The Font Software may be modified, altered, or added to, and in
+particular the designs of glyphs or characters in the Fonts may be
+modified and additional glyphs or characters may be added to the
+Fonts, only if the fonts are renamed to names not containing either
+the words "Bitstream" or the word "Vera".
+
+This License becomes null and void to the extent applicable to Fonts
+or Font Software that has been modified and is distributed under the
+"Bitstream Vera" names.
+
+The Font Software may be sold as part of a larger software package but
+no copy of one or more of the Font Software typefaces may be sold by
+itself.
+
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
+BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL,
+OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT
+SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
+
+Except as contained in this notice, the names of Gnome, the Gnome
+Foundation, and Bitstream Inc., shall not be used in advertising or
+otherwise to promote the sale, use or other dealings in this Font
+Software without prior written authorization from the Gnome Foundation
+or Bitstream Inc., respectively. For further information, contact:
+fonts at gnome dot org.
+
+Copyright FAQ
+=============
+
+   1. I don't understand the resale restriction... What gives?
+
+      Bitstream is giving away these fonts, but wishes to ensure its
+      competitors can't just drop the fonts as is into a font sale system
+      and sell them as is. It seems fair that if Bitstream can't make money
+      from the Bitstream Vera fonts, their competitors should not be able to
+      do so either. You can sell the fonts as part of any software package,
+      however.
+
+   2. I want to package these fonts separately for distribution and
+      sale as part of a larger software package or system.  Can I do so?
+
+      Yes. A RPM or Debian package is a "larger software package" to begin 
+      with, and you aren't selling them independently by themselves. 
+      See 1. above.
+
+   3. Are derivative works allowed?
+      Yes!
+
+   4. Can I change or add to the font(s)?
+      Yes, but you must change the name(s) of the font(s).
+
+   5. Under what terms are derivative works allowed?
+
+      You must change the name(s) of the fonts. This is to ensure the
+      quality of the fonts, both to protect Bitstream and Gnome. We want to
+      ensure that if an application has opened a font specifically of these
+      names, it gets what it expects (though of course, using fontconfig,
+      substitutions could still could have occurred during font
+      opening). You must include the Bitstream copyright. Additional
+      copyrights can be added, as per copyright law. Happy Font Hacking!
+
+   6. If I have improvements for Bitstream Vera, is it possible they might get 
+       adopted in future versions?
+
+      Yes. The contract between the Gnome Foundation and Bitstream has
+      provisions for working with Bitstream to ensure quality additions to
+      the Bitstream Vera font family. Please contact us if you have such
+      additions. Note, that in general, we will want such additions for the
+      entire family, not just a single font, and that you'll have to keep
+      both Gnome and Jim Lyles, Vera's designer, happy! To make sense to add
+      glyphs to the font, they must be stylistically in keeping with Vera's
+      design. Vera cannot become a "ransom note" font. Jim Lyles will be
+      providing a document describing the design elements used in Vera, as a
+      guide and aid for people interested in contributing to Vera.
+
+   7. I want to sell a software package that uses these fonts: Can I do so?
+
+      Sure. Bundle the fonts with your software and sell your software
+      with the fonts. That is the intent of the copyright.
+
+   8. If applications have built the names "Bitstream Vera" into them, 
+      can I override this somehow to use fonts of my choosing?
+
+      This depends on exact details of the software. Most open source
+      systems and software (e.g., Gnome, KDE, etc.) are now converting to
+      use fontconfig (see www.fontconfig.org) to handle font configuration,
+      selection and substitution; it has provisions for overriding font
+      names and subsituting alternatives. An example is provided by the
+      supplied local.conf file, which chooses the family Bitstream Vera for
+      "sans", "serif" and "monospace".  Other software (e.g., the XFree86
+      core server) has other mechanisms for font substitution.
+
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/fonts/README.TXT
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/fonts/README.TXT	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/fonts/README.TXT	(revision 23513)
@@ -0,0 +1,20 @@
+This file contain information about the licenses for the fonts included in this package.
+
+* ARPHIC.TXT contains license information for ukai.ttc and uming.ttc.
+
+* BAEKMUK.TXT contains license information for batang.ttf and gulim.ttf.
+
+* BITSTREAM_VERA.TXT contains license information for the following fonts:
+
+  - VeraBd.ttf
+  - VeraBI.ttf
+  - VeraIt.ttf
+  - VeraMoBd.ttf
+  - VeraMoBI.ttf
+  - VeraMoIt.ttf
+  - VeraMono.ttf
+  - VeraSeBd.ttf
+  - VeraSe.ttf
+  - Vera.ttf
+
+* VLGOTHIC.TXT contains license information for VL-Gothic-Regular.ttf and VL-PGothic-Regular.ttf.
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/fonts/VLGOTHIC.TXT
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/fonts/VLGOTHIC.TXT	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/fonts/VLGOTHIC.TXT	(revision 23513)
@@ -0,0 +1,49 @@
+License for VLGothic Font Family
+--------------------------------
+
+This font includes glyphs derived from M+ FONTS which is created by
+M+ FONTS PROJECT. License for M+ FONTS part is described in M+ FONTS
+PROJECT's license. See attached 'LICENSE_E.mplus'.
+
+This font also includes glyphs derived from Sazanami Gothic font which
+is created by Electronic Font Open Laboratory (/efont/). License for
+Sazanami Gothic part is described in it's license. See attached
+'README.sazanami' for original Sazanami Gothic font license.
+
+This font also includes original glyphs which is created by Daisuke
+SUZUKI and Project Vine based on M+ FONTS. Licese for VL Gothic
+original glyphs is same as M+ FONTS PROJECT's license.
+
+There is no limitation and the below description is not applied
+as for in order not to reuse as font (ex: font is embeded to documents).
+
+Copyright (c) 1990-2003 Wada Laboratory, the University of Tokyo.
+Copyright (c) 2003-2004 Electronic Font Open Laboratory (/efont/).
+Copyright (C) 2003-2009 M+ FONTS PROJECT
+Copyright (C) 2006-2009 Daisuke SUZUKI <daisuke@vinelinux.org>.
+Copyright (C) 2006-2009 Project Vine <Vine@vinelinux.org>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+3. Neither the name of the Wada Laboratory, the University of Tokyo nor
+   the names of its contributors may be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY WADA LABORATORY, THE UNIVERSITY OF TOKYO AND
+CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
+NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE LABORATORY OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/html40_entities.dtd
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/html40_entities.dtd	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/html40_entities.dtd	(revision 23513)
@@ -0,0 +1,273 @@
+<!-- Character entity set. -->
+<!ENTITY nbsp   "&#160;">
+<!ENTITY iexcl  "&#161;">
+<!ENTITY cent   "&#162;">
+<!ENTITY pound  "&#163;">
+<!ENTITY curren "&#164;">
+<!ENTITY yen    "&#165;">
+<!ENTITY brvbar "&#166;">
+<!ENTITY sect   "&#167;">
+<!ENTITY uml    "&#168;">
+<!ENTITY copy   "&#169;">
+<!ENTITY ordf   "&#170;">
+<!ENTITY laquo  "&#171;">
+<!ENTITY not    "&#172;">
+<!ENTITY shy    "&#173;">
+<!ENTITY reg    "&#174;">
+<!ENTITY macr   "&#175;">
+<!ENTITY deg    "&#176;">
+<!ENTITY plusmn "&#177;">
+<!ENTITY sup2   "&#178;">
+<!ENTITY sup3   "&#179;">
+<!ENTITY acute  "&#180;">
+<!ENTITY micro  "&#181;">
+<!ENTITY para   "&#182;">
+<!ENTITY middot "&#183;">
+<!ENTITY cedil  "&#184;">
+<!ENTITY sup1   "&#185;">
+<!ENTITY ordm   "&#186;">
+<!ENTITY raquo  "&#187;">
+<!ENTITY frac14 "&#188;">
+<!ENTITY frac12 "&#189;">
+<!ENTITY frac34 "&#190;">
+<!ENTITY iquest "&#191;">
+<!ENTITY Agrave "&#192;">
+<!ENTITY Aacute "&#193;">
+<!ENTITY Acirc  "&#194;">
+<!ENTITY Atilde "&#195;">
+<!ENTITY Auml   "&#196;">
+<!ENTITY Aring  "&#197;">
+<!ENTITY AElig  "&#198;">
+<!ENTITY Ccedil "&#199;">
+<!ENTITY Egrave "&#200;">
+<!ENTITY Eacute "&#201;">
+<!ENTITY Ecirc  "&#202;">
+<!ENTITY Euml   "&#203;">
+<!ENTITY Igrave "&#204;">
+<!ENTITY Iacute "&#205;">
+<!ENTITY Icirc  "&#206;">
+<!ENTITY Iuml   "&#207;">
+<!ENTITY ETH    "&#208;">
+<!ENTITY Ntilde "&#209;">
+<!ENTITY Ograve "&#210;">
+<!ENTITY Oacute "&#211;">
+<!ENTITY Ocirc  "&#212;">
+<!ENTITY Otilde "&#213;">
+<!ENTITY Ouml   "&#214;">
+<!ENTITY times  "&#215;">
+<!ENTITY Oslash "&#216;">
+<!ENTITY Ugrave "&#217;">
+<!ENTITY Uacute "&#218;">
+<!ENTITY Ucirc  "&#219;">
+<!ENTITY Uuml   "&#220;">
+<!ENTITY Yacute "&#221;">
+<!ENTITY THORN  "&#222;">
+<!ENTITY szlig  "&#223;">
+<!ENTITY agrave "&#224;">
+<!ENTITY aacute "&#225;">
+<!ENTITY acirc  "&#226;">
+<!ENTITY atilde "&#227;">
+<!ENTITY auml   "&#228;">
+<!ENTITY aring  "&#229;">
+<!ENTITY aelig  "&#230;">
+<!ENTITY ccedil "&#231;">
+<!ENTITY egrave "&#232;">
+<!ENTITY eacute "&#233;">
+<!ENTITY ecirc  "&#234;">
+<!ENTITY euml   "&#235;">
+<!ENTITY igrave "&#236;">
+<!ENTITY iacute "&#237;">
+<!ENTITY icirc  "&#238;">
+<!ENTITY iuml   "&#239;">
+<!ENTITY eth    "&#240;">
+<!ENTITY ntilde "&#241;">
+<!ENTITY ograve "&#242;">
+<!ENTITY oacute "&#243;">
+<!ENTITY ocirc  "&#244;">
+<!ENTITY otilde "&#245;">
+<!ENTITY ouml   "&#246;">
+<!ENTITY divide "&#247;">
+<!ENTITY oslash "&#248;">
+<!ENTITY ugrave "&#249;">
+<!ENTITY uacute "&#250;">
+<!ENTITY ucirc  "&#251;">
+<!ENTITY uuml   "&#252;">
+<!ENTITY yacute "&#253;">
+<!ENTITY thorn  "&#254;">
+<!ENTITY yuml   "&#255;">
+
+<!-- Mathematical, Greek and Symbolic characters for HTML -->
+<!-- Latin Extended-B -->
+<!ENTITY fnof     "&#402;">
+<!-- Greek -->
+<!ENTITY Alpha    "&#913;">
+<!ENTITY Beta     "&#914;">
+<!ENTITY Gamma    "&#915;">
+<!ENTITY Delta    "&#916;">
+<!ENTITY Epsilon  "&#917;">
+<!ENTITY Zeta     "&#918;">
+<!ENTITY Eta      "&#919;">
+<!ENTITY Theta    "&#920;">
+<!ENTITY Iota     "&#921;">
+<!ENTITY Kappa    "&#922;">
+<!ENTITY Lambda   "&#923;">
+<!ENTITY Mu       "&#924;">
+<!ENTITY Nu       "&#925;">
+<!ENTITY Xi       "&#926;">
+<!ENTITY Omicron  "&#927;">
+<!ENTITY Pi       "&#928;">
+<!ENTITY Rho      "&#929;">
+<!ENTITY Sigma    "&#931;">
+<!ENTITY Tau      "&#932;">
+<!ENTITY Upsilon  "&#933;">
+<!ENTITY Phi      "&#934;">
+<!ENTITY Chi      "&#935;">
+<!ENTITY Psi      "&#936;">
+<!ENTITY Omega    "&#937;">
+<!ENTITY alpha    "&#945;">
+<!ENTITY beta     "&#946;">
+<!ENTITY gamma    "&#947;">
+<!ENTITY delta    "&#948;">
+<!ENTITY epsilon  "&#949;">
+<!ENTITY zeta     "&#950;">
+<!ENTITY eta      "&#951;">
+<!ENTITY theta    "&#952;">
+<!ENTITY iota     "&#953;">
+<!ENTITY kappa    "&#954;">
+<!ENTITY lambda   "&#955;">
+<!ENTITY mu       "&#956;">
+<!ENTITY nu       "&#957;">
+<!ENTITY xi       "&#958;">
+<!ENTITY omicron  "&#959;">
+<!ENTITY pi       "&#960;">
+<!ENTITY rho      "&#961;">
+<!ENTITY sigmaf   "&#962;">
+<!ENTITY sigma    "&#963;">
+<!ENTITY tau      "&#964;">
+<!ENTITY upsilon  "&#965;">
+<!ENTITY phi      "&#966;">
+<!ENTITY chi      "&#967;">
+<!ENTITY psi      "&#968;">
+<!ENTITY omega    "&#969;">
+<!ENTITY thetasym "&#977;">
+<!ENTITY upsih    "&#978;">
+<!ENTITY piv      "&#982;">
+<!-- General Punctuation -->
+<!ENTITY bull     "&#8226;">
+<!ENTITY hellip   "&#8230;">
+<!ENTITY prime    "&#8242;">
+<!ENTITY Prime    "&#8243;">
+<!ENTITY oline    "&#8254;">
+<!ENTITY frasl    "&#8260;">
+<!-- Letterlike Symbols -->
+<!ENTITY weierp   "&#8472;">
+<!ENTITY image    "&#8465;">
+<!ENTITY real     "&#8476;">
+<!ENTITY trade    "&#8482;">
+<!ENTITY alefsym  "&#8501;">
+<!-- Arrows -->
+<!ENTITY larr     "&#8592;">
+<!ENTITY uarr     "&#8593;">
+<!ENTITY rarr     "&#8594;">
+<!ENTITY darr     "&#8595;">
+<!ENTITY harr     "&#8596;">
+<!ENTITY crarr    "&#8629;">
+<!ENTITY lArr     "&#8656;">
+<!ENTITY uArr     "&#8657;">
+<!ENTITY rArr     "&#8658;">
+<!ENTITY dArr     "&#8659;">
+<!ENTITY hArr     "&#8660;">
+<!-- Mathematical Operators -->
+<!ENTITY forall   "&#8704;">
+<!ENTITY part     "&#8706;">
+<!ENTITY exist    "&#8707;">
+<!ENTITY empty    "&#8709;">
+<!ENTITY nabla    "&#8711;">
+<!ENTITY isin     "&#8712;">
+<!ENTITY notin    "&#8713;">
+<!ENTITY ni       "&#8715;">
+<!ENTITY prod     "&#8719;">
+<!ENTITY sum      "&#8721;">
+<!ENTITY minus    "&#8722;">
+<!ENTITY lowast   "&#8727;">
+<!ENTITY radic    "&#8730;">
+<!ENTITY prop     "&#8733;">
+<!ENTITY infin    "&#8734;">
+<!ENTITY ang      "&#8736;">
+<!ENTITY and      "&#8743;">
+<!ENTITY or       "&#8744;">
+<!ENTITY cap      "&#8745;">
+<!ENTITY cup      "&#8746;">
+<!ENTITY int      "&#8747;">
+<!ENTITY there4   "&#8756;">
+<!ENTITY sim      "&#8764;">
+<!ENTITY cong     "&#8773;">
+<!ENTITY asymp    "&#8776;">
+<!ENTITY ne       "&#8800;">
+<!ENTITY equiv    "&#8801;">
+<!ENTITY le       "&#8804;">
+<!ENTITY ge       "&#8805;">
+<!ENTITY sub      "&#8834;">
+<!ENTITY sup      "&#8835;">
+<!ENTITY nsub     "&#8836;">
+<!ENTITY sube     "&#8838;">
+<!ENTITY supe     "&#8839;">
+<!ENTITY oplus    "&#8853;">
+<!ENTITY otimes   "&#8855;">
+<!ENTITY perp     "&#8869;">
+<!ENTITY sdot     "&#8901;">
+<!-- Miscellaneous Technical -->
+<!ENTITY lceil    "&#8968;">
+<!ENTITY rceil    "&#8969;">
+<!ENTITY lfloor   "&#8970;">
+<!ENTITY rfloor   "&#8971;">
+<!ENTITY lang     "&#9001;">
+<!ENTITY rang     "&#9002;">
+<!-- Geometric Shapes -->
+<!ENTITY loz      "&#9674;">
+<!-- Miscellaneous Symbols -->
+<!ENTITY spades   "&#9824;">
+<!-- black here seems to mean filled as opposed to hollow -->
+<!ENTITY clubs    "&#9827;">
+<!ENTITY hearts   "&#9829;">
+<!ENTITY diams    "&#9830;">
+
+<!-- C0 Controls and Basic Latin -->
+<!ENTITY quot    "&#34;">
+<!ENTITY amp     "&#38;">
+<!ENTITY lt      "&#60;">
+<!ENTITY gt      "&#62;">
+<!-- Latin Extended-A -->
+<!ENTITY OElig   "&#338;">
+<!ENTITY oelig   "&#339;">
+<!-- ligature is a misnomer, this is a separate character in some languages -->
+<!ENTITY Scaron  "&#352;">
+<!ENTITY scaron  "&#353;">
+<!ENTITY Yuml    "&#376;">
+<!-- Spacing Modifier Letters -->
+<!ENTITY circ    "&#710;">
+<!ENTITY tilde   "&#732;">
+<!-- General Punctuation -->
+<!ENTITY ensp    "&#8194;">
+<!ENTITY emsp    "&#8195;">
+<!ENTITY thinsp  "&#8201;">
+<!ENTITY zwnj    "&#8204;">
+<!ENTITY zwj     "&#8205;">
+<!ENTITY lrm     "&#8206;">
+<!ENTITY rlm     "&#8207;">
+<!ENTITY ndash   "&#8211;">
+<!ENTITY mdash   "&#8212;">
+<!ENTITY lsquo   "&#8216;">
+<!ENTITY rsquo   "&#8217;">
+<!ENTITY sbquo   "&#8218;">
+<!ENTITY ldquo   "&#8220;">
+<!ENTITY rdquo   "&#8221;">
+<!ENTITY bdquo   "&#8222;">
+<!ENTITY dagger  "&#8224;">
+<!ENTITY Dagger  "&#8225;">
+<!ENTITY permil  "&#8240;">
+<!ENTITY lsaquo  "&#8249;">
+<!-- lsaquo is proposed but not yet ISO standardized -->
+<!ENTITY rsaquo  "&#8250;">
+<!-- rsaquo is proposed but not yet ISO standardized -->
+<!ENTITY euro    "&#8364;">
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/images/missingplugin.svg
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/images/missingplugin.svg	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/images/missingplugin.svg	(revision 23513)
@@ -0,0 +1,10 @@
+<svg xmlns="http://www.w3.org/2000/svg"
+     xmlns:xlink="http://www.w3.org/1999/xlink"
+     viewBox="0 0 32 32">
+  <g fill="#D7D7D7">
+    <set attributeName="fill" begin="mouseover" end="mouseout" to="#999"/>
+    <path d="M1,16C1,7.72,7.71,1,16,1c8.28,0,15,6.72,15,15
+			    c0,8.29-6.72,15-15,15C7.71,31,1,24.29,1,16z"/>
+    <polygon fill="#FFFFFF" points="12,8 12,24 23,15.77"/>
+  </g>
+</svg>
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/jsplugins/jsplugins.ini
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/jsplugins/jsplugins.ini	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/jsplugins/jsplugins.ini	(revision 23513)
@@ -0,0 +1,7 @@
+# The OOIF plug-in can be tested with the Qte DEA example. Build
+# instructions for the Qte DEA example can be found in the SDK
+# documentation.
+ooif.so: CALLBACK
+#ooif.so: file, localhost, 0
+#ooif.so: http, localhost, 0
+
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/locale/english.lng
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/locale/english.lng	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/locale/english.lng	(revision 23513)
@@ -0,0 +1,577 @@
+; Opera language file version 2.0
+; Copyright © 1995-2011 Opera Software ASA. All rights reserved.
+; Created on 2011-03-21 20:14
+[Info]
+Language="en"
+LanguageName="English"
+Charset="utf-8"
+Build.Linux=3721
+Version.Linux=11.10
+DB.version=1021
+
+[Translation]
+-1081479190="Enable"
+1500047511="Disable"
+-303587263="Could not connect to remote server"
+406813980="Connection closed by remote server"
+-767243423="Repeated attempts failed to load this page completely.\n\nThere may be a problem on the server."
+-1847391312="Could not connect to remote server"
+-467236228="Could not locate remote server"
+-1504149836="Address not available from this machine"
+-1467543495="Internal communication error"
+948480566="Network not available. Contact your system administrator."
+-14659052="Invalid address"
+1420893634="Network problem"
+890657822="The server tried redirecting to an invalid address.\nPlease report this to the webmaster of the site."
+966887426="Could not connect to proxy server"
+803238461="Could not find proxy server"
+-936682827="Could not access proxy server. Server is not available"
+1943858161="Could not connect to proxy server. Access denied"
+358460907="The endpoint was not in an appropriate state"
+740291732="Open transport error"
+-1157672946="Network socket blocking"
+182377296="Network socket problems. Please check your network drivers."
+799744891="Remote server timed out. Please try again later."
+-1550530872="Network socket resource problems. Try again"
+-964370023="This Winsock implementation lacks important functionality."
+-377063689="Incorrect Winsock version"
+109608805="Internal program error."
+1118839518="The address type is unknown or unsupported"
+2075232397="No home page defined. Please define one."
+821358772="The remote server refuses to perform the request.\nThis address is not available."
+-1304259437="Address not found:"
+-1534197113="Remote server or file not found"
+692443531="The remote server lacks necessary functionality"
+324835147="Problem encountered while decoding data. Possibly due to corrupted data."
+1580841951="The HTTP request method was not accepted by the server"
+1149298043="The server was unable to send acceptable data"
+-751126418="The server timed out"
+1517647577="Conflict with existing resource on server"
+-711230064="The address is no longer available"
+758757449="HTTP content length was required"
+329914774="HTTP preconditions failed"
+-1058835823="HTTP request data was too long"
+-1079658918="The HTTP address is too long"
+-1140372240="The server did not recognize the content type"
+-616120726="The server could not send the requested part of the file"
+857450575="HTTP expectation failed"
+-1195254785="HTTP gateway failed"
+1578430811="The service is overloaded or offline. Please try again later."
+-1311914337="HTTP gateway timed out"
+1531026242="The HTTP version was not accepted"
+990404229="Payment Required"
+-740353027="Authentication failed. Content should not be trusted."
+-1145474466="Proxy authentication failed. Content should not be trusted."
+620822149="FTP server not available"
+195626167="Internal error in FTP module"
+-1924345111="Could not connect. FTP server may be too busy."
+-1848604135="User not found on FTP server"
+1189442079="Connection to this FTP server requires username and password"
+1347458739="FTP directory not found"
+677350004="File not found"
+749039349="Connection closed by remote FTP server"
+114420836="Could not open remote FTP channel"
+1341715899="Could not open file"
+-889828450="Remote server accepted the request - no content returned"
+-308415646="Access denied to this file"
+1307823342="File does not exist"
+-741209408="Could not write to file. Disk full."
+435718529="Internal cache error"
+-1783794762="Choose…"
+1915388591="The address type requires the use of a proxy server. Please specify a proxy server in Preferences."
+-1548171291="Image"
+257961784="This is a searchable index"
+729579061="Transmission stopped!"
+1655346089="Directory"
+-1886208143="Name"
+-1885966286="Type"
+-1886019317="Size"
+-1885983809="Time"
+1628598700="The address is too long."
+1037842700="Out of memory."
+906850014="Add"
+-1001150226="Save"
+837164424="Request queued for sending to %s…"
+66074078="Looking up hostname %s…"
+-1971575858="Connecting to remote host %s…"
+1773355565="Sending request to %s…"
+1021730588="Receiving data from %s…"
+-123330029="Connecting to network/modem…"
+-312841378="Searching for complete server name…"
+242456090="Setting up secure connection…"
+-289213041="Connecting to proxy…"
+94677311="Waiting (#%2) for connection to %1"
+-128287927="Completed request to %s"
+-478562659="Activated 40 second timeout. Waiting for data…"
+-1149141658="There seems to be a problem on this server.\n\nIf loading does not finish properly, please stop the request and re-submit the form."
+2096696774="Waiting for user-confirmation of cookie(s)…"
+1256965226="Waiting for DNS confirmation of cookie domain(s)…"
+-483931386="Access to this port is disabled for security reasons"
+-128069365=", this plug-in is disabled"
+1934568974="This form is being submitted via email, revealing your name and email address to the recipient. Do you want to continue?"
+-787920615="Certificate Authorities"
+1812083222="Intermediate"
+-615416248="Personal certificates"
+-609046020="Failed to connect to server. The reason may be that the encryption methods supported by the server are not enabled in the security preferences.\n\nPlease note that some encryption methods are no longer supported, and that access will not be possible until the website has been upgraded to use strong encryption."
+-987128712="Transmission failure."
+-573306081="Invalid, or non-verifiable certificate."
+2063851617="Unsupported certificate."
+912684264="The certificate has been revoked by its issuer. It is no longer valid. In the worst case it may be used by criminals for fraudulent purposes. The website owner must immediately replace the certificate."
+2039718793="The certificate has expired."
+831263304="The certificate is unknown."
+-2004784560="The certificate is valid, but permission denied."
+-598522595="An internal error occurred."
+-512986067="No acceptable SSL 2 encryption methods found."
+-1248952938="Unknown error detected."
+1948946636="Secure connection: warning (%u)"
+566511154="Secure connection: warning (%u) from server"
+-1087181122="Secure connection: fatal error (%u)"
+-25004956="Secure connection: fatal error (%u) from server."
+-2111822686="Unable to verify the website's identity (OCSP error)."
+114297709="Opera was not able to connect to the server. The server may be using the unsupported SSL 2 protocol, which is not considered safe enough for secure communication. The site owner should upgrade to TLS 1.0 or newer."
+201826749="Please enter master password"
+1101329179="Please enter the old master password"
+-1208916378="Please enter the new master password"
+1794405509="Please re-enter the new master password"
+674909923="Wrong password, please enter the correct master password"
+1551983116="Changing the master password failed."
+664671332="Please set a master password to protect your client certificates and saved passwords"
+-402560894="These are the personal certificates registered in the database."
+1050252930="These are the certificate authorities registered in the database."
+708880179="Certificate authorities certify the identity of websites. You should only install certificate authorities from sites you trust.\n\nInstall this certificate authority?"
+-574001618="A client certificate uniquely identifies you during transactions.\n\nInstall this client certificate?"
+-1995146316="You are about to send a request to this server. Continue?"
+84333047="The server's certificate did not match its hostname. Accept?"
+870472473="One of the certificates presented by the server has expired. Do you wish to accept the certificate?"
+301488599="The server requests identification in the form of a client certificate.\n\nYou may send one of the following certificates:"
+841952790="The signatures of this certificate could not be verified. While this can be caused by the issuer using the wrong method to sign the certificate, it can also be caused by attempts to modify or fake the certificate."
+1568984207="This certificate cannot be used for this purpose."
+1553324179="Install Certificate"
+1432740334="Install Certificate"
+-1705818569="Select Certificate"
+1218347377="Certificate warning"
+-883789402="Wrong certificate name"
+844278570="Certificate expired"
+-1617071296="Server certificate expired"
+-96444861="This certificate has expired. You should delete it, and install an updated certificate."
+1271662468="Security Issue"
+1008146677="The server's certificate chain is incomplete, and the signer(s) are not registered. Accept?"
+-2078780637="This page may not be secure. For details, see the security tab.\n\nYou need to approve or reject the loading of this page."
+-1090846694="Your certificate has been installed, and you can use it, but Opera could not verify it. The signer of this certificate is missing. Please install the signer's certificate if available."
+138106567="The certificate installation failed."
+2076883697="The client certificate had no matching private key in the database."
+2096450965="The certificate's chain was not ordered correctly."
+-1973969022="A different client certificate is already installed for this key. Installation failed."
+-267159947="All encryption methods are disabled in Preferences."
+1207224929="Security operations are not available."
+-1629273963="Security is disabled."
+-1089784783="The server's certificate held an invalid name expression"
+-206988917="Connection"
+-1808442172="Modulus:"
+863827172="modulus:"
+-1993303540="Exponent:"
+122085675="publicExponent:"
+1442439783="privateExponent:"
+-373290903="prime1:"
+-373290902="prime2:"
+1053948893="exponent1:"
+1053948894="exponent2:"
+1563762202="coefficient:"
+-1179958636="Unknown extension object ID "
+1184375241="Unknown signature algorithm "
+-2026063377="Certificate version"
+1787377060="Serial number"
+157557903="Not valid before"
+-907414258="Not valid after"
+-188195677="Fingerprint"
+1637190079="Public key algorithm"
+-1519010094="Signature algorithm"
+-874459112="Extensions"
+-757917242=" (Critical)"
+-1466464979="%u bit private key. Generated %s.\nURL: %s"
+1801081976="The server requested a login authentication method that is not supported."
+86761315="The proxy server requested a login authentication method that is not supported."
+90474365="This URL is not in the list of URLs that can be authenticated by the given realm.\nCannot send Authentication credentials."
+-82082389="Uploading file(s) to server"
+-1303632626="Plug-ins"
+-2050389743="History"
+-1429037863="Cached Items"
+-1068073072="(Memory)"
+-592232182="Blank page"
+-524571995="Filename"
+-299260835="Address"
+-1713924769="Size"
+1166471331="Your history list file is corrupt and will be cleared."
+-466995444="Executing JavaScript…"
+-39632401="Error"
+-1968570497="Bookmarks"
+469712059="Java security"
+2030873128="A Java applet is requesting to run with privileges which may allow it to harm your computer.\n\nYou should only accept this request if you know and trust the originating website."
+-1872720="None found"
+1356785972="Submit"
+169522595="Reset"
+-2021978484="XML parsing failed"
+44999632="The input is not valid."
+1374863234="About Opera"
+962024521="Paths"
+1557681688="Preferences"
+-33068845="Opera directory"
+92075738="Saved session"
+455019715="Plug-in path"
+1011802234="Cache"
+163333106="Third parties"
+1463797622="Opera Software is grateful to the groups and individuals above for their contributions."
+-42936756="bytes"
+1430354649="B"
+698570216="KB"
+80168480="Version"
+468601187="Build"
+1813791800="Platform"
+-1908045493="Version information"
+1523437109="System"
+-280397314="Offline mode is enabled. Cannot open\n\n%s\n\nDo you want to switch to online mode?"
+-1893261847="syntax error"
+996630135="Line:"
+67277308="Character:"
+-261225755="Security warning:\n\nYou are about to go to an address containing a username.\n\nUsername: %s \nServer: %s\n\nAre you sure you want to go to this address?"
+941300722="Date"
+941390952="From"
+-979575324="Subject"
+742328503="To"
+742327930="Cc"
+-1272983108="Bcc"
+-1634617399="Warning: While decoding this file Opera encountered errors."
+1090463264="Attempt to connect to secure server could not be completed, and automatic reconnection was not possible. Please try again."
+2000211780="Please enter the password protecting the key"
+1977455147="Please enter a password to protect the exported private key"
+1079526121="Import key and certificate"
+-1817811090="Do you want to import the private key and these attached certificate(s)?"
+1514024393="Do you want to import the private key stored in this file?"
+-1769113189="Automatic Proxy Configuration failed. \nProxy Configuration is automatically disabled for this session."
+-953386095="Frame content not displayed"
+958355689="Cannot display content. <a href="%s">Download %s.</a>"
+-1956656936="Loading of external frame source <a href="%s">%s</a> suppressed (click to view)."
+1236894590="External email frame"
+155182691="Valid to"
+-510333986="Forever"
+367751872="Organization"
+-1275015800="Newsgroups"
+299353252="Followup-To"
+-1023973383="Reply-to"
+-1398981521="Resent-From"
+-1229363551="Private Key (X)"
+-1229363550="Public Key (Y)"
+-1229363559="DSA Component P"
+-1229363558="DSA Component Q"
+-1229363568="DSA Component G"
+857434526="DH Private Key"
+-1926274908="DH Public Key"
+613488173="DH Modulus"
+613488164="DH Generator"
+60437277="Every %d minutes"
+511007177="Every %d hours"
+435767103="Every hour"
+-247100801="Every day"
+436294733="Every week"
+528418967="Every %d weeks"
+-625958927="The server's name "%1" does not match the certificate's name "%2". Somebody may be trying to eavesdrop on you."
+-1263224075="The certificate for "%1" is not valid before %2. Is the clock on your computer correct?"
+-221013334="The certificate for "%1" expired %2. The webmaster should update the certificate(s)."
+1076459478="You have asked to be warned about certificates from "%1""
+-1998870601="The certificate for "%1" is signed by the unknown Certificate Authority "%2". It is not possible to verify that this is a valid certificate."
+2104370139="The root certificate from "%1" is not known to Opera. Opera cannot decide if this certificate can be trusted."
+-1490416928="The presented certificate has an unknown Certificate Authority."
+164301828="Handshake failed due to export restrictions."
+1578580827="Handshake failed because the server does not want to accept the enabled SSL/TLS protocol versions."
+1390989995="Handshake failed because the server requires encryption methods more secure than those enabled."
+574018254="The server wants to negotiate a connection that does *not* encrypt the data, but only verifies integrity. If you continue, the data can be read by anyone, but not modified."
+1701265194="Add"
+1462527183="Remove"
+1183624700="Move up"
+2041209519="Move down"
+-341751576="Open file"
+1971097350="The server requested an ANONYMOUS connection, it is therefore impossible to verify the identity of the server. Is this a service that would normally be anonymous, and are you willing to send data to this anonymous server?"
+15694585="This site is using an outdated encryption method which is no longer classified as secure. It cannot sufficiently protect sensitive data. Do you wish to continue?"
+-1608443547="Low encryption level"
+1300921250="The number %1 is not allowed for this form. Only certain numbers are allowed for this field."
+-2132866121="The date %1 is not allowed for this form. Only certain dates are allowed for this field."
+-1125267849="Error"
+-1996452250="You tried to access the address %s, which is currently unavailable. Please make sure that the web address (URL) is correctly spelled and punctuated, then try reloading the page."
+1976505887="Make sure your Internet connection is active and check whether other applications that rely on the same connection are working."
+-371513372="Signature"
+-1845785787="Redirection Status"
+1433700170="The URL was redirected to %s. Please click the link to go there."
+1433905157="You can enable the automatic redirection in Preferences."
+-826703050="Generated by Opera."
+1976688640="Access denied"
+566351754="You have been denied access to this WML deck.\n\nYou have not reached this deck in the correct order."
+-674571725="Week"
+-548377585="Mon"
+-241569242="Tue"
+11450219="Wed"
+1634457179="Thu"
+-818947258="Fri"
+1479732404="Sat"
+-306449701="Sun"
+-1527043971="Unable to complete secure transaction"
+1581176738="Need help?"
+-1578977767="Open the <a href="http://help.opera.com/">Opera Help</a>."
+507228282="Go to <a href="http://www.opera.com/support/">Opera's online support desk</a>."
+931079982="Plug-in content"
+-245753105="You need to enable JavaScript to access this content. Press F12, select "Enable JavaScript", then reload the page."
+1996608452="Invalid URL"
+1150263994="The URL"
+1150263995="contains characters that are not valid in the location they are found."
+-695993732="contains a port number that is not in the range 1 to 65535."
+1379880234="The reason for the problem may be a mistyped URL, but the URL may also be an attempt to trick you into visiting a website which you might mistake for a site you trust."
+-1396250407="Security Information"
+1176832065="Security protocol"
+-350566025="Server Certificate"
+-2018873682="Validated Certificate"
+-2079528865="Client Certificate"
+1904202967="Validated Servername"
+1138739937="Issued to"
+1138739353="Issued By"
+-1209211918="This site specifies a level of encryption that is not secure. You have manually disabled some of the strongest encryption methods, and this may have forced the server to select the current level. We recommend that you re-enable strong encryption before proceeding. Do you wish to continue using a low encryption level?"
+-458492070="User JavaScript folder"
+-1399476641="The loading of the URL has been blocked for security reasons."
+1850176044="ltr"
+1676397738="The online certificate validation (OCSP) server reports that validation failed because of a malformed request."
+1260085234="The online certificate validation (OCSP) server reports that validation failed because of an unspecified server error."
+-1852612414="The online certificate validation (OCSP) server reports that validation failed because the server is offline, please try again later."
+-1629981425="The online certificate validation (OCSP) server reports that validation failed because the request should have been signed."
+-780013139="The online certificate validation (OCSP) server reports that validation failed because you are not authorized to validate this certificate."
+1288130594="The online certificate validation (OCSP) server reports that validation failed because of an unknown error."
+887031139="There was an error in the response returned by the online certificate validation (OCSP) server."
+1205273924="The response from the online certificate validation (OCSP) server could not be validated."
+466045243="The response from the online certificate validation (OCSP) server was too old."
+452336457="The certificate was revoked because this site is no longer in operation"
+-1035416434="The certificate was revoked because a newer certificate has been issued."
+10534282="The certificate was revoked because the site has changed owners."
+-260835684="The certificate was revoked because the Certificate Authority has been compromised, and some or all certificates issued by this authority can no longer be trusted."
+345370497="The certificate was revoked because the key associated with the certificate has been compromised, and the certificate cannot be trusted."
+83724205="Downloading data from %s"
+-1765289207="The encryption method used by the server is not considered secure."
+1375884585="The server is using a short public encryption key, which is not considered to be secure."
+1691604376="The server is using a public encryption key with a length that only provides medium security."
+-656286379="The server is using an outdated security protocol version."
+-577114886="Linked script not loaded"
+489139792="Folder Listing"
+-1725796747="This certificate was downloaded from "%1" using a connection that is not secure"
+760918586="The certificate for "%1" does not contain all the required information"
+-1748691533="Today"
+-1882227284="Yesterday"
+756908222="Earlier this week"
+353293976="Earlier this month"
+1447812616="Older"
+489069232="In memory of Geir Ivarsøy."
+48164205="Basic Authentication: Clear text"
+1677839979="Digest Authentication: Password not passed directly"
+1005433012="Refresh plug-ins"
+-1989918768="Reparse document as HTML"
+2146131313="Error:"
+-267730392="Specification:"
+559655831="None"
+579923217="Today"
+41330773="Other…"
+-606519656="Subscribe"
+1867586235="Unsubscribe"
+-1413000657="No feed items found."
+336536911="My feeds"
+-91525170="Warning"
+2061709937="Fraud Warning"
+-1267618392="Malware Warning"
+1964603636="This site has been reported as fraudulent. Exchanging sensitive or confidential information with this site could put you at risk for identity theft and/or financial fraud."
+-688118465="Opera Software strongly discourages visiting this page."
+1507570172="Visiting this page may be harmful. It has been reported for distributing malicious software."
+1638132361="Why was this page blocked?"
+-871840478="Ignore this warning"
+-1113781852="Go Back Safely"
+-761916080="Title"
+1844656495="Update frequency"
+-1197772896="Any visible images have invalid or missing ALT attributes."
+2112804961="Speed Dial"
+1587547435="Private key"
+-1527878545="Public key"
+-799556727="bits"
+1300979957="Unknown algorithm"
+1483768932="Unknown fieldname"
+998846914="<no username found>"
+-1663137106="Select a feed or group of feeds"
+79497391="Unread"
+-252529702="Flagged"
+1268480250="Search: "
+899934934="Flag"
+-1028855586="Select an article"
+1780026650="Read full article"
+-2139913099="Flag"
+-1574804067="Preview"
+-73755435="Unviewed"
+1214806617="Settings for:"
+775709190="Rename feed:"
+1532452105="Move to new group:"
+302300170="Move to existing group:"
+275891371="Maximum number of articles:"
+901088288="Maximum article age:"
+1837100739="Show images in articles:"
+-1737506987="Do you want to unsubscribe from this feed?"
+1928300466="Do you want to subscribe to this feed?"
+-776882804="The key of the certificate was encrypted using an unsupported method, possibly one that is not considered strong enough."
+-163055500="Synchronization failed"
+363383112="To use a client certificate, Opera requires your master password."
+-2130849741="Warning"
+1482324514="Continue"
+1321982641="Warning: Cross Network Request"
+2056177824="A page on the public Internet requests data from your computer. For security reasons, automatic access is blocked, but you may choose to continue."
+-1896371068="Always continue when data is requested from my computer"
+59152060="A page on the public Internet requests data from your private intranet. For security reasons, automatic access is blocked, but you may choose to continue."
+264182304="Always continue when data is requested from this server on my private intranet"
+-705984580="A page on your private intranet requests data from your computer. For security reasons, automatic access is blocked, but you may choose to continue."
+-985453792="Always continue when data is requested from my computer"
+-1748585633="Unrecognized system call failure"
+-1585966682="Failed to open file (please check with "ulimit")"
+836823855="Failed to open socket (please check with "ulimit")"
+-2074620781="Failed recv() after select() promised data"
+923753449="Unable to determine time zone"
+964609148="Unable to determine whether daylight savings time is in effect"
+1667641612="Connect to Debugger"
+-1158944752="Connected to"
+1967366640="Disconnected"
+542312162="Failed to connect to debugger at"
+1690892583="Connect"
+-936854777="Disconnect"
+1787471963="IP address"
+836864106="Port number"
+490881283="Strong warning: this feature enables remote debugging. By connecting to the indicated IP address, you give unrestricted access to your entire browser session."
+490881284="For your safety, only connect to a trusted source."
+1701877866="Loading…"
+-774317938="No information could be found for this item."
+1447367144="Minimum size(KB)"
+96911914="Maximum size(KB)"
+-1199996220="Preview all domains"
+1961651038="List all domains"
+-1239696508="Export all domains"
+393676770="Domain"
+-1324088603="URLs cached"
+-1467148756="Preview"
+2059387334="List"
+443608812="Export"
+1216321300="Please click to download and activate plug-in."
+-526494632="The website does not permit its content to be displayed in a frame. It must be displayed in a separate window."
+1117075469="Load document in a new window"
+160680189="The server does not support secure TLS renegotiation. The site owner should upgrade the server."
+2146405382="The server does not support secure TLS renegotiation. The site owner must upgrade the server."
+2033739883="Web Storage"
+1268208510="Click to expand"
+-466218915="Maximum size allowed on disk (KiB)"
+-557051538="When maximum size is exceeded"
+712883613="Ask for increase"
+-1025898561="Always allow increase"
+1921270288="Always deny increase"
+1966074650="No data found"
+1442343836="Data file path"
+99998834="Clear"
+-278939991="Local Storage"
+-1121360801="Widget Preferences"
+-1905131302="User JS Storage"
+1291446441="Do you really wish to delete all databases?"
+58899606="Do you really wish to delete all databases for this origin?"
+1192739471="This action is permanent."
+1362649529="Web Address Blocked"
+-1580091099="The address %s is blocked by the content blocker."
+1882762214="Details"
+1395393965="Description"
+-1549154288="Opera has detected that this website does not have consistent support for secure TLS renegotiation. Connections to those parts of the site lacking this support will be refused. The site owner must fix the site."
+525917858="The server initiated TLS renegotiation; it was permitted by Opera, although the server does not support secure renegotiation. The site owner should patch the server."
+-1456285402="The server initiated TLS renegotiation; it was denied by Opera, because the server does not support secure renegotiation. The site owner must patch the server. Continuing without renegotiation."
+730258692="Cancel"
+845172279="Certificate Name"
+760368433="Issuer"
+-868465547="Browser identification"
+-747386131="Enable plug-ins"
+-1112133979="Password"
+837999419="Browse for Folder"
+1832952322="January"
+2081226600="February"
+-1386201093="March"
+1486311936="April"
+218294959="May"
+-1386287270="June"
+-1386287316="July"
+1809201313="August"
+557650799="September"
+-214471082="October"
+228168582="November"
+-1527849153="December"
+-1410234807="Wrong format!"
+1357557748="Please enter a number greater than or equal to %2"
+1921772370="Please enter a number less than or equal to %2"
+1400270323="The entered text is too large! You used %1 letters and the limit is %2."
+1723208773="Please use the required format"
+1142806355="This is a required field"
+1730601711="Add files"
+1835716664="Please enter a valid email address"
+-1410232701="Please enter a valid web address"
+-296109318="The file %1 is too large. It must be %2 bytes or smaller."
+811237145="Please enter a number"
+-876707285="Form validation failed"
+1891109469="Site Specific Preferences"
+1042785402="Customize preferences for the following host(s)"
+-1247162120="The %s plug-in is not installed. \nClick on the plug-in content area for more information."
+706412336="%1 specified one or more files that could not be found"
+545849272="Proxy Server Required"
+-362105899="Security warning"
+1831556320="Information from this secure page will be submitted to a page that is not secure on %s.\n\nSubmitting sensitive information is strongly discouraged."
+1540189008="Do you want to allow local JavaScript files to control secure pages? You should only allow this if you know what your JavaScript files contain and understand the security implications."
+413993042="Too many files specified. You listed %1 and maximum is %2."
+-191213401="Click to activate and use this control"
+1364951359="Opera Link synchronizes your bookmarks, Speed Dial, and more, both on your computer and on all your devices."
+-1188819366="Authentication failed"
+766577924="Server name:"
+2001440933="Opera Link"
+-894273081="Warning: Web Address Contains a Username"
+705249907="Please Confirm"
+-646734092="Go Online"
+499627997="History"
+-939867699="Plug-Ins"
+-1680317970="About Opera"
+1950193902="Ctrl"
+-49577097="Shift"
+-591658278="Alt"
+1950536992="Meta"
+1950367970="Home"
+-591653872="End"
+-1761824677="PageUp"
+1222698990="PageDown"
+-798831522="Up"
+1950224561="Down"
+1950500612="Left"
+-50729193="Right"
+2123851594="Esc"
+-2019924306="Ins"
+2068441228="Del"
+-514501226="Backspace"
+-591637968="Tab"
+-49298427="Space"
+-65952425="Enter"
+1490680842="Accessibility Layout"
+1490680844="High Contrast (W/B)"
+1490680845="High Contrast (B/W)"
+-332511012="Alt Debugger"
+-686521710="Block Structure"
+837256235="Class and Id"
+-2051949502="Disable Breaks"
+-1902163789="Disable Floats"
+1504276433="Disable Forms"
+-2094734467="Disable Positioning"
+-1367769115="Disable Tables"
+-825542133="Fixed Table Layout"
+1576075846="Inline Structure"
+1693283863="Outline"
+922536704="Table of Contents"
+1457933711="Table Structure"
+-1337376890="Delete"
+1915001824="JavaScript"
+738733490="Javascript Alert"
+-262506072="Javascript Confirm"
+-770008264="Edit"
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/scripts/common.js
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/scripts/common.js	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/scripts/common.js	(revision 23513)
@@ -0,0 +1,170 @@
+function $( id )
+{
+	return document.getElementById( id );
+}
+HTMLElement.prototype.$ = function( name )
+{
+	return this.getElementById( id );
+}
+HTMLElement.prototype.$$ = function( name )
+{
+	return this.getElementsByTagName( name );
+}
+HTMLElement.prototype.removeChildren = function()
+{
+	while( this.firstChild )
+		this.removeChild( this.firstChild );
+}
+String.prototype.trim = function()
+{
+	return this.replace( /^\s+|\s+$/g, '' );
+}
+
+
+
+/*
+ *	sanitizerWhiteList
+ *	tags + attributes and method to validate them
+ */
+HTMLElement.prototype.sanitizerWhiteList =
+{
+	'A':
+	{
+		'HREF':function()
+		{
+			this.value = this.value.replace( /\s/g, '' );
+			return null!=this.value.match( /https?:\/\//i );
+		}
+	}
+	,'IMG':
+	{
+		'SRC':function()
+		{
+			//this.value = this.value.replace( /\s/g, '' );
+			return null!=this.value.match( /http:\/\//i );
+		}
+	}
+	,'STRONG':{}
+	,'P':{}
+	,'EM':{}
+	,'H1':{}
+	,'H2':{}
+	,'H3':{}
+	,'H4':{}
+	,'H5':{}
+	,'H6':{}
+	,'BR':{}
+
+	,'HR':{}
+	,'TABLE':{}
+	,'TR':{}
+	,'TH':{}
+	,'TD':{}
+}
+HTMLElement.prototype.sanitizerWhiteListWithoutImages =
+{
+	'A':
+	{
+		'HREF':function()
+		{
+			this.value = this.value.replace( /\s/g, '' );
+			return null!=this.value.match( /https?:\/\//i );
+		}
+	}
+	,'STRONG':{}
+	,'P':{}
+	,'EM':{}
+	,'H1':{}
+	,'H2':{}
+	,'H3':{}
+	,'H4':{}
+	,'H5':{}
+	,'H6':{}
+	,'BR':{}
+
+	,'HR':{}
+	,'TABLE':{}
+	,'TR':{}
+	,'TH':{}
+	,'TD':{}
+}
+
+
+
+/**
+ *	Prototype extension to simplify adding and sanitizing markup to an element.
+ *	arguments = some strings containing the HTML markup to sanitize and append
+ */
+HTMLElement.prototype.appendMarkup = function( whiteList )
+{
+	var hasWhiteList = 'object'==typeof(whiteList);
+
+	var	dummy = document.createElement('div');
+	dummy.innerHTML = '<hr/>'+Array.prototype.slice.call(arguments,hasWhiteList?1:0).join('')
+		.replace( /&gt;/g, '>' )
+		.replace( /&lt;/g, '<' )
+		.replace( /&amp;/g, '&' )
+		.replace( /&nbsp;/g, ' ' )
+		.replace( /&quot;/g, '"' )
+		.replace( /((\\[nr])+|[\r\n]+)/g, '<br/>' )
+		.replace( /<!\[CDATA\[(.*)\]\]>/gi, '$1' ) +'<hr/>' //before.replace( /(<!\[CDATA\[)(.*)(\]\]>)/gi, ' @ $2 @ ' )
+
+	dummy.sanitize( hasWhiteList?whiteList:null );
+
+	//	append DOM tree of dummy in this and remove the empty nodes
+	while( dummy.firstChild )
+		if( ''==dummy.firstChild.textContent.trim()
+			&& 'IMG'!=dummy.firstChild.nodeName.toUpperCase()
+			&& 'BR'	!=dummy.firstChild.nodeName.toUpperCase()
+//			&& 'HR'	!=dummy.firstChild.nodeName.toUpperCase()
+		)
+			dummy.removeChild( dummy.firstChild );
+		else
+			this.appendChild( dummy.firstChild.cloneNode( true ) ),dummy.removeChild( dummy.firstChild );
+}
+
+
+
+
+/**
+ *	Prototype extension to sanitize the attributes and HTMLElements
+ *	whiteList = { 'NODENAME_0':['attribute_0','attribute_1'] }
+ */
+HTMLElement.prototype.sanitize = function( whiteList )
+{
+	var whiteList = whiteList||this.sanitizerWhiteList;
+
+	// recurse
+	var i=0, currentNode;
+	while( currentNode=this.childNodes[i] )
+	{
+		var nodeName	= currentNode.nodeName.toUpperCase();
+		if( currentNode.nodeType!=1 )
+		{
+			// not an ELEMENT_NODE -> keep it
+			i++;
+			continue;
+		}
+		else if( 'undefined'!=typeof(whiteList[nodeName]) )
+		{
+			//	sanitize the attributes
+			for( var j=currentNode.attributes.length,attribute; attribute=currentNode.attributes[--j]; )
+				if( 'undefined'	==typeof(whiteList[nodeName][attribute.name.toUpperCase()])
+					|| false	==whiteList[nodeName][attribute.name.toUpperCase()].apply(attribute) )
+						currentNode.removeAttribute( attribute.name );
+
+			// in the nodeNamesWhiteList -> recurse
+			currentNode.sanitize( whiteList );
+			i++;
+			continue;
+		}
+
+		// not in the nodeNamesWhiteList -> push the content here and throw away the currentNode
+		while( currentNode.firstChild )
+		{
+			this.insertBefore( currentNode.firstChild.cloneNode( true ), currentNode );
+			currentNode.removeChild( currentNode.firstChild );
+		}
+		this.removeChild( currentNode );
+	}
+}
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/scripts/substance.js
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/scripts/substance.js	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/scripts/substance.js	(revision 23513)
@@ -0,0 +1,1179 @@
+var globals = {}
+
+globals.selectedStyle = 'color:#333;background:#dd7;/*border-top:1px solid #994;*/margin-top:-0px;';
+globals.forceRedraw = function(){ document.body.style.display = 'none';document.body.style.display = ''; }
+
+
+
+
+/*
+ *	feedsManager
+ */
+var	feedsManager = new function()
+{
+	var	that		= this;
+
+
+	this.FEED_STATUS =
+	{
+		STATUS_OK					:0
+		,STATUS_ABORTED				:1
+		,STATUS_REFRESH_POSTPONED	:2
+		,STATUS_NOT_MODIFIED		:3
+		,STATUS_OOM					:4
+		,STATUS_SERVER_TIMEOUT		:5
+		,STATUS_LOADING_ERROR		:6
+		,STATUS_PARSING_ERROR		:7
+
+		,0							:{type:'ok',	constant:'STATUS_OK',					text:'ok'}
+		,1							:{type:'error',	constant:'STATUS_ABORTED',				text:'aborted'}
+		,2							:{type:'ok',	constant:'STATUS_REFRESH_POSTPONED',	text:'refresh postponed'}
+		,3							:{type:'ok',	constant:'STATUS_NOT_MODIFIED',			text:'not modified'}
+		,4							:{type:'error',	constant:'STATUS_OOM',					text:'out of memory'}
+		,5							:{type:'error',	constant:'STATUS_SERVER_TIMEOUT',		text:'server time out'}
+		,6							:{type:'error',	constant:'STATUS_LOADING_ERROR',		text:'loading error'}
+		,7							:{type:'error',	constant:'STATUS_PARSING_ERROR',		text:'parsing error'}
+	}
+
+	this.FEED_ENTRY_STATUS =
+	{
+		STATUS_UNREAD				:0
+		,STATUS_READ				:1
+		,STATUS_ERROR				:2
+		,0							:{type:'ok',	constant:'STATUS_UNREAD',				text:'unread'}
+		,1							:{type:'ok',	constant:'STATUS_READ',					text:'read'}
+		,2							:{type:'error',	constant:'STATUS_ERROR',				text:'error'}
+	}
+
+	this.metaDataSeparator	= '{SEPARATOR-GUID-94803865-3691-4a26-83e6-c1f7f461bbb7}';
+
+
+
+
+
+	/*
+	 *	populateFeedsList
+	 *	[create and] populate the feeds group
+	 */
+	this.populateFeedsList = function( feed )
+	{
+		//	get feedsListUl
+		if( 'undefined'==typeof(this.feedsListUl) )
+			this.feedsListUl = $('feedsListUl');
+		if( !this.feedsListUl )
+			return false;
+
+
+		//	get	groupName & feedName
+		var	meta		= feed.userDefinedTitle.split( feedsManager.metaDataSeparator )
+			,feedName	= meta.pop()
+			,groupName	= meta.pop();
+
+		if( 0<meta.length )
+			groupName	= meta.shift();
+
+
+		//	grab|create group
+		var	groupId			= ('smartGroup_preview'==groupName?groupName:'feedsGroup_'+groupName)
+			,groupHandle	= $( groupId );
+
+
+		//	new group
+		if( null==groupHandle )
+		{
+			groupHandle		= document.createElement( 'li' )
+			var	groupA		= document.createElement( 'a' )
+				,groupUl	= document.createElement( 'ul' );
+
+			if( 'undefined'==typeof(this.settingsFormHandle) )
+				this.settingsFormHandle = $('settingsForm');
+
+			this.settingsFormHandle.moveToGroup.options[ this.settingsFormHandle.moveToGroup.options.length ] = new Option( groupName, groupName );
+
+
+			groupHandle.id	= groupId;
+			groupA.href		= '#feedEntries';
+			groupA.appendChild( document.createTextNode( groupName ) );
+			groupHandle.appendChild( groupA );
+			groupHandle.appendChild( groupUl );
+			this.feedsListUl.appendChild( groupHandle );
+		}
+
+
+		//	create feed entry in the group
+		var	groupUl			= groupHandle.lastChild
+			,feedId			= 'feed_'+ feed.id
+			,feedHandle		= $( feedId );
+
+		if( null==feedHandle )
+		{
+			feedHandle				= document.createElement( 'li' )
+			var	feedSettingsA		= document.createElement( 'a' )
+				,feedTitleA			= document.createElement( 'a' );
+
+//			if( feed.isSubscribed )
+			{
+				feedHandle.id		= feedId;
+				feedSettingsA.href	= '#settings';
+				feedSettingsA.appendChild( document.createTextNode('') );
+				feedHandle.appendChild( feedSettingsA );
+				feedHandle.appendChild( document.createTextNode('') );
+			}
+
+			feedTitleA.href		= '#feedEntries';
+				feedTitleA.appendChild( document.createTextNode( feedName ) );
+				feedTitleA.title = feedName;
+			if( ''!=feed.icon )
+				feedTitleA.style.backgroundImage = 'url('+ feed.icon +')';
+			feedHandle.appendChild( feedTitleA );
+
+			groupUl.appendChild( feedHandle );
+		}
+	}
+	/*
+	 *	handleFeedsListClick
+	 *	all things clicky in the feedsList
+	 */
+	this.handleFeedsListClick = function( event )
+	{
+		var src		= event.srcElement
+			,dst
+			,feedEntryId
+			,isInit   = 'undefined'!=typeof(this.firstFeedEntryFound);
+
+		while( null!=document && !src.hasAttribute('href') )
+			src = src.parentNode;
+
+		if( document==src )
+			return false;
+
+		dst = src.getAttribute('href');
+		while( null==src.getAttribute('id') )
+			src = src.parentNode;
+
+		feedEntryId = src.getAttribute('id');
+
+		this.populateFeedEntries( feedEntryId );
+		this.filterFeedEntries( true );
+
+
+        if( !isInit && 'undefined'!=typeof(this.firstFeedEntryFound) )
+        {
+        	var evt = document.createEvent( 'UIEvents' );
+        	evt.initUIEvent( 'click', true, true, window, 1 );
+        	$(this.firstFeedEntryFound).firstChild.nextSibling.firstChild.dispatchEvent( evt );
+        }
+
+
+		if( '#settings' == dst )
+		{
+			var	tmp  	= feedEntryId.split( '_' )
+				,type	= tmp.shift()
+				,id		= tmp.pop()
+				,feed	= opera.feeds.getFeedById( id );
+
+			if( !feed || !feed.isSubscribed )
+			{
+				event.preventDefault();
+				return false;
+			}
+
+
+			var meta		= feed.userDefinedTitle.split( this.metaDataSeparator )
+				,feedName	= meta.pop()
+				,groupName	= meta.pop()
+
+			var tmp = $('settings').$$('h1')[0];
+			tmp.title = tmp.firstChild.nodeValue = 'settings for: ' + feedName;
+			tmp.id = 'settingsHeader';
+
+
+			if( 'undefined'==typeof(this.settingsFormHandle) )
+				this.settingsFormHandle = $('settingsForm');
+
+			//	populate form
+			this.settingsFormHandle.feedName.value			= feedName;
+			this.settingsFormHandle.moveToNewGroup.value	= '';
+			this.settingsFormHandle.showImages.checked		= feed.showImages;
+
+			//	select group
+			for( var i=0;currentOption=this.settingsFormHandle.moveToGroup.options[i]; i++ )
+			{
+				currentOption.selected = currentOption.value==groupName;
+				currentOption.style.color = currentOption.selected?'#000':'#999';
+			}
+
+			//	select maxAge
+			for( var i=0;currentOption=this.settingsFormHandle.maxAge.options[i]; i++ )
+			{
+				currentOption.selected = parseFloat(currentOption.value)==(feed.maxAge||opera.feeds.maxAge);
+				currentOption.style.fontWeight = currentOption.selected?'bold':'normal';
+			}
+
+			// custom maxEntries list and repopulate maxEntries options
+			var customMaxEntries = new Array( 5,10,25,50,100 );
+			for( var i=0; i < customMaxEntries.length; i++ )
+			{
+				this.settingsFormHandle.maxEntries[i] = new Option( customMaxEntries[i] );
+			}
+
+			//	select maxEntries
+			for( var i=0;currentOption=this.settingsFormHandle.maxEntries.options[i]; i++ )
+			{
+				currentOption.selected = parseInt(currentOption.value)==(feed.maxEntries||opera.feeds.maxEntries);
+				currentOption.style.fontWeight = currentOption.selected?'bold':'normal';
+			}
+
+			//	select updateInterval
+			for( var i=0;currentOption=this.settingsFormHandle.updateInterval.options[i]; i++ )
+			{
+				currentOption.selected = parseInt(currentOption.value)==(feed.updateInterval||opera.feeds.updateInterval);
+				currentOption.style.fontWeight = currentOption.selected?'bold':'normal';
+			}
+
+		}
+
+		return false;
+	}
+	/*
+	 *	handleEntriesListClick
+	 *	all things clicky in the entriesList
+	 */
+	this.handleEntriesListClick = function( event )
+	{
+		var src		= event.srcElement
+			,feedAndEntryId;
+
+
+		while( 'TD'!=src.nodeName )
+			src = src.parentNode;
+
+		dst = src;
+		while( 'TR'!=dst.nodeName )
+			dst = dst.parentNode;
+
+		var feedAndEntryId = dst.getAttribute('id');
+
+		this.displayFeedEntry( feedAndEntryId );
+	}
+	/*
+	 *	handleEntriesControlsClick
+	 *	all things clicky in the entriesControls
+	 */
+	this.handleEntriesControlsClick = function( event )
+	{
+		var src		= event.srcElement;
+		while( src && document!=src )
+		{
+			if( src.hasAttribute('href') )
+			{
+				switch( src.getAttribute('href') )
+				{
+					case '#subscriptionToggle':
+					{
+						return !this.toggleSubscription();
+					}
+					default:
+					{
+						break;
+					}
+				}
+				return false;
+			}
+			src = src.parentNode;
+		}
+		return false;
+	}
+	/*
+	 *	handleEntryControlsClick
+	 *	all things clicky in the entryControls
+	 */
+	this.handleEntryControlsClick = function( event )
+	{
+		var src		= event.srcElement;
+		while( src && document!=src )
+		{
+			if( src.hasAttribute('href') )
+			{
+				switch( type=src.getAttribute('href') )
+				{
+					case '#feedEntryToggleFlag':
+					{
+						return !this.feedEntryToggleFlag();
+					}
+					default:
+					{
+						break;
+					}
+				}
+				return false;
+			}
+			src = src.parentNode;
+		}
+		return false;
+	}
+	/*
+	 *	handleSettingsFormSubmit
+	 */
+	this.handleSettingsFormSubmit = function( event )
+	{
+		if( 'validateSettings'==document.activeElement.id )
+		{
+			var	feed			= opera.feeds.getFeedById( this.selectedFeedIds[0] )
+				,meta			= feed.userDefinedTitle.split( this.metaDataSeparator )
+				,oldFeedName	= meta.pop()
+				,oldGroupName	= meta.pop()
+				,feedLi			= $( 'feed_'+ feed.id)
+				,feedName		= this.settingsFormHandle.feedName.value.trim()||oldFeedName
+				,groupName		= this.settingsFormHandle.moveToNewGroup.value.trim()
+									||this.settingsFormHandle.moveToGroup.options[ this.settingsFormHandle.moveToGroup.selectedIndex ].value.trim()
+
+
+
+			//	userDefinedTitle
+			feed.userDefinedTitle = [ groupName, feedName ].join( this.metaDataSeparator );
+
+			//	feedName
+			if( feedName!=oldFeedName )
+			{
+				var tmp	= $('feedEntries').$$('h1')[0]
+
+				tmp.title 								=
+				tmp.firstChild.nodeValue				=
+				feedLi.lastChild.title					=
+				feedLi.lastChild.lastChild.nodeValue	= feedName;
+			}
+
+			//	showImages
+			feed.showImages	= this.settingsFormHandle.showImages.checked;
+
+			//	maxAge
+			feed.maxAge		= parseFloat( this.settingsFormHandle.maxAge.options[ this.settingsFormHandle.maxAge.selectedIndex ].value );
+
+			//	maxEntries
+			feed.maxEntries	= parseInt( this.settingsFormHandle.maxEntries.options[ this.settingsFormHandle.maxEntries.selectedIndex ].value );
+
+			//	updateInterval
+			feed.updateInterval	= parseInt( this.settingsFormHandle.updateInterval.options[ this.settingsFormHandle.updateInterval.selectedIndex ].value );
+
+
+			//	groupName
+			if( groupName!=oldGroupName )
+			{
+				if( 1==feedLi.parentNode.children.length )
+					feedLi.parentNode.parentNode.parentNode.removeChild( feedLi.parentNode.parentNode );
+				else
+					feedLi.parentNode.removeChild( feedLi );
+
+				this.populateFeedsList( feed );
+				$('feed_'+feed.id).style = globals.selectedStyle;
+				globals.forceRedraw();
+			}
+
+		}
+
+		document.location = '#feedsList'
+		event.preventDefault();
+		return false;
+	}
+
+
+
+	/*
+	 *	feedEntryToggleFlag
+	 */
+	this.feedEntryToggleFlag = function()
+	{
+		if( 'undefined'==typeof(this.feedAndEntryId) )
+			return false;
+
+		var tmp 		= this.feedAndEntryId.split( '_' )
+			,feedEntryId= tmp.pop()
+			,feedId		= tmp.pop()
+			,feed		= opera.feeds.getFeedById( feedId )
+
+
+		if( 'undefined'==typeof(feed) )
+			return false;
+
+		for( var i=0; feedEntry=feed.entries[i]; i++ )
+		{
+			if( feedEntryId!=feedEntry.id )
+				continue;
+
+			//	toggle Flag
+			feedEntry.keep = !feedEntry.keep;
+
+			//	un|flag text
+			$('feedEntryToggleFlag').firstChild.nodeValue = feedEntry.keep?'unflag this article':'flag this article';
+
+			$(this.feedAndEntryId).firstChild.style.backgroundPosition = feedEntry.keep?'center center':'';
+
+
+			//	filter list of entries
+			this.filterFeedEntries( true );
+
+			event.preventDefault();
+			return true;
+		}
+		return false;
+
+	}
+
+
+	/*
+	 *	toggleSubscription
+	 */
+	this.toggleSubscription = function()
+	{
+		var	feed				= opera.feeds.getFeedById( this.selectedFeedIds[0] )
+			,msg				= $(feed.isSubscribed?'unsubscribeConfirm':'subscribeConfirm').firstChild.nodeValue;
+
+		if( confirm( msg[0].toUpperCase()+msg.slice(1) ) )
+		{
+			if( !feed.isSubscribed )
+			{
+				//	SUBSCRIBE -> move preview to the Misc folder, etc...
+				var feedLi	= $('feed_'+ this.selectedFeedIds[0] )
+					,feedUl	= feedLi.parentNode;
+
+				delete this.previewedFeedId;
+
+				//	subscribe
+				feed.subscribe();
+
+				//	delete feedLi
+				feedUl.removeChild( feedLi );
+
+				//	move into 'misc' ( the default folder )
+				var metaData	= feed.userDefinedTitle.split( this.metaDataSeparator );
+				metaData[0] = $('defaultGroup').firstChild.nodeValue;
+				feed.userDefinedTitle = metaData.join( this.metaDataSeparator );
+
+				this.populateFeedsList( feed );
+
+			}
+			else
+			{
+				//	UNSUBSCRIBE -> delete LI in feedsListUl
+				var feedLi	= $('feed_'+ this.selectedFeedIds[0] )
+					,feedUl	= feedLi.parentNode;
+
+				//	unsubscribe
+				feed.unSubscribe();
+
+				//	delete selectedFeedLiId
+				delete this.selectedFeedLiId;
+
+				//	find neighbourFeedLi in the current group
+				var neighbourFeedLi = null;
+
+				if( feedLi!=feedUl.lastChild )
+					neighbourFeedLi = feedLi.nextSibling;
+				else if( feedLi!=feedUl.firstChild && !neighbourFeedLi )
+					neighbourFeedLi = feedUl.firstChild;
+
+				//	delete feedLi
+				feedUl.removeChild( feedLi );
+
+				//	resort to find neighbourFeedLi in the sibling groups
+				if( 0==feedUl.children.length )
+				{
+					//	no more feed in this group
+					var feedGroupLi = feedUl;
+					while( 'li'!=feedGroupLi.nodeName.toLowerCase() )
+						feedGroupLi = feedGroupLi.parentNode;
+
+					//	find neighbourFeedLi
+					if( feedGroupLi.nextSibling )
+					{
+						//	in the nextSibling ?
+						var feedGroupSplitId	= feedGroupLi.nextSibling.id.split( '_' )
+							,type				= feedGroupSplitId.shift()
+
+						if( 'feed'==type || 'smartGroup'==type )
+							neighbourFeedLi = feedGroupLi.nextSibling;
+						else
+						{
+							tmp = feedGroupLi.nextSibling.$$('li');
+							if( tmp.length )
+								neighbourFeedLi = tmp[0];
+						}
+					}
+
+					if( !neighbourFeedLi && feedGroupLi.previousSibling )
+					{
+						//	in the previousSibling ?
+						var feedGroupSplitId	= feedGroupLi.previousSibling.id.split( '_' )
+							,type				= feedGroupSplitId.shift()
+
+						if( 'feed'==type || 'smartGroup'==type )
+							neighbourFeedLi = feedGroupLi.previousSibling;
+						else
+						{
+							tmp = feedGroupLi.previousSibling.$$('li');
+							if( tmp.length )
+								neighbourFeedLi = tmp[tmp.length-1];
+						}
+					}
+
+					//	remove feedGroupLi
+					feedGroupLi.parentNode.removeChild( feedGroupLi );
+				}
+
+
+
+				//	display the neighbour feed
+				if( neighbourFeedLi )
+				{
+					var feedEntryId = neighbourFeedLi.id;
+					this.populateFeedEntries( feedEntryId );
+					this.filterFeedEntries( true );
+				}
+
+			}
+		}
+		event.preventDefault();
+		return true;
+	}
+
+
+	/*
+	 *	displayFeedEntry
+	 */
+	this.displayFeedEntry = function( feedAndEntryId )
+	{
+		if( 'undefined'!=typeof(this.feedAndEntryId) && this.feedAndEntryId==feedAndEntryId )
+			return false;
+
+		if( 'undefined'!=typeof(this.feedAndEntryId) )
+		{
+			var	tmpNode		= $(this.feedAndEntryId)
+				,tmpDisplay	= tmpNode?tmpNode.style.display:'';
+
+			if( tmpNode )
+			{
+				tmpNode.style			= '';
+				tmpNode.style.display	= tmpDisplay
+			}
+		}
+
+		this.feedAndEntryId = feedAndEntryId;
+
+		var tmp 		= feedAndEntryId.split( '_' )
+			,feedEntryId= tmp.pop()
+			,feedId		= tmp.pop()
+			,feed		= opera.feeds.getFeedById( feedId )
+
+
+		if( 'undefined'==typeof(feed) )
+			return false;
+
+		//	highlight entry in the feedEntriesTable
+		$(this.feedAndEntryId).style = globals.selectedStyle
+		globals.forceRedraw();
+
+		if( 'undefined'==typeof(this.feedEntryContentHandle) )
+			this.feedEntryContentHandle = $('feedEntryContent')
+
+		for( var i=0; feedEntry=feed.entries[i]; i++ )
+		{
+			if( feedEntryId!=feedEntry.id )
+				continue;
+
+			if( 'undefined'==typeof(this.feedEntryHandle) )
+				this.feedEntryHandle = $('feedEntry');
+			if( this.feedEntryHandle )
+			{
+				//	display title
+				if(  'undefined'==typeof(feedEntry.sanitizedTitle) )
+				{
+					var dummy = document.createElement('div');
+					dummy.appendMarkup( {}, feedEntry.title.data );
+					feedEntry.sanitizedTitle = dummy.textContent.trim();
+				}
+				this.feedEntryHandle.$$('h1')[0].title					=
+				this.feedEntryHandle.$$('h1')[0].firstChild.nodeValue	= feedEntry.sanitizedTitle;
+				this.feedEntryHandle.$$('h1')[0].id						= 'feedEntryHeader';
+
+				//	set URI of the read full article
+				$('feedEntryReadFullArticle').href = feedEntry.uri;
+
+				//	un|flag text
+				$('feedEntryToggleFlag').firstChild.nodeValue = feedEntry.keep?'unflag this article':'flag this article';
+
+				//	temporary hide content ( to save the user's eye the incremental cleaning, and update of the content DIV )
+				this.feedEntryContentHandle.style.display = 'none';
+				$('feedEntryContent').removeChildren();
+
+				//  create a leading div for possible image to make it easier to style
+				var feedEntryImageHolder	= document.createElement('div');
+				feedEntryImageHolder.id		= 'feedEntryImageHolder';
+				$('feedEntryContent').appendChild(feedEntryImageHolder);
+
+				//	display content
+				if( feedEntry.content.isMarkup )
+				{
+					if( feed.showImages )
+						$('feedEntryContent').appendMarkup( feedEntry.content.data.trim() );
+					else
+						$('feedEntryContent').appendMarkup( document.body.sanitizerWhiteListWithoutImages, feedEntry.content.data.trim() );
+				}
+				else if( feedEntry.content.isPlainText )
+					$('feedEntryContent').appendChild( document.createTextNode( feedEntry.content.data.trim() ) );
+				else
+					$('feedEntryContent').appendChild( document.createTextNode( 'BINARY CONTENT: '+ feedEntry.content.data ) );
+
+				//  hide trailing (fake?) image (it always has article url as src which made it blank)
+				//  and relocate real image to feedEntryImageHolder for easier styling
+				if( $('feedEntryContent').$$('img').length > 1 )
+				{
+					var lastImage = this.feedEntryContentHandle.$$('img').length - 1;
+					$('feedEntryContent').$$('img')[lastImage].style = 'display: none';
+					$('feedEntryContent').firstChild.appendChild($('feedEntryContent').$$('img')[0]);
+
+					// check for invalid image
+					if ( ($('feedEntryContent').$$('img')[0].src.indexOf('.jpg') + $('feedEntryContent').$$('img')[0].src.indexOf('.jpeg') + $('feedEntryContent').$$('img')[0].src.indexOf('.gif') + $('feedEntryContent').$$('img')[0].src.indexOf('.png')) == -4) {
+						$('feedEntryContent').$$('img')[0].style.display = 'none';
+					}
+				}
+				else if ( $('feedEntryContent').$$('img').length == 1 )
+				{
+					$('feedEntryContent').$$('img')[0].style = 'display: none';
+				}
+
+				//	show the content
+				this.feedEntryContentHandle.style.display = '';
+
+				//	mark feedEntry read
+				feedEntry.status = feedsManager.FEED_ENTRY_STATUS.STATUS_READ;
+
+
+				return true;
+			}
+		}
+
+		return false;
+	}
+
+
+
+	/*
+	 *	selectFeedIdsAndFilters
+	 *	select the feed ID and filters based on the feedEntryLi
+	 */
+	this.selectFeedIdsAndFilters = function( feedEntryLiId )
+	{
+		var	tmp  	= feedEntryLiId.split( '_' )
+			,type	= tmp.shift()
+			,id		= tmp.pop()
+			,infos	= []
+
+
+		if( 'feed'==type )
+		{
+			//	feed::
+			if( 'undefined'==typeof( opera.feeds.getFeedById( id ) ) )
+				return false;
+
+			this.selectedFeedIds	= [ id ];
+			this.selectedFeedFilter	= '';
+
+
+			var feed = opera.feeds.getFeedById( id );
+			id = feed.userDefinedTitle.split( this.metaDataSeparator).pop();
+			infos.push( ''!=feed.author?feed.author:feed.uri );
+		}
+		else if( 'feedsGroup'==type )
+		{
+			//	feedsGroup::
+			this.selectedFeedIds	= [];
+			this.selectedFeedFilter	= '';
+
+			for( var i=0; i<opera.feeds.subscribedFeeds.length; i++ )
+				if( id==opera.feeds.subscribedFeeds.item( i ).userDefinedTitle.split( this.metaDataSeparator ).shift() )
+				{
+					this.selectedFeedIds.push( opera.feeds.subscribedFeeds.item( i ).id );
+					infos.push( opera.feeds.subscribedFeeds.item( i ).userDefinedTitle.split( this.metaDataSeparator).pop() );
+				}
+
+			id = id +' feeds';
+		}
+		else if( 'smartGroup'==type )
+		{
+			//	smartGroup::
+			this.selectedFeedIds	= [];
+			this.selectedFeedFilter	= id;
+			if( 'preview'==id )
+			{
+				//	TODO:	only include the unsubscribed feed
+				id = 'feeds preview';
+				feed = {author:'?!',uri:'#'}
+				infos.push( ''!=feed.author?feed.author:feed.uri );
+			}
+			else
+			{
+				infos	= ['Showing all subscribed feeds'];
+				//	all feeds, the entries will be filtered later
+				for( var i=0; i<opera.feeds.subscribedFeeds.length; i++ )
+					this.selectedFeedIds.push( opera.feeds.subscribedFeeds.item( i ).id );
+
+				id = id +' feeds';
+			}
+		}
+
+
+
+		//	en/disable filters
+		switch( this.selectedFeedFilter )
+		{
+			case 'flagged':
+			{
+				this.feedEntriesControls.unread.checked = false;
+				this.feedEntriesControls.unread.setAttribute( 'disabled', 'disabled' );
+				this.feedEntriesControls.flagged.setAttribute( 'disabled', 'disabled' );
+				this.feedEntriesControls.flagged.checked = true;
+				break;
+			}
+			case 'unviewed':
+			{
+				this.feedEntriesControls.unread.checked = true;
+				this.feedEntriesControls.unread.setAttribute( 'disabled', 'disabled' );
+				this.feedEntriesControls.flagged.setAttribute( 'disabled', 'disabled' );
+				this.feedEntriesControls.flagged.checked = false;
+				break;
+			}
+			default:
+			{
+				this.feedEntriesControls.unread.checked &= 'disabled'!=this.feedEntriesControls.unread.getAttribute('disabled');
+				this.feedEntriesControls.unread.removeAttribute( 'disabled' );
+				this.feedEntriesControls.flagged.checked &= 'disabled'!=this.feedEntriesControls.flagged.getAttribute('disabled');
+				this.feedEntriesControls.flagged.removeAttribute( 'disabled' );
+				break;
+			}
+		}
+
+
+		$('feedEntries').getElementsByTagName('h1')[0].firstChild.nodeValue	=
+		$('feedEntries').getElementsByTagName('h1')[0].title				= id;
+		$('feedEntries').getElementsByTagName('h1')[0].id					= 'feedHeader';
+
+
+		//	feed(s) infos + [un]subscribe button
+		var feedEntriesSubscriptionHandle	= $('feedEntriesSubscription')
+			,feedEntriesInfosHandle			= $('feedEntriesInfos')
+
+		if( !feedEntriesSubscriptionHandle || !feedEntriesInfosHandle )
+			return false;
+
+		feedEntriesInfosHandle.title				=
+		feedEntriesInfosHandle.firstChild.nodeValue	= infos.join( ', ' );
+		if( 1==this.selectedFeedIds.length )
+		{
+			var theFeed = opera.feeds.getFeedById( this.selectedFeedIds[0] );
+			feedEntriesSubscriptionHandle.style.visibility		= 'visible';
+			feedEntriesSubscriptionHandle.lastChild.style.display	= theFeed.isSubscribed?'':'inline';
+			feedEntriesSubscriptionHandle.firstChild.style.display	= theFeed.isSubscribed?'inline':'';
+		}
+		else
+		{
+			feedEntriesSubscriptionHandle.style.visibility		= 'hidden';
+		}
+
+		return true;
+	}
+
+
+	/*
+	 *	populateFeedEntries
+	 *	...
+	 */
+	this.populateFeedEntries = function( feedEntryLiId )
+	{
+		//	get feedEntriesTable
+		if( 'undefined'==typeof(this.feedEntriesTableBody) )
+			this.feedEntriesTableBody = $('feedEntriesTableBody');
+		if( !this.feedEntriesTableBody )
+			return false;
+
+		//	get feedEntriesControls
+		if( 'undefined'==typeof(this.feedEntriesControls) )
+			this.feedEntriesControls = $('feedEntriesControls');
+		if( !this.feedEntriesControls )
+			return false;
+
+		//	get selectedFeedLiId and clean the feedEntriesTable if necessary
+		if( 1==arguments.length )
+		{
+			if( this.selectedFeedLiId==feedEntryLiId )
+				return true;
+
+			if( 'undefined'!=typeof(this.selectedFeedLiId) )
+			{
+				$(this.selectedFeedLiId).style = '';
+			}
+
+			//	clean feedEntriesTable
+			this.feedEntriesTableBody.removeChildren();
+			this.selectedFeedLiId	= feedEntryLiId;
+			$(this.selectedFeedLiId).style = globals.selectedStyle;
+			globals.forceRedraw();
+		}
+
+
+		//	selectFeedIdsAndFilters
+		this.selectFeedIdsAndFilters( this.selectedFeedLiId );
+
+		var	yesterday	= new Date().valueOf()-1000*60*60*24;
+
+		//	go through all the selectedFeeds
+		for( var i=0; currentFeedId=this.selectedFeedIds[i]; i++ )
+		{
+		    var currentFeed = opera.feeds.getFeedById( currentFeedId );
+		    if( !currentFeed )
+		        continue;
+
+			//	go through all their feedEntries
+			for( var j=0,feedEntry; feedEntry=currentFeed.entries[j]; j++ )
+			{
+				feedEntry.publicationDateInMs = Date.parse( feedEntry.publicationDate );
+
+				if(  'undefined'==typeof(feedEntry.sanitizedTitle) )
+				{
+					var dummy = document.createElement('div');
+					dummy.appendMarkup( {}, feedEntry.title.data );
+					feedEntry.sanitizedTitle = dummy.textContent.trim();
+					delete dummy;
+				}
+
+
+
+				var	entryTr		= document.createElement('tr')
+					,tmp		= new Date(feedEntry.publicationDateInMs)
+					,entryTrId = 'item_'+('00000000000000000000000000000000'+feedEntry.publicationDateInMs).slice(-32)
+									+'_'+this.selectedFeedIds[i]
+									+'_'+feedEntry.id;
+
+				entryTr.id = entryTrId;
+				entryTr.style.display		= 'none';
+
+				//	un|read status
+				entryTr.style.fontWeight	= this.FEED_ENTRY_STATUS.STATUS_UNREAD==feedEntry.status?'bold':'normal';
+
+
+				//	flag
+				entryTr.appendChild( document.createElement('td') );
+				entryTr.lastChild.appendChild( document.createTextNode( ' ' ) );
+				entryTr.lastChild.style.backgroundPosition = feedEntry.keep?'center center':'';
+
+
+				//	title
+				entryTr.appendChild( document.createElement('td') );
+
+				entryTr.lastChild.appendChild( document.createElement('a') );
+				entryTr.lastChild.lastChild.appendChild( document.createTextNode( feedEntry.sanitizedTitle ) );
+				entryTr.lastChild.lastChild.title = feedEntry.sanitizedTitle;
+				entryTr.lastChild.lastChild.href='#feedEntry'
+
+
+				//	Date
+				entryTr.appendChild( document.createElement('td') );
+				entryTr.lastChild.appendChild( document.createTextNode( yesterday>feedEntry.publicationDateInMs?tmp.getYear()+'/'+('0'+(1+tmp.getMonth())).slice(-2)+'/'+('0'+tmp.getDate()).slice(-2):('0'+tmp.getHours()).slice(-2)+':'+('0'+tmp.getMinutes()).slice(-2) ));
+
+
+				//	insert the tr in place
+				var tmp = this.feedEntriesTableBody.firstChild
+				while( null!==tmp && tmp.id>entryTrId )
+					tmp = tmp.nextSibling;
+
+
+				if( !tmp )
+					this.feedEntriesTableBody.appendChild( entryTr );
+				else
+					this.feedEntriesTableBody.insertBefore( entryTr, tmp );
+			}
+		}
+/*
+		<tr><td>&nbsp;</td><td><a href='#feedEntry' onclick='populateFeedEntries("1.0")'>Headline 1</a></td><td>12:34</td></tr>
+*/
+		return true;
+	}
+
+
+
+	/*
+	 *	filterFeedEntries
+	 *	...
+	 */
+	this.filterFeedEntries = function( forceDisplay )
+	{
+		if( 'undefined'==typeof(this.selectedFeedLiId) )
+			return false;
+
+
+		//	filter the feed entries
+		var	flagged	= this.feedEntriesControls.flagged.checked
+			,unread	= this.feedEntriesControls.unread.checked
+			,search	= this.feedEntriesControls.search.value.trim().toLowerCase();
+
+
+		//	check if the anything changed
+		if( 'undefined'==typeof(this.feedEntriesFilters) )
+			this.feedEntriesFilters = {'flagged':!flagged,'unread':!unread,'search':'!'+search};
+
+		if( !forceDisplay
+			&& this.feedEntriesFilters.flagged	==flagged
+			&& this.feedEntriesFilters.unread	==unread
+			&& this.feedEntriesFilters.search	==search )
+			return false;
+
+		this.feedEntriesFilters.flagged	=flagged;
+		this.feedEntriesFilters.unread	=unread;
+		this.feedEntriesFilters.search	=search;
+
+
+
+		var tr			= feedEntriesTableBody.getElementsByTagName('tr')
+			,zebra		= true
+			,trMatching	= 0;
+
+
+		//	filter - go through all the selectedFeeds
+		for( trIndex=0; currentTr=tr[trIndex]; trIndex++ )
+		{
+			var	trMeta			= currentTr.id.split('_')
+				,entryId		= trMeta.pop()
+				,feedId			= trMeta.pop()
+				,isFilteredOut	= true;
+
+
+			if( -1!=('_'+this.selectedFeedIds.join('_')+'_').indexOf('_'+feedId+'_') )
+			{
+				var	currentFeed = opera.feeds.getFeedById( feedId );
+				for( var j=0; feedEntry=currentFeed.entries[j]; j++ )
+				{
+					if( entryId!=feedEntry.id )
+						continue;
+
+					var feedEntryTitle	= currentTr.firstChild.nextSibling.firstChild.title
+						,searchPosition	= feedEntryTitle.toLowerCase().indexOf(search)
+						,isFilteredOut	= ( this.FEED_ENTRY_STATUS.STATUS_ERROR==feedEntry.status )
+							||	( true==unread	&& this.FEED_ENTRY_STATUS.STATUS_UNREAD!=feedEntry.status )
+							||	( true==flagged	&& true!=feedEntry.keep )
+							||	( ''!=search && -1==searchPosition );
+
+
+					if( !isFilteredOut )
+					{
+
+						trMatching++;
+						zebra =! zebra;
+
+						var	tmp	 			= currentTr.firstChild.nextSibling.firstChild.innerHTML
+							,matchSearch	= ( ''!=search && -1!=searchPosition );
+						if( matchSearch )
+							var	feedEntryTitle = feedEntryTitle.slice( 0, searchPosition )+'<em>'+ search +'</em>'+ feedEntryTitle.slice( searchPosition+search.length );
+
+						if( tmp!=feedEntryTitle )
+						{
+							currentTr.firstChild.nextSibling.firstChild.removeChildren();
+							if( matchSearch )
+								currentTr.firstChild.nextSibling.firstChild.appendMarkup( feedEntryTitle );
+							else
+								currentTr.firstChild.nextSibling.firstChild.appendChild( document.createTextNode( tr[ trIndex ].firstChild.nextSibling.firstChild.title ) );
+						}
+
+						if( zebra )
+							currentTr.setAttribute('rel','zebra');
+						else
+							currentTr.removeAttribute('rel');
+					}
+				}
+			}
+
+
+            //  firstFeedEntryFound
+            if( !isFilteredOut && 'undefined'==typeof(this.firstFeedEntryFound) )
+                this.firstFeedEntryFound    = currentTr.id;
+
+			//	show/hide
+			var newDisplay = isFilteredOut?'none':'';
+			if( currentTr.style.display!= newDisplay )
+				currentTr.style.display = newDisplay;
+		}
+		$('noFeedEntries').style.display = trMatching?'none':'';
+/*
+		<tr><td>&nbsp;</td><td><a href='#feedEntry' onclick='populateFeedEntries("1.0")'>Headline 1</a></td><td>12:34</td></tr>
+*/
+		return true;
+	}
+
+
+
+
+
+
+
+
+
+	/*
+	 *	feedListener
+	 */
+	this.feedListener = new function()
+	{
+		/*
+		 *	feedListener.entryLoaded
+		 *	called when a FeedEntry is loaded
+		 */
+		this.entryLoaded = function( feedEntry, status )
+		{
+			if( 'error'==feedsManager.FEED_STATUS[ status ].type )
+				opera.postError( typeof(feedEntry) +' feedListener.entryLoaded event fired'+ '\n \n'+ feedsManager.FEED_STATUS[ status ].type +':'+ feedsManager.FEED_STATUS[ status ].text ) //.userDefinedTitle +' -- '+ typeof(feedEntry) );
+		}
+		/*
+		 *	feedListener.feedLoaded
+		 *	called when a Feed is loaded
+		 */
+		this.feedLoaded	= function( feed, status )
+		{
+			var message = feedsManager.FEED_STATUS[ status ].type +':'+ feedsManager.FEED_STATUS[ status ].text
+			if( 'error'==feedsManager.FEED_STATUS[ status ].type )
+				opera.postError( 'FEED LOADING ERROR: '+ message );
+			if( null==feed )
+			{
+				return false;
+			}
+
+
+
+			//	check metaData ()
+			metaData = feed.userDefinedTitle.split( that.metaDataSeparator );
+			if( 2!=metaData.length || !feed.isSubscribed)
+			{
+				var dummy = document.createElement( 'div' );
+				dummy.appendMarkup( {}, feed.title.data );
+				feed.sanitizedTitle = dummy.textContent.trim();
+
+				metaData = [ $('defaultGroup').firstChild.nodeValue, feed.sanitizedTitle ];
+				feed.userDefinedTitle = metaData.join( that.metaDataSeparator );
+			}
+			else
+			{
+				feed.sanitizedTitle = metaData[1];
+			}
+			if( !feed.isSubscribed )
+			{
+				feed.userDefinedTitle = [ 'smartGroup_preview', feed.sanitizedTitle ].join( that.metaDataSeparator );
+				that.previewedFeedId = feed.id
+			}
+
+
+
+			//	populateFeedsList
+			that.populateFeedsList( feed );
+
+		}
+		/*
+		 *	feedListener.updateFinished
+		 *	called when all the Feeds are updated
+		 */
+		this.updateFinished	= function()
+		{
+			//	go through all the subscribedFeed
+			//	update/set their metaData
+			//	populate the leist of feeds
+			for( var i=0,subscribedFeed; subscribedFeed=opera.feeds.subscribedFeeds[i]; i++ )
+				this.feedLoaded( subscribedFeed, subscribedFeed.status );
+		}
+	}
+}
+
+
+
+
+
+
+/*
+ *	initialize
+ */
+function initialize()
+{
+	//	WebFeeds module available ?
+	if( 'undefined'==typeof(opera.feeds) )
+	{
+//		alert( 'WebFeeds module not available' );
+		return false;
+	}
+
+
+	//	attach event listeners
+	$('feedsListUl').addEventListener( 'click'
+		,function(event){ return feedsManager.handleFeedsListClick.apply(feedsManager,arguments) }
+		,false );
+
+	$('feedEntryControls').addEventListener( 'click'
+		,function(event){ return feedsManager.handleEntryControlsClick.apply(feedsManager,arguments) }
+		,false );
+
+	$('feedEntriesTableBody').addEventListener( 'click'
+		,function(event){ return feedsManager.handleEntriesListClick.apply(feedsManager,arguments) }
+		,false );
+
+	$('feedEntriesControls').elements['search'].addEventListener( 'keyup'
+		,function(event){ return feedsManager.filterFeedEntries() }
+		,false );
+
+	$('feedEntries').addEventListener( 'change'
+		,function(event){ return feedsManager.filterFeedEntries() }
+		,false );
+
+	$('feedEntries').$$('div')[1].addEventListener( 'click'
+		,function(event){ return feedsManager.handleEntriesControlsClick.apply(feedsManager,arguments) }
+		,false );
+
+	$('settingsForm').addEventListener( 'submit'
+		,function(event){ return feedsManager.handleSettingsFormSubmit.apply(feedsManager,arguments) }
+		,false );
+
+
+
+
+	//	display the cached version of the feeds
+	feedsManager.feedListener.updateFinished();
+
+	//	update the feeds
+	setInterval( function(){ opera.feeds.updateFeeds( feedsManager.feedListener ); }, 1000*60*5 );
+
+	//	defaultElementDisplayed
+	var defaultElementDisplayed = document;
+	if( 0!=opera.feeds.subscribedFeeds.length )
+		defaultElementDisplayed = $( 'feed_'+ opera.feeds.subscribedFeeds[0].id ).lastChild;
+
+	//	populate/display previewed feed
+	if( 'undefined'!=typeof(feedsManager.previewedFeedId) && Infinity!=feedsManager.previewedFeedId )
+	{
+		var previewedFeed = opera.feeds.getFeedById( feedsManager.previewedFeedId );
+		previewedFeed.userDefinedTitle = previewedFeed.title.data;
+		feedsManager.feedListener.feedLoaded( previewedFeed, previewedFeed.status );
+		feedsManager.populateFeedsList( previewedFeed );
+		defaultElementDisplayed = $( 'feed_'+ feedsManager.previewedFeedId ).lastChild;
+	}
+
+
+//	if( defaultElementDisplayed!=document )
+	{
+    	var evt = document.createEvent( 'UIEvents' );
+    	evt.initUIEvent( 'click', true, true, window, 1 );
+    	defaultElementDisplayed.dispatchEvent( evt );
+    }
+
+
+
+
+
+
+	return true;
+}
+
+
+onload = initialize
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/about.css
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/about.css	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/about.css	(revision 23513)
@@ -0,0 +1,2 @@
+@import url(opera.css);
+
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/cache.css
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/cache.css	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/cache.css	(revision 23513)
@@ -0,0 +1,1 @@
+@import url(opera.css);
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/dir.css
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/dir.css	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/dir.css	(revision 23513)
@@ -0,0 +1,1 @@
+@import url(opera.css);
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/error.css
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/error.css	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/error.css	(revision 23513)
@@ -0,0 +1,85 @@
+@charset "utf-8";
+/* Stylesheet for the Opera error documents */
+/* Copyright 2009 Opera Software */
+
+@import url(opera.css);
+
+html[dir="rtl"] title {
+	left: auto;
+	right: 10px;
+}
+html[lang^="el"] title {text-transform: none;}
+title::after {
+	content: "!";
+	speak: none;
+}
+html[lang^="es"] title::before {content: "\00A1";}
+body {
+	color: inherit;
+	margin: 0;
+}
+h1 {
+	background: url(images/error.png) no-repeat ;
+	padding: 0 0 0 58px;
+	line-height: 48px;
+}
+h2 {
+	margin: 0 0 0.4em 60px;
+}
+html[dir="rtl"] h1 {
+	text-align: left;
+	padding: 20px 5em 15px 10px;
+}
+
+dl {
+	font-size: 83%;
+	margin: 10px 0;
+}
+dt {
+	font-weight: bold;
+	margin: 0 5px 0 0;
+	display: run-in;
+}
+dd {margin: 0;}
+cite { display: inline; }
+pre {
+	font-size: 90%;
+	white-space: pre-wrap;
+	line-height: 160%;
+	background-color: hsl(0,0%,98%);
+	padding: 15px;
+	margin: 20px 0;
+	border: 1px solid #ccc;
+	overflow: auto;
+	font-family: Consolas, Inconsolata, Monaco, monospace;
+}
+pre em {
+	font-style: normal;
+	padding: 2px;
+	speak: spell-out;
+}
+pre em.error {
+	color: white;
+	background-color: hsl(0,100%,40%);
+}
+
+input[type="text"] {
+	width: 50%;
+	min-width: 15em;
+}
+
+p, ul, pre, address {
+	padding: 0 0 0 60px;
+}
+
+@media print {
+	* {border: none;}
+	h2, h2+ul, head {display: none;}
+	h1 {
+		font-size: 13pt;
+		font-weight: bold;
+		page-break-before: avoid;
+		page-break-after: avoid;
+	}
+}
+
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/history.css
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/history.css	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/history.css	(revision 23513)
@@ -0,0 +1,12 @@
+@import url(opera.css);
+
+td {
+	width: 6em;
+}
+
+td+td {
+	width: auto;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	word-wrap:break-word;
+}
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/mime.css
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/mime.css	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/mime.css	(revision 23513)
@@ -0,0 +1,244 @@
+@charset "utf-8";
+/* Stylesheet for email/news/newsfeed documents */
+/* Copyright 2009 Opera Software */
+@namespace omf url(http://www.opera.com/2003/omf);
+@namespace html url(http://www.w3.org/1999/xhtml);
+div.headers {/* Remove this rule if you want CSS-styled message headers, not toolbars */
+	position: absolute;
+	top: -60000px;
+}
+div+div.headers {
+	margin: 10px 50px 0;
+	border: 1px solid hsl(0,0%,39%);
+	border-top-width: 3px;
+	position: static;
+}
+div+div.headers+div {
+	margin: 0 50px 10px;
+	border: 1px solid hsl(0,0%,39%);
+	border-width: 0 1px 3px;
+}
+* {
+	margin: 0;
+	padding: 0;
+}
+object {
+	width: -o-content-size;
+	min-width: 100%;
+        height: -o-content-size;
+	display: block;
+}
+div#qp_error {
+        font-size: 75%;
+        font-weight: bold;
+        color: hsl(0,100%,40%);
+        padding: 10px;
+}
+@media screen, projection, tv {
+	.attachments object {
+		vertical-align: middle;	
+		padding: 4px;
+		width: auto;
+		min-width: 0;
+		max-width: 98%;
+		height: auto;
+	}
+	omf|mime {
+		color: WindowText;
+		background-color: transparent;
+		display: block;
+	}
+	omf|headers {
+		font: status-bar;
+		color: ButtonText;
+		background: ThreeDFace;
+		padding: 4px;
+		border: 1px outset ThreeDFace;
+		width: 100%;
+		table-layout: fixed;
+	}
+}
+omf|headers {display: table;}
+omf|hgrp {display: table-row-group;}
+omf|hdr {display:none;}
+omf|hdr[name="date"], omf|hdr[name="from"], omf|hdr[name="to"], omf|hdr[name="cc"], omf|hdr[name="bcc"], 
+omf|hdr[name="newsgroups"], omf|hdr[name="followup-to"], omf|hdr[name="reply-to"], omf|hdr[name="subject"], 
+omf|hdr[name="organization"], omf|hdr[name="resent-from"] {display:table-row;}
+omf|n {
+	font-weight: bold;
+	vertical-align: top;
+	padding-left: 4px;
+	width: 8em;
+	display: table-cell;
+}
+omf|n:after {content: ": ";}
+omf|v {
+	vertical-align: top;
+	padding-left: 4px;
+	display: table-cell;
+}
+
+omf|body, omf|div {
+	margin: 0;
+	display: block;
+}
+omf|div.plaintext {padding: 0 8px;}
+.rtl {direction:rtl;}
+omf|p {
+	white-space: -o-pre-wrap;	
+	padding: 0;
+	margin: 0;
+	display: block;
+}
+omf|l {
+	padding: 0;	
+	margin: 0;
+	display: block;
+}
+omf|sig {
+	font-style: italic;
+	color: gray;
+}
+#flowed omf|ql {
+	padding: 0 0 0.3em 0.4em;
+	margin-left: -0.2em;
+	border-left: 2px solid;
+	display: block;
+}
+omf|ql.L0 {color: black;}
+omf|ql.L1, omf|ql.L7, omf|ql.L13, omf|ql.L19, omf|ql.L25, omf|ql.L31 {color: hsl(218,49%,43%);}
+omf|ql.L2, omf|ql.L8, omf|ql.L14, omf|ql.L20, omf|ql.L26 {color: hsl(102,61%,41%);}
+omf|ql.L3, omf|ql.L9, omf|ql.L15, omf|ql.L21, omf|ql.L27 {color: hsl(0,100%,40%);}
+omf|ql.L4, omf|ql.L10, omf|ql.L16, omf|ql.L22, omf|ql.L28 {color: hsl(16,55%,28%);}
+omf|ql.L5, omf|ql.L11, omf|ql.L17, omf|ql.L23, omf|ql.L29 {color: hsl(182,31%,39%);}
+omf|ql.L6, omf|ql.L12, omf|ql.L18, omf|ql.L24, omf|ql.L30 {color: hsl(216,7%,14%);}
+#flowed omf|ql.L0 {border-left: none;}
+#flowed omf|ql.L1, #flowed omf|ql.L7, #flowed omf|ql.L13, #flowed omf|ql.L19, #flowed omf|ql.L25, 
+	#flowed omf|ql.L31 {border-left-color: hsl(218,49%,43%);}
+#flowed omf|ql.L2, #flowed omf|ql.L8, #flowed omf|ql.L14, #flowed omf|ql.L20, #flowed omf|ql.L26 {border-left-color: hsl(102,61%,41%);}
+#flowed omf|ql.L3, #flowed omf|ql.L9, #flowed omf|ql.L15, #flowed omf|ql.L21, #flowed omf|ql.L27 {border-left-color: hsl(0,100%,40%);}
+#flowed omf|ql.L4, #flowed omf|ql.L10, #flowed omf|ql.L16, #flowed omf|ql.L22, #flowed omf|ql.L28 {border-left-color: hsl(16,55%,28%);}
+#flowed omf|ql.L5, #flowed omf|ql.L11, #flowed omf|ql.L17, #flowed omf|ql.L23, #flowed omf|ql.L29 {border-left-color: hsl(182,31%,39%);}
+#flowed omf|ql.L6, #flowed omf|ql.L12, #flowed omf|ql.L18, #flowed omf|ql.L24, #flowed omf|ql.L31 {border-left-color: hsl(216,7%,14%);}
+#flowed .flow {margin: -1em 0 1em 0;}
+#flowed omf|l {display: inline;}
+#wrapped .L1  omf|l:before {content: '> ';}
+#wrapped .L2  omf|l:before {content: '>> ';}
+#wrapped .L3  omf|l:before {content: '>>> ';}
+#wrapped .L4  omf|l:before {content: '>>>> ';}
+#wrapped .L5  omf|l:before {content: '>>>>> ';}
+#wrapped .L6  omf|l:before {content: '>>>>>> ';}
+#wrapped .L7  omf|l:before {content: '>>>>>>> ';}
+#wrapped .L8  omf|l:before {content: '>>>>>>>> ';}
+#wrapped .L9  omf|l:before {content: '>>>>>>>>> ';}
+#wrapped .L10 omf|l:before {content: '>>>>>>>>>> ';}
+#wrapped .L11 omf|l:before {content: '>>>>>>>>>>> ';}
+#wrapped .L12 omf|l:before {content: '>>>>>>>>>>>> ';}
+#wrapped .L13 omf|l:before {content: '>>>>>>>>>>>>> ';}
+#wrapped .L14 omf|l:before {content: '>>>>>>>>>>>>>> ';}
+#wrapped .L15 omf|l:before {content: '>>>>>>>>>>>>>>> ';}
+#wrapped .L16 omf|l:before {content: '>>>>>>>>>>>>>>>> ';}
+#wrapped .L17 omf|l:before {content: '>>>>>>>>>>>>>>>>> ';}
+#wrapped .L18 omf|l:before {content: '>>>>>>>>>>>>>>>>>> ';}
+#wrapped .L19 omf|l:before {content: '>>>>>>>>>>>>>>>>>>> ';}
+#wrapped .L20 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>> ';}
+#wrapped .L21 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>> ';}
+#wrapped .L22 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>>> ';}
+#wrapped .L23 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>>>> ';}
+#wrapped .L24 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>>>>> ';}
+#wrapped .L25 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>>>>>> ';}
+#wrapped .L26 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>>>>>>> ';}
+#wrapped .L27 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>>>>>>>> ';}
+#wrapped .L28 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>>>>>>>>> ';}
+#wrapped .L29 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ';}
+#wrapped .L30 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ';}
+#wrapped .L31 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ';}
+[class^="smiley"] {
+	width: -o-skin;
+	height: -o-skin;
+	display: inline-block;
+	vertical-align: middle;
+}
+.smiley-happy {content: -o-skin("Smiley Happy");}
+.smiley-unhappy {content: -o-skin("Smiley Unhappy");}
+.smiley-wink {content: -o-skin("Smiley Wink");}
+.smiley-surprised {content: -o-skin("Smiley Surprised");}
+.smiley-grin {content: -o-skin("Smiley Grin");}
+.smiley-cool {content: -o-skin("Smiley Cool");}
+.smiley-indifferent {content: -o-skin("Smiley Indifferent");}
+.smiley-cry {content: -o-skin("Smiley Cry");}
+.smiley-angry {content: -o-skin("Smiley Angry");}
+.smiley-tongue {content: -o-skin("Smiley Tongue");}
+.smiley-pacman {content: -o-skin("Smiley Pacman");}
+.attachments a {
+	font: status-bar; 
+	text-decoration: underline;
+	vertical-align: middle;
+	color: blue;
+	display: inline;
+}
+.attachments a.unknown::before {
+	content: -o-skin('Attachment Documents');
+	margin-right: 3px;
+	width: -o-skin;
+	height: -o-skin;
+	display: inline-block;
+}
+@media print {
+	div.headers {
+		padding: 0 0 2mm;
+		margin: 0 2mm 4mm;
+		border-bottom: 1px solid black;
+		position: static;
+		display: block;
+	}
+	.L1  omf|l:before {content: '> ';}
+	.L2  omf|l:before {content: '>> ';}
+	.L3  omf|l:before {content: '>>> ';}
+	.L4  omf|l:before {content: '>>>> ';}
+	.L5  omf|l:before {content: '>>>>> ';}
+	.L6  omf|l:before {content: '>>>>>> ';}
+	.L7  omf|l:before {content: '>>>>>>> ';}
+	.L8  omf|l:before {content: '>>>>>>>> ';}
+	.L9  omf|l:before {content: '>>>>>>>>> ';}
+	.L10 omf|l:before {content: '>>>>>>>>>> ';}
+	.L11 omf|l:before {content: '>>>>>>>>>>> ';}
+	.L12 omf|l:before {content: '>>>>>>>>>>>> ';}
+	.L13 omf|l:before {content: '>>>>>>>>>>>>> ';}
+	.L14 omf|l:before {content: '>>>>>>>>>>>>>> ';}
+	.L15 omf|l:before {content: '>>>>>>>>>>>>>>> ';}
+	.L16 omf|l:before {content: '>>>>>>>>>>>>>>>> ';}
+	.L17 omf|l:before {content: '>>>>>>>>>>>>>>>>> ';}
+	.L18 omf|l:before {content: '>>>>>>>>>>>>>>>>>> ';}
+	.L19 omf|l:before {content: '>>>>>>>>>>>>>>>>>>> ';}
+	.L20 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>> ';}
+	.L21 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>> ';}
+	.L22 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>>> ';}
+	.L23 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>>>> ';}
+	.L24 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>>>>> ';}
+	.L25 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>>>>>> ';}
+	.L26 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>>>>>>> ';}
+	.L27 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>>>>>>>> ';}
+	.L28 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>>>>>>>>> ';}
+	.L29 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ';}
+	.L30 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ';}
+	.L31 omf|l:before {content: '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ';}
+	omf|ql[class] {
+		color: black !important;
+		border: none !important;
+	}
+	[class^="smiley"] {
+		background-image: none;
+		width: auto;
+		height: auto;
+	}
+	img[title] {content: attr(title);}
+	object {width: 100%;}
+	.attachments a:before {
+		content: "  " counter(attachment) ". ";
+		counter-increment: attachment;
+	}
+	.attachments>a>img {display: none;}
+	.attachments object {width: auto;}
+}
+
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/opera.css
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/opera.css	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/opera.css	(revision 23513)
@@ -0,0 +1,177 @@
+@charset "utf-8";
+
+/* Shared Stylesheet for internal Opera documents */
+/* Copyright 2010 Opera Software */
+
+@media not print {
+
+html {
+	font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+	line-height: 1.4;
+	font-size: 85%;
+	background: #f8f8f8 url(images/corner.png) scroll no-repeat right bottom;
+	color: #444;
+	min-height: 100%;
+	voice-family: female;
+}
+
+html * { font-size: 100%; line-height: 1.6;  }
+
+body {
+	margin: 0 auto;
+	background: transparent url(images/opera-icon-red.png) no-repeat right top;
+	padding: 80px 25% 30px 6%;
+	text-overflow: ellipsis;
+	height: 100%;
+}
+
+dt {
+	display: block;
+	float: left;
+	width: 25%;
+	color: #999;
+	font-weight: bold;
+	margin: 0 0 0.3em 0
+}
+
+dd { 
+	color: #000;
+	margin: 0 0 0.3em 28%;
+}
+
+dd:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+a {
+	color: #0174A7;
+	font-weight: bold;
+	text-shadow: 0 1px 0 #fff;
+}
+
+a:hover {
+	color: #111;
+}
+
+h1 {
+	font-size: 250%;
+	margin: 0 0 0.2em 0;
+	line-height: 0.9;
+	text-shadow: 0 1px 0 #fff;
+	color: #cc0f16;
+	letter-spacing: -1px;
+}
+
+h2 {
+	font-size: 120%;
+	margin: 0 0 0.4em 0;
+	font-weight: bold;
+	color: #333;
+	border-bottom: 1px solid #ddd;
+}
+
+input {
+	vertical-align: middle;
+	box-sizing: border-box; 
+}
+
+cite {
+	font-style: normal;
+	margin: 0;
+	color: #999;
+	display: block;
+	text-overflow: ellipsis;
+	overflow: hidden;
+}
+
+ins {
+	text-decoration: none;
+	font-weight: bold;
+}
+
+dl,ul,ol  {
+	margin: 0 0 1em 0;
+	padding: 0;
+}
+
+li {
+	margin: 0 0 0.3em 0;
+}
+
+ul li {
+	padding: 0 0 0 20px;
+	list-style-type: none;
+	background: url(images/bullet.png) no-repeat 0 0.3em;
+}
+
+blockquote {
+	border-left: 5px solid #f1f1f1;
+	margin: 0;
+	padding: 0 0 0 1.5em;
+}
+
+address {
+	font-style: normal;
+	color: #666;
+	padding: 0;
+}
+
+table {
+	width: 100%;
+	margin: 0 0 15px 0;
+	border-collapse: collapse;
+}
+
+tr:nth-child(even) { background: rgba(0,0,0,0.03); }
+
+td {
+	padding: 0.2em 1em 0.2em 0;
+	color: #666;
+	vertical-align: top; 
+}
+
+th {
+	text-align: left;
+	width: 230px;
+	font-weight: bold;
+	color: #999;
+	padding: 4px 6px 4px 0;
+	vertical-align: top;
+	border-bottom: 1px solid #ccc;
+}
+
+html[dir="rtl"] * { text-align: right; }
+
+input[type="number"] { padding: 0.1em;}
+
+}
+
+/* Text Sizing */
+
+@media tv, handheld {html {font-size: 150%;}}
+@media screen and (max-width: 250px), projection and (max-width: 250px), tv and (max-width: 250px), handheld and (max-width: 250px) {
+	h1 {font-size: 83%;}
+}
+
+/* make table cells full width when panel is too narrow */
+@media screen and (max-width: 400px), projection and (max-width: 400px), tv and (max-width: 400px) {
+
+	body {
+		background-image: none;
+		padding: 80px 6% 30px 6%;
+	}
+
+	th, td, tr, table {
+		display: block;
+		width: 98%;
+	}
+	
+	td, th { padding: 0 6px 0 0}
+	tr { margin: 8px 0;}
+		
+	dt { float: none; width: 100%; }
+	dd { margin: 0; }
+}
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/plugins.css
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/plugins.css	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/plugins.css	(revision 23513)
@@ -0,0 +1,125 @@
+@import url(opera.css);
+
+/* Plug-in container */
+fieldset {
+	border: 1px solid transparent;
+	margin: 5px 0 12px 0;
+	padding: 0;
+	border-radius: 0 0 6px 6px;
+}
+
+fieldset > div {
+	padding: 5px 5px 4px 5px;
+}
+
+fieldset * {
+	-o-transition: color .2s ease-in;
+}
+
+/* Gray out when plugins are disabled, either globally or individually */
+body#disabled fieldset *, fieldset.disabled * {
+	color: #aaa;
+}
+
+/* Plug-in name */
+legend {
+	font-size: 110%;
+	font-weight: bold;
+	box-sizing: border-box;
+	color: #333;
+	width: 100%;
+	padding: 0 10px 0 20px;
+	line-height: 1.7;
+	text-shadow: 0 1px 0 rgba(255,255,255,0.5);
+	background: url(images/header.png) no-repeat left center;
+	border: 1px solid #ccc;
+	border-radius: 6px;
+	cursor: pointer;
+}
+
+/* Plug-in version */
+legend span {
+	color: #777;
+}
+
+/* Link for toggling plug-in */
+legend a {
+	color: #0174A7 !important;
+	float: right;
+}
+
+/* Hiding toggle link when plugins disabled globally */
+body#plugins-disabled legend a {
+	display: none;
+}
+
+legend.expanded {
+	background: url(images/header-expanded.png) no-repeat left center;
+}
+
+legend.expanded + div div.mime {
+	opacity: 1;
+}
+
+label {
+	display: block;
+	padding: 1px 3px;
+	background: #f1f1f1;
+	border-radius: 6px;
+	border: 1px solid #ddd;
+}
+
+label:hover {
+	background: #999;
+	color: #fff;
+	border: 1px solid #666;
+}
+
+/* Mime type global toggle */
+p#details label {
+	float: right;
+	width: 200px;
+	text-align: center;
+}
+
+/* First plugin */
+#plug_0 {
+	clear: both;
+}
+
+div.mime {
+	height: 0;
+	opacity: 0;
+	margin: 5px;
+	overflow: hidden;
+	-o-transition: height .2s, opacity .2s;
+}
+
+table {
+	margin: 0;
+}
+
+td {
+	width: 40%;
+}
+
+td+td {
+	width: auto;
+}
+
+td+td+td {
+	text-align: right;
+}
+
+/* make table cells full width when panel is too narrow */
+@media screen and (max-width: 400px), projection and (max-width: 400px), tv and (max-width: 400px) {
+
+	th, td, tr, table {
+		width: 98%;
+	}
+
+	p#details label {
+		width: auto;
+	}
+
+}
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/speeddial.css
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/speeddial.css	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/speeddial.css	(revision 23513)
@@ -0,0 +1,195 @@
+@charset "utf-8";
+/* Stylesheet for the Opera speed dials */
+/* Copyright 2009 Opera Software */
+@media tv {html {font-size: 150%;}}
+@media screen, projection, tv, speech {
+html {
+	font-family: sans-serif;
+	font-size: 100%;
+	color: hsl(0,0%,22%);
+	background-color: hsl(0,0%,100%);
+	margin: 0 auto 10px;
+	border-width: 0 1px;
+	voice-family: female;
+	display: table;
+	vertical-align: middle;
+	height: 100%;
+	width: 100%;
+	overflow: hidden;
+}
+body {
+	display: table-cell;
+	vertical-align: middle;
+	text-align: center;
+	color: inherit;
+	background-color: hsl(0,0%,100%);
+	padding: 0;
+	margin: 0;
+	height: 100%;
+}
+table {
+    margin: 0 auto;
+    border-spacing: 5px;
+    padding: 0;
+	width: 80%;
+	height: 85%;
+	max-width: 794px;
+	max-height: 596px;
+}
+td {
+    width: 33%;
+    height: 33%;
+	max-width: 256px;
+	max-height: 192px;
+	padding: 0;
+}
+.full {
+	width: 100%;
+	height: 100%;
+	max-width: 256px;
+	max-height: 192px;
+	position: relative;
+	top: 0;
+	left: 0;
+	border: 1px solid rgb(200, 200, 200);
+	background: rgb(252, 252, 252);
+}
+.empty {
+	width: 100%;
+	height: 100%;
+	max-width: 256px;
+	max-height: 192px;
+	position: relative;
+	border: 1px solid rgb(200, 200, 200);
+	background: rgb(252, 252, 252);
+	border-spacing: 0;
+}
+.empty:hover, .full:hover {
+	border: thin solid rgb(170, 170, 170);
+	background: rgb(252, 252, 247);
+}
+.thumbnail {
+	width: 100%;
+	height: 100%;
+	max-width: 256px;
+	max-height: 192px;
+	position: absolute;
+}
+.thumbnail-cont {
+
+}
+.drag {
+	background-color: white;
+	opacity: .65;
+	left: 0;
+	right: 0;
+	border: thin solid grey;
+	overflow: hidden;
+}
+.index-small, .index-big, .text-big 
+{
+	color: hsl(0,0%,70%);
+}
+.index-small {	
+	position: absolute;
+	top: 0px;
+	left: 0px;
+	font-size: larger;
+	width: 25px;
+	height: 24px;
+	letter-spacing: 2px;
+	padding-top: 1px;
+	background-image: url('images/speeddial-index-bg.png');
+	z-index: 2;
+}
+.index-big {
+	font-size: 35px;
+	height: 0px;
+	width: 100%;
+	position: relative;
+	top: 50%;
+	margin-top: -40px;
+}
+.text-big {
+	position: absolute;
+	left: 0;
+	bottom: 0;
+	right: 0;
+	height: 50%;
+}
+.reset {
+	position: absolute;
+	top: 0px;
+	right: 0px;
+	background-image: url('images/speeddial-close.png');
+	width: 25px;
+	height: 25px;	
+}
+.reset:hover {
+	background-image: url('images/speeddial-close-hover.png');
+}
+.title-small {
+	position: absolute;
+	bottom: 0px;
+	width: 100%;
+	max-width: 256px;
+	font-size: 13px;
+	white-space: nowrap;
+	overflow: hidden;
+	margin-top: -2px;
+	background: #efefef;
+	border-top: 1px solid #e3e3e3;
+	-o-text-overflow: ellipsis;
+}
+td[loading='tn'] .index-small {
+	content: url('images/reload.gif');
+	width: 25px;
+	height: 22px;
+	padding-top: 3px;
+}
+td[loading='notn'] .index-small {
+	content: url('images/reload.gif');
+	width: 25px;
+	height: 22px;
+	padding-top: 3px;
+}
+.btn {
+	display: none;
+}
+.popup {
+	width: 140px;
+	position: absolute;
+	text-align: left;
+}
+.popup ul {
+	padding: 0px;
+	margin: 0px;
+	list-style-type: none;
+	border: 1px solid black;
+	background-color: hsl(0,0%,94%);
+}
+.popup li {
+	margin-left: 4px;
+	background-color: hsl(0,0%,96%);
+	font-size: small;
+	border-bottom: solid thin hsl(0,0%,94%);
+}
+.popup li[grayed] {
+	color: hsl(0,0%,78%);
+}
+.popup li:hover {
+	background-color: hsl(0,0%,78%);
+}
+}
+
+@media screen and (max-width: 460px), projection and (max-width: 460px), tv and (max-width: 460px) {
+	.text-big {	display: none; }
+	.title-small { font-size: x-small; }
+	.index-small { display: none; }
+	.reset { display: none; }
+	.index-big { font-size: 200%; }
+	.thumbnail { top: 0; font-size: smaller; }
+	.drag { font-size: smaller; }
+	td[loading=notn] .thumbnail-cont { background-image: url('images/reload.gif'); width: 16px !important; height: 16px !important; margin-left: -8px; margin-top: -8px; }	
+	table { border-spacing: 2px; }
+}
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/user.css
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/user.css	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/user.css	(revision 23513)
@@ -0,0 +1,1 @@
+/* This is an empty Opera file */
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/warning.css
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/warning.css	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/warning.css	(revision 23513)
@@ -0,0 +1,106 @@
+@import url(opera.css);
+@import url(error.css);
+
+html {
+	background-color: #f8f8f8;
+	color: #000;
+}
+
+body {
+	background: transparent url(images/opera-icon-red.png) no-repeat right top;
+	text-align: center;
+	padding-top: 140px;
+	padding-right: 22%;
+	padding-bottom: 30px;
+	padding-left: 22%;
+}
+
+#main {
+	text-align: left;
+	box-shadow: 0 0 10px rgba(1, 1, 1, 1.0);
+	border-radius: 5px;
+	background: hsl(0,0%,89%) url(images/bkgd-rev.png) repeat-x 0 0%;
+	background-size: 100% 100%;
+	padding: 28px;
+}
+
+h1 {
+	color: #cc001c;
+	text-shadow: none;
+	background-image: none;
+	padding-left: 0px;
+}
+
+hr {
+	margin-left:0px;
+	border-left:0;
+	border-right:0;
+	border-bottom:1px;
+	background-color: rgba(255,255,255, 0.77);
+	border-color: rgba(0,0,0, 0.17);
+	height: 1px;
+}
+
+h2 {
+	color: #000;
+	border-bottom: 1px solid rgba(0,0,0,0.1);
+	text-shadow: 0 1px 0 rgba(255,255,255,0.3);
+}
+
+a {
+	color: #cc001c;
+	text-shadow:none;
+	font-size: 80%;
+}
+
+a:hover { color: #000;}
+
+button {
+	padding: 5px 10px;
+}
+
+#links {
+	padding-top: 5px;
+	padding-bottom: 5px;
+	padding-left: 0px;
+}
+
+#links:after {
+    content: ".";
+    display: block;
+    height: 0;
+    clear: both;
+    visibility: hidden;
+}
+
+#links button {
+	 float: left;
+	 margin: 0;
+	 padding: 0px 5px;
+}
+
+#links a {
+	margin: 0;
+	padding: 5px 10px;
+	float: right;
+}
+
+address {
+	font-size: 70%;
+	margin: 20px 0;
+	color: rgba(255,255,255,0.75);
+}
+
+address a { padding: 0 4px; }
+
+iframe {
+	width: 500px;
+	height: 100px;
+	border: none;
+	margin-top: 20px;
+}
+
+p {
+	padding-left: 0px;
+}
+
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/webfeed.css
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/webfeed.css	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/webfeed.css	(revision 23513)
@@ -0,0 +1,618 @@
+@charset "utf-8";
+/* Stylesheet for Opera webfeeds */
+/* Copyright 2008 Opera Software */
+
+#strings {
+	display: none !important;
+}
+
+@media tv, handheld {
+	html {
+		font-size: 150%;
+	}
+}
+
+* {
+	margin: 0;
+	padding: 0;
+}
+
+html {
+	height: 100%;
+	width: 100%;
+}
+
+body {
+	font: normal 13px sans-serif;
+	background: #fff;
+	color: #444;
+	voice-family: female;
+	height: 100%;
+	width: 100%;
+}
+
+a {
+	color: inherit;
+}
+
+li {
+	list-style-type: none;
+}
+
+li a, table a {
+	display: block;
+}
+
+h1,h2,h3 {
+	color: #333;
+	padding: 0.2em 0.3em;
+	font-weight: bold;
+	font-size: 1.5em;
+}
+
+body > div > .header h1 {
+	text-transform: capitalize;
+	text-align: center;
+}
+
+body > div:target > .header h1 {
+	color: #b00;
+}
+
+fieldset {
+	padding: 4px 5px 0px 5px;
+	border: 0;
+}
+
+legend {
+	display: none;
+}
+
+a {
+	text-decoration: none;
+}
+
+body > div > .controls {
+	float: left;
+	background: #fff;
+	width: 100%;
+	margin: 0;
+	padding: 0;
+	border-top: 1px solid #bbb;
+}
+
+body > div > .controls > a {
+	float: left;
+	background: #ddd;
+	color: #333;
+	margin: 2px 5px 2px 6px;
+	padding: 1px 2px;
+	border: 1px solid #bbb;
+	text-transform: capitalize;
+}
+
+body > div > .controls > a[href='#feedEntryToggleFlag'] {
+	background: url('images/flag.png') no-repeat #ddd;
+	background-position: 2px 0px;
+	padding-left: 20px;
+	/*content: 'flag this article';*/
+}
+
+body > div {
+	border-left: 1px solid #999;
+	border-width: 0 1px;
+}
+
+
+
+#feedEntries input:disabled,
+#feedEntries input:disabled + label {
+	opacity: .5;
+}
+
+#feedEntries label[for='search'] {
+	float: right;
+}
+
+#feedEntries label input {
+	float: right;
+	margin: -1px 0px 2px 5px;
+	width: 7em;
+}
+
+
+/*
+ *	screen
+ */
+@media screen {
+
+	.handheld {
+		display: none;
+	}
+	
+	#feedEntries {
+		float: right;
+		width: 74%;
+		height: 50%;
+		min-height: 160px;
+		max-width: 74%;
+		overflow: auto;
+		border-bottom: 1px solid #ccc;
+	}
+	
+	#feedEntry {
+		float: right;
+		width:  74%;
+		max-width: 74%;
+		background: url('images/shadow.gif') repeat-x top left #fff;
+	}
+	
+	#feedsList {
+		position: absolute;
+		top: 0;
+		left: 0;
+		width:  25%;
+		border: 0;
+		margin-left: .15em;
+	}
+
+	#settings {
+		float: left;
+		position: absolute;
+		top: 0;
+		left: 0;
+		width: 100%;
+		border: 0;
+		z-index: 2;
+		background: #fff;
+		display: none;
+	}
+	
+	#settingsHeader {
+		float: left;
+		width: 95%;
+	}
+	
+	#darkBox {
+		position: absolute;
+		height: 100px;
+		width: 100px;
+		display: none;
+		background: url(images/darkBox.png) #000;
+		z-index: 32768;
+	}
+	
+	#settings:target { /* , #settings:target + #darkBox */
+		display: block;
+	}
+	
+	body > div > .header {
+
+	}
+
+	body > div > .controls {
+		float: left;
+	}
+
+	#feedEntriesWrapper {
+		width: 100%;
+	}
+	
+	#feedEntriesWrapper > table > tbody > tr > * {
+		width: 100%;
+		border: inherit;
+	}
+
+	#feedEntry .content {
+
+	}
+	
+	body > div > .header > h1 {
+
+	}
+
+	#feedsListWrapper {
+
+	}
+
+	#feedsList a {
+
+	}
+
+	#feedHeader {
+
+	}
+	
+	#feedEntriesInfos {
+		width: 100%;
+		text-align: center;
+		margin-top: -0.5em;
+		margin-bottom: 0.7em;
+		color: #777;
+	}
+
+}
+
+
+
+
+/*
+ *	handheld
+ */
+@media handheld, tv, projection {
+
+	h1 {
+		font-size: 1.3em;
+	}
+	
+	h2 {
+		font-size: 1.2em;
+	}
+	
+	h3 {
+		font-size: 1.1em;
+	}
+
+	body > div {
+		display: none;
+	}
+	
+	body > div:target {
+		display: block;
+		padding: 1em;
+		border: 0;
+	}
+	
+	.header {
+		background: url(images/section.png) top left repeat-x;
+		margin-bottom: 1em;
+	}
+	
+	body > div > .controls {
+
+	}
+
+	#feedEntries .header img {
+		display: none;
+	}
+	
+	#feedEntriesHeader,
+	#feedEntriesTable > tbody > tr > *:first-child,
+	#feedEntriesTable > tbody > tr > *:last-child {
+		display: none;
+	}
+	
+	#noFeedEntries > tr > * {
+		display: table-cell !important;
+	}
+
+	#feedsListWrapper > ul > li {
+		background-color: #fff !important;
+	}
+	
+	#feedEntriesInfos {
+		width: 100%;
+		text-align: center;
+		margin-top: -0.5em;
+		margin-bottom: 0.7em;
+		color: #777;
+	}
+	
+}
+
+#subscribeControls {
+
+}
+
+
+/*
+ *	feedEntries
+ */
+#feedEntries .header img {
+	display: none;
+}
+
+#feedEntries .header img[src^=''] {
+	width: 88px;
+	height: 31px;
+	border: 0;
+	background: lime;
+}
+
+
+/*
+ *	feedEntriesTable
+ */
+#feedEntriesTable {
+	float: left;
+	max-height: 100%;
+	width: 100%;
+	max-width: 100%;
+	overflow: auto;
+}
+
+#feedEntriesWrapper > table > tbody > tr {
+/*	border-top: 1px solid transparent;
+	background-color: #fff;*/
+	width: 100%;
+}
+
+#feedEntriesTable > * > tr > * {
+	padding: .2em;
+	text-align: left;
+	margin: 0;
+	border-top: inherit;
+	width: 100%;
+}
+
+#feedEntriesTable > thead > tr > th {
+	border-bottom: 1px solid #eee;
+	background: #333 center left no-repeat;
+	color: #fff;
+	width: 100%;
+}
+
+#feedEntriesTable > * > tr > *:first-child {
+	width: 2.5em;
+	max-width: 2.5em;
+	background-repeat: no-repeat;
+	background-image: url(images/flag.png);
+	background-position: 0 -16px;
+}
+
+#feedEntriesTable > tbody > tr > td:nth-child(2) em {
+	font-style: normal;
+	background: #ff9;
+	color: #930;
+}
+
+@media screen {
+
+	#feedEntriesTable > * > tr > *:nth-child(2) {
+		border-left: 1px dashed #ccc;
+		border-right: 1px dashed #ccc;
+	}
+	
+}
+
+#feedEntriesTable > tbody > tr > *+*+* {
+
+}
+
+#feedEntriesTable tr[rel] {
+	background: #f8f8f8;
+	border-color: #f8f8f8;
+}
+
+
+
+/*
+ *	feedEntry
+ */
+
+#feedEntryHeader {
+	text-align: left;
+	margin-top: 0.5em;
+}
+
+#feedEntryContent {
+	clear: both;
+	padding: 1em 0.5em;
+	background-color: #f8f8f8;
+	border: 1px solid #ccc;
+	border-width: 1px 0;
+}
+
+#feedEntryContent:empty {
+	content: 'No content';
+	color: #999;
+}
+
+#feedEntryContent a {
+	text-decoration: underline;
+	color: #669;
+}
+
+#feedEntryContent a:hover {
+	background: #ffc;
+	color: #600;
+}
+
+#feedEntryImageHolder {
+	float: left;
+	width: 100%;
+	text-align: center;
+}
+
+#feedEntryContent img {
+	max-width: 95%;
+	display: inline-block;
+	border: 1px solid #999;
+	padding: 2px;
+	background: #fff;
+	margin: 2px;
+}
+
+/*#feedEntryContent *[src]:after {
+	position: relative;
+	display: block;
+	content: '( ' attr(src) ' )';
+	color: #060;
+}*/
+
+#feedEntryContent table {
+	border: 1px solid #000;
+	background: #fff;
+}
+
+#feedEntryContent td,
+#feedEntryContent th {
+	margin: 0;
+	padding: .5em;
+	border: 1px solid #ccc;
+}
+
+
+/*
+ *	feedList
+ */
+#feedsList li {
+	display: block;
+	line-height: 20px;
+	white-space: nowrap;
+}
+
+#feedsList li > a {
+	display: inline;
+	overflow: hidden;
+}
+
+#feedsList ul > li > ul > li > a[href='#settings'] {
+	content: '';
+	background-image: url(images/customize.gif);
+	background-position: 2px -1px;
+	padding-left: 17px;
+}
+
+#feedsList ul > li#smartGroup_preview > ul > li > a[href='#settings'] {
+	opacity: .25;
+}
+
+#feedsList ul > li > ul > li > a+a {
+	background-image: url(images/defaultFavicon.png);
+	background-position: 2px 1px;
+}
+
+#feedsListWrapper > ul > li {
+	background-position: left top;
+	background-color: #fff;
+	border-bottom: 1px solid #ddd;
+}
+
+#feedsList ul > li > a {
+	padding-left: 20px;
+	background-image: url(images/folder.png);
+	background-position: 1px 1px;
+	background-repeat: no-repeat;
+	line-height: 20px;
+}
+
+#feedsList ul > li.smartGroup > a {
+	background: url(images/smartGroup.png) no-repeat;
+}
+
+#feedsListWrapper > ul > li > a {
+	display: block;
+	text-transform: capitalize;
+}
+
+#feedsListWrapper > ul {
+	padding-top: 4px;
+}
+
+#feedsListWrapper > ul > li {
+	background: #fff;
+	margin: 0 4px 8px 4px;
+	border-top: 1px solid transparent;
+	overflow: hidden;
+}
+
+#feedsListWrapper > ul > li:nth-child(2n+1) {
+	background-color: #fff;
+}
+
+#feedsListWrapper > ul > li > ul > li {
+/*	border-top: 1px solid transparent;
+	white-space: pre;
+	-o-text-overflow: ellipsis;*/
+}
+
+.header > img {
+	background: lime;
+	display: none;
+}
+
+
+/*
+ *	settings
+ */
+#settings form {
+	float: left;
+	position: relative;
+	top: 0;
+	left: 0;
+	width: 97%;
+	background: #ddd;
+	border: 1px solid #000;
+	padding: 0.5em;
+}
+
+#settings hr {
+	clear: both;
+	margin: .25em;
+	height: 1px;
+	border: 0;
+	background: #ccc;
+}
+
+#settings label {
+	float: left;
+	display: block;
+	text-align: right;
+	margin: 3px 5px 0 0;
+	width: 48%;
+}
+
+#settings button {
+	float: right;
+	display: block;
+	margin: 1em 0;
+	padding: 0 1em;
+}
+
+#settings [type='text'], select {
+	float: left;
+	margin: 0 0 3px 0;
+	width: 48%;
+}
+
+#settings [type='checkbox'] {
+	float: left;
+	margin: 2px;
+}
+
+@media screen,tv,projection {
+
+	#settings form {
+		float: left;
+		top: 0;
+		margin-left: 1%;
+		width: 98%;
+		background: #ddd;
+		border: 1px solid #000;
+		padding: 0;
+	}
+
+	#settings .controls {
+		display: none;
+	}
+
+	#settings button {
+		width: 21%;
+		max-width: 10em;
+		margin: 2em .25em 1em .25em;
+	}
+	
+}
+
+
+#feedEntriesSubscription span {
+	display: none;
+}
+
+/*
+*:focus
+{
+	color: #000;
+}
+*/
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/wml.css
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/wml.css	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/styles/wml.css	(revision 23513)
@@ -0,0 +1,80 @@
+@charset "utf-8";
+/* Stylesheet for WML documents */
+/* Copyright 2009 Opera Software */
+@namespace url("http://www.wapforum.org/2001/wml");
+wml, template, card, p, br, pre {
+	font: 20px sans-serif;
+	display: block;
+}
+wml {
+	color: black;
+	background: white;
+	padding: 1em;
+}
+template {
+	background: #DDDDDD;
+	padding: 0.6em 1em;
+	margin-bottom: 0.3em;
+}
+img {margin: 0.3em;}
+timer {display: none;}
+card::before {
+	content: attr(title);
+	font-style: italic;
+	color: white;
+	background: #333333;
+	padding: 0.3em;
+	margin-bottom: 0.5em;
+	display: block;
+}
+card {
+	text-align: left;
+	background: #EEEEEE;
+	padding: 1em;
+	display: block;
+}
+do {
+	white-space: nowrap;
+	padding: 0.05em;
+	border: 0.1em black outset;
+}
+do[type]::before {content:attr(type);}
+do[type="prev"]::before {content: "Previous";}
+do[type="next"]::before {content: "Next";}
+do[type="accept"]::before {content: "Accept";}
+do[type="options"]::before {content: "Options";}
+do[label]::before {
+	text-decoration: underline;
+	content: attr(label);
+	font-style: normal;
+	margin: 0.2em 0.05em;
+	display: inline-block;
+}
+a, go, do, anchor {
+	text-decoration: underline;
+	color: blue;
+}
+go, anchor {display: inline;}
+onevent[type="onenterforward"] go::before {content: "Please press forward";}
+small {font-size: smaller;}
+p {padding: 0.3em;}
+p, p[align="left"] {text-align: left;}
+p[align="center"] {text-align: center;}
+p[align="right"] {text-align: right;}
+strong, b {font-weight: bold;}
+i, em {font-style: italic;}
+u {text-decoration: underline;}
+big {font-size: larger;}
+pre {white-space: pre;}
+table {
+	border: 1px solid black;
+	border-collapse: collapse;
+	display: table;
+}
+tr {display: table-row;}
+td {
+	border: 1px solid black;
+	display: table-cell;
+}
+fieldset {display: block;}
+
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/turbosettings.xml
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/turbosettings.xml	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/turbosettings.xml	(revision 23513)
@@ -0,0 +1,8 @@
+// Dd4ORB6jLblhdNiNSkvVFzc+m2JcoTTjm+05MMlB/5zo/nHO3HCIWi1UzDlBHF5w7RNGs/9o4NYjnnrNoGhK2UZWNz7vNqrwfeKJYY3QwN0xoSBF9pTmcUGkThH/IAug+/XljevLeSnqiWgbP+U6TT2jlCEQU2pHvbBznBec6sgqlOj4ZuvIjXvu2QxEo0UCqooVqM3M07uAMb4Vnmh51Uaz4ofIxwNo/3ZJVlUJVIdFQirUlQPPYQhMhyjJaDFLt7TQxAI8dX6wEKZbhjKxi5o+r0sh+P+5BemodN2ok/j/BAno5D57WWW7ATOvKPgCU/7dPVHcebnEnXEBxy/SbQ==
+<?xml version="1.0" encoding="UTF-8"?>
+<turbo_settings>
+	<validation expires="31-04-2012" />
+	<obml brand="linuxsdk30" />
+	<wop proxy="opera10beta-turbo.opera-mini.net:80" />
+</turbo_settings>
+
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/userjs/ooif.js
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/userjs/ooif.js	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/userjs/ooif.js	(revision 23513)
@@ -0,0 +1,364 @@
+<!-- This is an opera userjs for the creation of visual objects  -->
+<!-- through oipfObjectFactory as specified in OIPF DAE 7.1.1.1. -->
+
+function ooifCreateVisualObject(objectType) {
+    if (oipfObjectFactory.isObjectSupported(objectType) == true) {
+        element = document.createElement("object");
+        element.setAttribute("type", objectType);
+        return element;
+    } else {
+        throw {name: "TypeError"};
+    }
+}
+
+oipfObjectFactory.createVideoBroadcastObject = function() {
+    return ooifCreateVisualObject("video/broadcast");
+};
+
+oipfObjectFactory.createVideoMpegObject = function() {
+    return ooifCreateVisualObject("video/mpeg");
+};
+
+<!-- This part adds support for key symbols as defined in Annex F of CEA-2014 -->
+var KeyEvent = new Object();
+
+KeyEvent.VK_UNDEFINED = 0;
+Event.prototype.VK_UNDEFINED = 0;
+KeyEvent.VK_CANCEL = 3;
+Event.prototype.VK_CANCEL = 3;
+KeyEvent.VK_BACK_SPACE = 8;
+Event.prototype.VK_BACK_SPACE = 8;
+KeyEvent.VK_TAB = 9;
+Event.prototype.VK_TAB = 9;
+KeyEvent.VK_CLEAR = 12;
+Event.prototype.VK_CLEAR = 12;
+KeyEvent.VK_ENTER = 11;
+Event.prototype.VK_ENTER = 11;
+KeyEvent.VK_SHIFT = 16;
+Event.prototype.VK_SHIFT = 16;
+KeyEvent.VK_CONTROL = 17;
+Event.prototype.VK_CONTROL = 17;
+KeyEvent.VK_ALT = 18;
+Event.prototype.VK_ALT = 18;
+KeyEvent.VK_PAUSE = 10;
+Event.prototype.VK_PAUSE = 10;
+KeyEvent.VK_CAPS_LOCK = 20;
+Event.prototype.VK_CAPS_LOCK = 20;
+KeyEvent.VK_KANA = 21;
+Event.prototype.VK_KANA = 21;
+KeyEvent.VK_FINAL = 24;
+Event.prototype.VK_FINAL = 24;
+KeyEvent.VK_KANJI = 25;
+Event.prototype.VK_KANJI = 25;
+KeyEvent.VK_ESCAPE = 27;
+Event.prototype.VK_ESCAPE = 27;
+KeyEvent.VK_CONVERT = 28;
+Event.prototype.VK_CONVERT = 28;
+KeyEvent.VK_NONCONVERT = 29;
+Event.prototype.VK_NONCONVERT = 29;
+KeyEvent.VK_ACCEPT = 30;
+Event.prototype.VK_ACCEPT = 30;
+KeyEvent.VK_MODECHANGE = 31;
+Event.prototype.VK_MODECHANGE = 31;
+KeyEvent.VK_SPACE = 32;
+Event.prototype.VK_SPACE = 32;
+KeyEvent.VK_PAGE_UP = 33;
+Event.prototype.VK_PAGE_UP = 33;
+KeyEvent.VK_PAGE_DOWN = 34;
+Event.prototype.VK_PAGE_DOWN = 34;
+KeyEvent.VK_END = 35;
+Event.prototype.VK_END = 35;
+KeyEvent.VK_HOME = 36;
+Event.prototype.VK_HOME = 36;
+KeyEvent.VK_LEFT = 37;
+Event.prototype.VK_LEFT = 37;
+KeyEvent.VK_UP = 38;
+Event.prototype.VK_UP = 38;
+KeyEvent.VK_RIGHT = 39;
+Event.prototype.VK_RIGHT = 39;
+KeyEvent.VK_DOWN = 40;
+Event.prototype.VK_DOWN = 40;
+KeyEvent.VK_COMMA = 44;
+Event.prototype.VK_COMMA = 44;
+KeyEvent.VK_PERIOD = 46;
+Event.prototype.VK_PERIOD = 46;
+KeyEvent.VK_SLASH = 47;
+Event.prototype.VK_SLASH = 47;
+KeyEvent.VK_0 = 48;
+Event.prototype.VK_0 = 48;
+KeyEvent.VK_1 = 49;
+Event.prototype.VK_1 = 49;
+KeyEvent.VK_2 = 50;
+Event.prototype.VK_2 = 50;
+KeyEvent.VK_3 = 51;
+Event.prototype.VK_3 = 51;
+KeyEvent.VK_4 = 52;
+Event.prototype.VK_4 = 52;
+KeyEvent.VK_5 = 53;
+Event.prototype.VK_5 = 53;
+KeyEvent.VK_6 = 54;
+Event.prototype.VK_6 = 54;
+KeyEvent.VK_7 = 55;
+Event.prototype.VK_7 = 55;
+KeyEvent.VK_8 = 56;
+Event.prototype.VK_8 = 56;
+KeyEvent.VK_9 = 57;
+Event.prototype.VK_9 = 57;
+KeyEvent.VK_SEMICOLON = 59;
+Event.prototype.VK_SEMICOLON = 59;
+KeyEvent.VK_EQUALS = 61;
+Event.prototype.VK_EQUALS = 61;
+KeyEvent.VK_A = 65;
+Event.prototype.VK_A = 65;
+KeyEvent.VK_B = 66;
+Event.prototype.VK_B = 66;
+KeyEvent.VK_C = 67;
+Event.prototype.VK_C = 67;
+KeyEvent.VK_D = 68;
+Event.prototype.VK_D = 68;
+KeyEvent.VK_E = 69;
+Event.prototype.VK_E = 69;
+KeyEvent.VK_F = 70;
+Event.prototype.VK_F = 70;
+KeyEvent.VK_G = 71;
+Event.prototype.VK_G = 71;
+KeyEvent.VK_H = 72;
+Event.prototype.VK_H = 72;
+KeyEvent.VK_I = 73;
+Event.prototype.VK_I = 73;
+KeyEvent.VK_J = 74;
+Event.prototype.VK_J = 74;
+KeyEvent.VK_K = 75;
+Event.prototype.VK_K = 75;
+KeyEvent.VK_L = 76;
+Event.prototype.VK_L = 76;
+KeyEvent.VK_M = 77;
+Event.prototype.VK_M = 77;
+KeyEvent.VK_N = 78;
+Event.prototype.VK_N = 78;
+KeyEvent.VK_O = 79;
+Event.prototype.VK_O = 79;
+KeyEvent.VK_P = 80;
+Event.prototype.VK_P = 80;
+KeyEvent.VK_Q = 81;
+Event.prototype.VK_Q = 81;
+KeyEvent.VK_R = 82;
+Event.prototype.VK_R = 82;
+KeyEvent.VK_S = 83;
+Event.prototype.VK_S = 83;
+KeyEvent.VK_T = 84;
+Event.prototype.VK_T = 84;
+KeyEvent.VK_U = 85;
+Event.prototype.VK_U = 85;
+KeyEvent.VK_V = 86;
+Event.prototype.VK_V = 86;
+KeyEvent.VK_W = 87;
+Event.prototype.VK_W = 87;
+KeyEvent.VK_X = 88;
+Event.prototype.VK_X = 88;
+KeyEvent.VK_Y = 89;
+Event.prototype.VK_Y = 89;
+KeyEvent.VK_Z = 90;
+Event.prototype.VK_Z = 90;
+KeyEvent.VK_OPEN_BRACKET = 91;
+Event.prototype.VK_OPEN_BRACKET = 91;
+KeyEvent.VK_BACK_SLASH = 92;
+Event.prototype.VK_BACK_SLASH = 92;
+KeyEvent.VK_CLOSE_BRACKET = 93;
+Event.prototype.VK_CLOSE_BRACKET = 93;
+KeyEvent.VK_NUMPAD0 = 96;
+Event.prototype.VK_NUMPAD0 = 96;
+KeyEvent.VK_NUMPAD1 = 97;
+Event.prototype.VK_NUMPAD1 = 97;
+KeyEvent.VK_NUMPAD2 = 98;
+Event.prototype.VK_NUMPAD2 = 98;
+KeyEvent.VK_NUMPAD3 = 99;
+Event.prototype.VK_NUMPAD3 = 99;
+KeyEvent.VK_NUMPAD4 = 100;
+Event.prototype.VK_NUMPAD4 = 100;
+KeyEvent.VK_NUMPAD5 = 101;
+Event.prototype.VK_NUMPAD5 = 101;
+KeyEvent.VK_NUMPAD6 = 102;
+Event.prototype.VK_NUMPAD6 = 102;
+KeyEvent.VK_NUMPAD7 = 103;
+Event.prototype.VK_NUMPAD7 = 103;
+KeyEvent.VK_NUMPAD8 = 104;
+Event.prototype.VK_NUMPAD8 = 104;
+KeyEvent.VK_NUMPAD9 = 105;
+Event.prototype.VK_NUMPAD9 = 105;
+KeyEvent.VK_MULTIPLY = 106;
+Event.prototype.VK_MULTIPLY = 106;
+KeyEvent.VK_ADD = 107;
+Event.prototype.VK_ADD = 107;
+KeyEvent.VK_SEPARATER = 108;
+Event.prototype.VK_SEPARATER = 108;
+KeyEvent.VK_SUBTRACT = 109;
+Event.prototype.VK_SUBTRACT = 109;
+KeyEvent.VK_DECIMAL = 110;
+Event.prototype.VK_DECIMAL = 110;
+KeyEvent.VK_DIVIDE = 111;
+Event.prototype.VK_DIVIDE = 111;
+KeyEvent.VK_F1 = 112;
+Event.prototype.VK_F1 = 112;
+KeyEvent.VK_F2 = 113;
+Event.prototype.VK_F2 = 113;
+KeyEvent.VK_F3 = 114;
+Event.prototype.VK_F3 = 114;
+KeyEvent.VK_F4 = 115;
+Event.prototype.VK_F4 = 115;
+KeyEvent.VK_F5 = 116;
+Event.prototype.VK_F5 = 116;
+KeyEvent.VK_F6 = 117;
+Event.prototype.VK_F6 = 117;
+KeyEvent.VK_F7 = 118;
+Event.prototype.VK_F7 = 118;
+KeyEvent.VK_F8 = 119;
+Event.prototype.VK_F8 = 119;
+KeyEvent.VK_F9 = 120;
+Event.prototype.VK_F9 = 120;
+KeyEvent.VK_F10 = 121;
+Event.prototype.VK_F10 = 121;
+KeyEvent.VK_F11 = 122;
+Event.prototype.VK_F11 = 122;
+KeyEvent.VK_F12 = 123;
+Event.prototype.VK_F12 = 123;
+KeyEvent.VK_DELETE = 127;
+Event.prototype.VK_DELETE = 127;
+KeyEvent.VK_NUM_LOCK = 144;
+Event.prototype.VK_NUM_LOCK = 144;
+KeyEvent.VK_SCROLL_LOCK = 145;
+Event.prototype.VK_SCROLL_LOCK = 145;
+KeyEvent.VK_PRINTSCREEN = 154;
+Event.prototype.VK_PRINTSCREEN = 154;
+KeyEvent.VK_INSERT = 155;
+Event.prototype.VK_INSERT = 155;
+KeyEvent.VK_HELP = 156;
+Event.prototype.VK_HELP = 156;
+KeyEvent.VK_META = 157;
+Event.prototype.VK_META = 157;
+KeyEvent.VK_BACK_QUOTE = 192;
+Event.prototype.VK_BACK_QUOTE = 192;
+KeyEvent.VK_QUOTE = 222;
+Event.prototype.VK_QUOTE = 222;
+KeyEvent.VK_RED = 66;
+Event.prototype.VK_RED = 66;
+KeyEvent.VK_GREEN = 67;
+Event.prototype.VK_GREEN = 67;
+KeyEvent.VK_YELLOW = 68;
+Event.prototype.VK_YELLOW = 68;
+KeyEvent.VK_BLUE = 69;
+Event.prototype.VK_BLUE = 69;
+KeyEvent.VK_GREY = 407;
+Event.prototype.VK_GREY = 407;
+KeyEvent.VK_BROWN = 408;
+Event.prototype.VK_BROWN = 408;
+KeyEvent.VK_POWER = 409;
+Event.prototype.VK_POWER = 409;
+KeyEvent.VK_DIMMER = 410;
+Event.prototype.VK_DIMMER = 410;
+KeyEvent.VK_WINK = 411;
+Event.prototype.VK_WINK = 411;
+KeyEvent.VK_REWIND = 412;
+Event.prototype.VK_REWIND = 412;
+KeyEvent.VK_STOP = 82;
+Event.prototype.VK_STOP = 82;
+KeyEvent.VK_EJECT_TOGGLE = 414;
+Event.prototype.VK_EJECT_TOGGLE = 414;
+KeyEvent.VK_PLAY = 81;
+Event.prototype.VK_PLAY = 81;
+KeyEvent.VK_RECORD = 416;
+Event.prototype.VK_RECORD = 416;
+KeyEvent.VK_FAST_FWD = 473;
+Event.prototype.VK_FAST_FWD = 473;
+KeyEvent.VK_PLAY_SPEED_UP = 418;
+Event.prototype.VK_PLAY_SPEED_UP = 418;
+KeyEvent.VK_PLAY_SPEED_DOWN = 419;
+Event.prototype.VK_PLAY_SPEED_DOWN = 419;
+KeyEvent.VK_PLAY_SPEED_RESET = 420;
+Event.prototype.VK_PLAY_SPEED_RESET = 420;
+KeyEvent.VK_RECORD_SPEED_NEXT = 421;
+Event.prototype.VK_RECORD_SPEED_NEXT = 421;
+KeyEvent.VK_GO_TO_START = 422;
+Event.prototype.VK_GO_TO_START = 422;
+KeyEvent.VK_GO_TO_END = 423;
+Event.prototype.VK_GO_TO_END = 423;
+KeyEvent.VK_TRACK_PREV = 424;
+Event.prototype.VK_TRACK_PREV = 424;
+KeyEvent.VK_TRACK_NEXT = 425;
+Event.prototype.VK_TRACK_NEXT = 425;
+KeyEvent.VK_RANDOM_TOGGLE = 426;
+Event.prototype.VK_RANDOM_TOGGLE = 426;
+KeyEvent.VK_CHANNEL_UP = 427;
+Event.prototype.VK_CHANNEL_UP = 427;
+KeyEvent.VK_CHANNEL_DOWN = 428;
+Event.prototype.VK_CHANNEL_DOWN = 428;
+KeyEvent.VK_STORE_FAVORITE_0 = 429;
+Event.prototype.VK_STORE_FAVORITE_0 = 429;
+KeyEvent.VK_STORE_FAVORITE_1 = 430;
+Event.prototype.VK_STORE_FAVORITE_1 = 430;
+KeyEvent.VK_STORE_FAVORITE_2 = 431;
+Event.prototype.VK_STORE_FAVORITE_2 = 431;
+KeyEvent.VK_STORE_FAVORITE_3 = 432;
+Event.prototype.VK_STORE_FAVORITE_3 = 432;
+KeyEvent.VK_RECALL_FAVORITE_0 = 433;
+Event.prototype.VK_RECALL_FAVORITE_0 = 433;
+KeyEvent.VK_RECALL_FAVORITE_1 = 434;
+Event.prototype.VK_RECALL_FAVORITE_1 = 434;
+KeyEvent.VK_RECALL_FAVORITE_2 = 435;
+Event.prototype.VK_RECALL_FAVORITE_2 = 435;
+KeyEvent.VK_RECALL_FAVORITE_3 = 436;
+Event.prototype.VK_RECALL_FAVORITE_3 = 436;
+KeyEvent.VK_CLEAR_FAVORITE_0 = 437;
+Event.prototype.VK_CLEAR_FAVORITE_0 = 437;
+KeyEvent.VK_CLEAR_FAVORITE_1 = 438;
+Event.prototype.VK_CLEAR_FAVORITE_1 = 438;
+KeyEvent.VK_CLEAR_FAVORITE_2 = 439;
+Event.prototype.VK_CLEAR_FAVORITE_2 = 439;
+KeyEvent.VK_CLEAR_FAVORITE_3 = 440;
+Event.prototype.VK_CLEAR_FAVORITE_3 = 440;
+KeyEvent.VK_SCAN_CHANNELS_TOGGLE = 441;
+Event.prototype.VK_SCAN_CHANNELS_TOGGLE = 441;
+KeyEvent.VK_PINP_TOGGLE = 442;
+Event.prototype.VK_PINP_TOGGLE = 442;
+KeyEvent.VK_SPLIT_SCREEN_TOGGLE = 443;
+Event.prototype.VK_SPLIT_SCREEN_TOGGLE = 443;
+KeyEvent.VK_DISPLAY_SWAP = 444;
+Event.prototype.VK_DISPLAY_SWAP = 444;
+KeyEvent.VK_SCREEN_MODE_NEXT = 445;
+Event.prototype.VK_SCREEN_MODE_NEXT = 445;
+KeyEvent.VK_VIDEO_MODE_NEXT = 446;
+Event.prototype.VK_VIDEO_MODE_NEXT = 446;
+KeyEvent.VK_VOLUME_UP = 447;
+Event.prototype.VK_VOLUME_UP = 447;
+KeyEvent.VK_VOLUME_DOWN = 448;
+Event.prototype.VK_VOLUME_DOWN = 448;
+KeyEvent.VK_MUTE = 449;
+Event.prototype.VK_MUTE = 449;
+KeyEvent.VK_SURROUND_MODE_NEXT = 450;
+Event.prototype.VK_SURROUND_MODE_NEXT = 450;
+KeyEvent.VK_BALANCE_RIGHT = 451;
+Event.prototype.VK_BALANCE_RIGHT = 451;
+KeyEvent.VK_BALANCE_LEFT = 452;
+Event.prototype.VK_BALANCE_LEFT = 452;
+KeyEvent.VK_FADER_FRONT = 453;
+Event.prototype.VK_FADER_FRONT = 453;
+KeyEvent.VK_FADER_REAR = 454;
+Event.prototype.VK_FADER_REAR = 454;
+KeyEvent.VK_BASS_BOOST_UP = 455;
+Event.prototype.VK_BASS_BOOST_UP = 455;
+KeyEvent.VK_BASS_BOOST_DOWN = 456;
+Event.prototype.VK_BASS_BOOST_DOWN = 456;
+KeyEvent.VK_INFO = 20;
+Event.prototype.VK_INFO = 20;
+KeyEvent.VK_GUIDE = 458;
+Event.prototype.VK_GUIDE = 458;
+KeyEvent.VK_TELETEXT = 459;
+Event.prototype.VK_TELETEXT = 459;
+KeyEvent.VK_SUBTITLE = 460;
+Event.prototype.VK_SUBTITLE = 460;
+KeyEvent.VK_BACK = 461;
+Event.prototype.VK_BACK = 461;
+KeyEvent.VK_MENU = 18;
+Event.prototype.VK_MENU = 18;
+KeyEvent.VK_PLAY_PAUSE = 463;
+Event.prototype.VK_PLAY_PAUSE = 463;
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/userjs/user.js
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/userjs/user.js	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_dir/userjs/user.js	(revision 23513)
@@ -0,0 +1,369 @@
+opera.postError("Opera HbbTV user JS loading ..");
+
+// Add onreadystatechange for XMLHttpRequests
+(function(){
+	var tmpInstance=new XMLHttpRequest();// because Opera doesn't support getter/setter lookup on prototype
+	var orscGetter=tmpInstance.__lookupGetter__('onreadystatechange');
+	var orscSetter=tmpInstance.__lookupSetter__('onreadystatechange');
+	XMLHttpRequest.prototype.__defineGetter__('onreadystatechange', function(){
+		return orscGetter.call(this);
+	});
+	XMLHttpRequest.prototype.__defineSetter__('onreadystatechange', function( actualListener ){
+		var intermediateListener = function(){
+			actualListener.call(this, {target: this});
+		}
+		return orscSetter.call(this, intermediateListener);
+	});
+})();
+
+//set overflow:hidden needs to be done on both <html> and <body>
+window.addEventListener('load', function() {
+    if (document.getElementsByTagName('body')[0].style.overflow == 'hidden') {
+        document.getElementsByTagName('html')[0].style.overflow = 'hidden';
+    }
+}, false);
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////
+/////////        Local Key Set
+LocalKeySet = {
+	VK_RED : 66,
+	VK_GREEN : 67,
+	VK_YELLOW : 68,
+	VK_BLUE : 69,
+
+	/////////////////////////
+	VK_PLAY : 81,
+	VK_PAUSE : 10,
+	VK_STOP : 82,
+
+	VK_FAST : 90, //FASTFORWARD
+	VK_SLOW : 78, //UNUSED
+	VK_PREV:34, //P-
+	VK_NEXT:33, //P+
+
+	/////////////////////////
+	VK_MENU : 18,
+	VK_RECALL:120, //UNUSED
+	
+	VK_INFO:20,
+	VK_PORTAL:50, //TEXT
+
+	/////////////////////////
+	VK_ENTER:13 //ENTER KEY
+	//VK_ENTER:11, //OK KEY
+	VK_LEFT:37,
+	VK_UP:38,
+	VK_RIGHT:39,
+	VK_DOWN:40,
+
+	VK_9:57,
+	VK_8:56,
+	VK_7:55,
+	VK_6:54,
+	VK_5:53,
+	VK_4:52,
+	VK_3:51,
+	VK_2:50,
+	VK_1:49,
+	VK_0:48,
+
+	/////////////////////////
+
+	VK_MUTE:78,
+	VK_VOLUME_ADD : 76,
+	VK_VOLUME_SUB : 77,
+
+	VK_EXIT : 36
+}
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////
+/////////      Event AfterEvent.load
+opera.addEventListener("AfterEvent.load", function (ev)
+{
+  if (location.href.indexOf("http://www.viewster.tv/") != -1) {
+    if (ev.event.target instanceof Document) {
+	   tvKey ={
+		   KEY_UP: LocalKeySet.VK_UP,
+		   KEY_DOWN: LocalKeySet.VK_DOWN,
+		   KEY_RIGHT: LocalKeySet.VK_RIGHT,
+		   KEY_LEFT: LocalKeySet.VK_LEFT,
+		   KEY_ENTER: LocalKeySet.VK_ENTER,
+
+		   KEY_RETURN : LocalKeySet.VK_MENU,
+		   KEY_PLAY : LocalKeySet.VK_PLAY,
+		   KEY_STOP : LocalKeySet.VK_STOP,
+		   KEY_PAUSE : LocalKeySet.VK_PAUSE,
+		   KEY_FF : LocalKeySet.VK_FAST,
+		   KEY_RW : LocalKeySet.VK_SLOW
+	   }
+    }
+  }
+
+  if (location.href.indexOf("http://itv.mit-xperts.com/zdfmediathek") != -1) {
+    if (ev.event.target instanceof Document) {
+		VK_RED = LocalKeySet.VK_RED;
+		VK_GREEN = LocalKeySet.VK_GREEN;
+		VK_YELLOW = LocalKeySet.VK_YELLOW;
+		VK_BLUE = LocalKeySet.VK_BLUE;
+
+		VK_PLAY = LocalKeySet.VK_PLAY;
+		VK_PAUSE = LocalKeySet.VK_PASUE;
+		VK_STOP = LocalKeySet.VK_STOP;
+
+		VK_FAST_FWD = LocalKeySet.VK_FAST;
+		VK_REWIND = LocalKeySet.VK_SLOW;
+
+		VK_BACK = LocalKeySet.VK_MENU;
+    }
+  }
+
+  if (location.href.indexOf("http://tvapp.wetter.com/") != -1) {
+	  if (ev.event.target instanceof Document) {
+		   inputs = document.getElementsByTagName('input');
+		   currentFocus = 1;
+		   inputs[currentFocus].focus();
+		   isFootFocus = true;
+
+		   document.onkeydown = function(e){
+			   e = e || window.event;
+			   var keycode = e.which ? e.which : e.keyCode; 
+
+			   if (keycode ==  LocalKeySet.VK_LEFT)
+			   {
+				   currentFocus = (currentFocus + inputs.length - 1) % inputs.length;
+				   inputs[currentFocus].focus();
+				   isFootFocus = true;
+				   e.preventDefault();
+			   }
+			   else if (keycode ==  LocalKeySet.VK_RIGHT)
+			   {
+				   currentFocus = (currentFocus + 1) % inputs.length;
+				   inputs[currentFocus].focus();
+				   isFootFocus = true;
+				   e.preventDefault();
+			   }
+			   else if (keycode ==  LocalKeySet.VK_UP || keycode ==  LocalKeySet.VK_DOWN )
+			   {
+				   if(document.getElementById("s1") == null || isFootFocus)
+				   {
+					   e.preventDefault();
+				   }
+
+				   if(isFootFocus)
+				   {
+					   document.getElementById("s1").focus();
+					   isFootFocus = false;
+				   }
+			   }
+		   };
+	   };
+   }
+
+},false);
+
+/////////////////////////////////////////////////////////////////////////////////////////////
+/////////      Event BeforeScript
+opera.addEventListener("BeforeScript", function (ev)
+{
+  if (location.href.indexOf("http://mini.maxdome.de/") != -1) {
+       isMsIe = function(){ return false; } 
+       isOpera = function(){ return true; } 
+	   isHumaxiCord = function(){ return true; }
+
+	   newState = 0;
+	   ev.element.text = ev.element.text.replace("var isCEHTML = false;","var isCEHTML = true;");
+  }
+
+  if( location.hostname.indexOf('stage.qtom.nettv.kbia.de') != -1 ){
+	   ev.element.text = ev.element.text.replace('.Play','.play');
+  }
+
+  if( location.href.indexOf('http://hbbtv.ardmediathek.de/') != -1 ){
+
+		defineKey = function(a,b){ window.KeyEvent[a]=window[a]=b; }
+	    defineKey("VK_RED",LocalKeySet.VK_RED);
+		defineKey("VK_GREEN",LocalKeySet.VK_GREEN);
+		defineKey("VK_YELLOW",LocalKeySet.VK_YELLOW);
+		defineKey("VK_BLUE",LocalKeySet.VK_BLUE);
+		
+		defineKey("VK_PLAYLIST_BACK",LocalKeySet.VK_SLOW);
+		defineKey("VK_PLAYLIST_FORWARD",LocalKeySet.VK_FAST);
+		defineKey("VK_PLAY",LocalKeySet.VK_PLAY);
+		defineKey("VK_PAUSE",LocalKeySet.VK_PASUE);
+//		defineKey("VK_PLAY_PAUSE",407);
+		defineKey("VK_STOP",LocalKeySet.VK_STOP);
+		defineKey("VK_BACK",LocalKeySet.VK_MENU);
+  }
+
+   if (location.href.indexOf("http://www.viewster.tv/") != -1) {
+	   ev.element.text = ev.element.text.replace(
+		   "document.getElementById(\"submenuGenre\").style.height = 34 * Data.getChannelsCount()",
+		   "document.getElementById(\"submenuGenre\").style.height = 34 * Data.getChannelsCount() + 'px'"
+	   );
+   }
+
+   if (location.href.indexOf("http://www.aupeo.com/") != -1) {
+		VK_RED = LocalKeySet.VK_RED;
+		VK_GREEN = LocalKeySet.VK_GREEN;
+		VK_YELLOW = LocalKeySet.VK_YELLOW;
+		VK_BLUE = LocalKeySet.VK_BLUE;
+
+		VK_PLAY = LocalKeySet.VK_PLAY;
+		VK_PAUSE = LocalKeySet.VK_PAUSE;
+		VK_STOP = LocalKeySet.VK_STOP;
+		VK_FAST_FWD = LocalKeySet.VK_FAST;
+		VK_REWIND = LocalKeySet.VK_SLOW;
+
+		VK_BACK = LocalKeySet.VK_MENU;
+
+		VK_ENTER=LocalKeySet.VK_ENTER;
+		VK_LEFT=LocalKeySet.VK_LEFT;
+		VK_UP=LocalKeySet.VK_UP;
+		VK_RIGHT=LocalKeySet.VK_RIGHT;
+		VK_DOWN=LocalKeySet.VK_DOWN;
+
+		VK_9=LocalKeySet.VK_9;
+		VK_8=LocalKeySet.VK_8;
+		VK_7=LocalKeySet.VK_7;
+		VK_6=LocalKeySet.VK_6;
+		VK_5=LocalKeySet.VK_5;
+		VK_4=LocalKeySet.VK_4;
+		VK_3=LocalKeySet.VK_3;
+		VK_2=LocalKeySet.VK_2;
+		VK_1=LocalKeySet.VK_1;
+		VK_0=LocalKeySet.VK_0;
+   }
+
+   if(location.href.indexOf('http://www.yellowmap.de')>-1){   
+	   for(var i=0; i<document.getElementById('Nav').children.length - 1 ;i++)
+		{
+			document.getElementById('Nav').children[i].children[0].style.fontSize = '18pt';
+		}
+   }
+
+   if(location.href.indexOf('tvportal.humaxdigital.com')>-1){
+
+	   if(location.href.indexOf('PortalService')>-1)       // Internet Radio
+	   {
+		   thisAppName = "Opera";
+		   ev.element.text = ev.element.text.replace(new RegExp("window.navigator.appName","gm"),"thisAppName");
+
+		   ev.element.text = ev.element.text.replace(
+			   "window.onload = initPage;",
+			   "setTimeout(initPage,3000);"
+		   );
+
+		   if(location.href.indexOf('Player')>-1)
+		   {
+			   ev.element.text = ev.element.text.replace(
+				   "var appVersion = window.navigator.appVersion;",
+
+				   "var audiotype= location.href.replace(/^.*mime=/,'').replace(/&.*$/,''); " +
+				   "if(audiotype!= undefined && audiotype != null )" +
+				   "videoElt.type='audio/' + location.href.replace(/^.*mime=/,'').replace(/&.*$/,'').toLowerCase() ;" + 
+				   "var appVersion = window.navigator.appVersion;"
+			   );
+
+			   ev.element.text = ev.element.text.replace(
+				   "case 0x13:", "case " + LocalKeySet.VK_PAUSE + ":"
+			   );
+			   ev.element.text = ev.element.text.replace(
+				   "case 0x19D:", "case " + LocalKeySet.VK_STOP + ":"
+			   );
+			   ev.element.text = ev.element.text.replace(
+				   "case 0x19F:", "case " + LocalKeySet.VK_PLAY + ":"
+			   );
+		   }
+
+		   key_set = function() {
+				// number
+				this.keyNum0 = LocalKeySet.VK_0;
+				this.keyNum1 = LocalKeySet.VK_1;
+				this.keyNum2 = LocalKeySet.VK_2;
+				this.keyNum3 = LocalKeySet.VK_3;
+				this.keyNum4 = LocalKeySet.VK_4;
+				this.keyNum5 = LocalKeySet.VK_5;
+				this.keyNum6 = LocalKeySet.VK_6;
+				this.keyNum7 = LocalKeySet.VK_7;
+				this.keyNum8 = LocalKeySet.VK_8;
+				this.keyNum9 = LocalKeySet.VK_9;
+				this.keyPortal = LocalKeySet.VK_PORTAL;
+				// play control
+				this.keyPlay = LocalKeySet.VK_PLAY;
+				this.keyPause = LocalKeySet.VK_PAUSE;
+				this.keyStop = LocalKeySet.VK_STOP;
+				this.keyBackward = LocalKeySet.VK_PREV;
+				this.keyForward = LocalKeySet.VK_NEXT;
+				// color
+				this.keyRed = LocalKeySet.VK_RED;
+				this.keyGreen = LocalKeySet.VK_GREEN;
+				this.keyYellow = LocalKeySet.VK_YELLOW;
+				this.keyBlue = LocalKeySet.VK_BLUE;
+				// direction
+				this.keyUp = LocalKeySet.VK_UP;
+				this.keyDown = LocalKeySet.VK_DOWN;
+				this.keyLeft = LocalKeySet.VK_LEFT;
+				this.keyRight = LocalKeySet.VK_RIGHT;
+				// controller
+				this.keyOK = LocalKeySet.VK_ENTER;
+				this.keyBack = LocalKeySet.VK_MENU;
+				this.keyPageUp = LocalKeySet.VK_FAST;
+				this.keyPageDown = LocalKeySet.VK_SLOW;
+				// additional
+				this.keyText = LocalKeySet.VK_INFO;
+			}
+	   }
+   }
+
+   if(location.href.indexOf('http://www.humaxtvportal.com')>-1){   
+	   if(location.href.indexOf('YouTube')>-1)        // YouTube
+	   {
+            KeyEvent.VK_RED = LocalKeySet.VK_RED;
+            KeyEvent.VK_GREEN = LocalKeySet.VK_GREEN;
+            KeyEvent.VK_YELLOW = LocalKeySet.VK_YELLOW;
+            KeyEvent.VK_BLUE = LocalKeySet.VK_BLUE;
+
+            KeyEvent.VK_PLAY = LocalKeySet.VK_PLAY;
+            KeyEvent.VK_PAUSE = LocalKeySet.VK_PAUSE;
+            KeyEvent.VK_STOP = LocalKeySet.VK_STOP;
+
+            KeyEvent.VK_FAST_FWD = LocalKeySet.VK_FAST;
+            KeyEvent.VK_REWIND = LocalKeySet.VK_SLOW;
+
+            KeyEvent.VK_BACK = LocalKeySet.VK_MENU;
+
+            /////////////////////////
+            KeyEvent.VK_ENTER=LocalKeySet.VK_ENTER;
+            KeyEvent.VK_LEFT=LocalKeySet.VK_LEFT;
+            KeyEvent.VK_UP=LocalKeySet.VK_UP;
+            KeyEvent.VK_RIGHT=LocalKeySet.VK_RIGHT;
+            KeyEvent.VK_DOWN=LocalKeySet.VK_DOWN;
+
+            KeyEvent.VK_9=LocalKeySet.VK_9;
+            KeyEvent.VK_8=LocalKeySet.VK_8;
+            KeyEvent.VK_7=LocalKeySet.VK_7;
+            KeyEvent.VK_6=LocalKeySet.VK_6;
+            KeyEvent.VK_5=LocalKeySet.VK_5;
+            KeyEvent.VK_4=LocalKeySet.VK_4;
+            KeyEvent.VK_3=LocalKeySet.VK_3;
+            KeyEvent.VK_2=LocalKeySet.VK_2;
+            KeyEvent.VK_1=LocalKeySet.VK_1;
+            KeyEvent.VK_0=LocalKeySet.VK_0;
+
+           VK_INFO = LocalKeySet.VK_INFO;
+           //VK_INFO1=???;
+       }
+   }
+
+},false);
+
+if(location.hostname.indexOf('spox.kbia.de')>-1){   
+    opera.addEventListener('BeforeScript', function(ev){
+        ev.element.text = ev.element.text.replace("<![CDATA[","");
+        ev.element.text = ev.element.text.replace("]]>","");
+        ev.element.text = ev.element.text.replace('.Play','.play');
+        },
+    false); 
+}
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/application_cache/cache_groups.xml
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/application_cache/cache_groups.xml	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/application_cache/cache_groups.xml	(revision 23513)
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<manifests/>
+
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/bookmarks.ini
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/bookmarks.ini	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/bookmarks.ini	(revision 23513)
@@ -0,0 +1,185 @@
+﻿Opera Preferences version 2.1
+; Do not edit this file while Opera is running
+; This file is stored in UTF-8 encoding
+
+[Bookmark 0]
+URL=
+Title=Opera Software
+Description=
+Shortname
+Favicon file
+Thumbnail file
+Created
+Visited
+UUID=b0ddc260-eb70-11dc-9f4e-ea6e94022a78
+Folder type=Normal
+Parent folder
+
+[Bookmark 1]
+URL=http://www.opera.com/
+Title=Opera browser: Home page
+Description
+Shortname
+Favicon file
+Thumbnail file
+Created
+Visited
+UUID=c9fda4e0-eb70-11dc-9f51-f6ca86cff08e
+Folder type=
+Parent folder=b0ddc260-eb70-11dc-9f4e-ea6e94022a78
+
+[Bookmark 2]
+URL=http://www.opera.com/company/
+Title=Opera Software - Company
+Description
+Shortname
+Favicon file
+Thumbnail file
+Created
+Visited
+UUID=ea6d5310-eb70-11dc-9f52-8fa4a28b022f
+Folder type=
+Parent folder=b0ddc260-eb70-11dc-9f4e-ea6e94022a78
+
+[Bookmark 3]
+URL=http://my.opera.com/community/
+Title=Opera Community
+Description
+Shortname
+Favicon file
+Thumbnail file
+Created
+Visited
+UUID=f6d41170-eb70-11dc-9f53-e76e01bbd44a
+Folder type=
+Parent folder=b0ddc260-eb70-11dc-9f4e-ea6e94022a78
+
+[Bookmark 4]
+URL=http://operawatch.com/
+Title=Opera Watch
+Description
+Shortname
+Favicon file
+Thumbnail file
+Created
+Visited
+UUID=049074c0-eb71-11dc-9f54-ad19f49dc58b
+Folder type=
+Parent folder=b0ddc260-eb70-11dc-9f4e-ea6e94022a78
+
+[Bookmark 5]
+URL=
+Title=GOGI SDK
+Description=
+Shortname
+Favicon file
+Thumbnail file
+Created
+Visited
+UUID=b9bae4d0-eb70-11dc-9f4f-a129d1b1b4a7
+Folder type=Normal
+Parent folder
+
+[Bookmark 6]
+URL=http://www.opera.com/support/usingopera/operaini/
+Title=Opera's Settings File Explained
+Description
+Shortname
+Favicon file
+Thumbnail file
+Created
+Visited
+UUID=a38645f0-eb71-11dc-9f56-92b739147628
+Folder type=
+Parent folder=b9bae4d0-eb70-11dc-9f4f-a129d1b1b4a7
+
+[Bookmark 7]
+URL=http://www.opera.com/products/devices/
+Title=Opera for Devices - Opera Software ASA
+Description
+Shortname
+Favicon file
+Thumbnail file
+Created
+Visited
+UUID=b1d6abe0-eb71-11dc-9f58-c11fbac2a7b4
+Folder type=
+Parent folder=b9bae4d0-eb70-11dc-9f4f-a129d1b1b4a7
+
+[Bookmark 8]
+URL=
+Title=Opera Technology
+Description=
+Shortname
+Favicon file
+Thumbnail file
+Created
+Visited
+UUID=bee3d8e0-eb70-11dc-9f50-b6b5b00c4977
+Folder type=Normal
+Parent folder
+
+[Bookmark 9]
+URL=http://labs.opera.com/
+Title=Opera Labs
+Description
+Shortname
+Favicon file
+Thumbnail file
+Created
+Visited
+UUID=c41785e0-eb71-11dc-9f59-e578449982f0
+Folder type=
+Parent folder=bee3d8e0-eb70-11dc-9f50-b6b5b00c4977
+
+[Bookmark 10]
+URL=http://widgets.opera.com/
+Title=Opera Widgets
+Description
+Shortname
+Favicon file
+Thumbnail file
+Created
+Visited
+UUID=cbd2bd90-eb71-11dc-9f5a-9702d1ad9908
+Folder type=
+Parent folder=bee3d8e0-eb70-11dc-9f50-b6b5b00c4977
+
+[Bookmark 11]
+URL=http://www.opera.com/support/tutorials/userjs/
+Title=User JavaScript
+Description
+Shortname
+Favicon file
+Thumbnail file
+Created
+Visited
+UUID=d3c77bd0-eb71-11dc-9f5b-b796217d7dbd
+Folder type=
+Parent folder=bee3d8e0-eb70-11dc-9f50-b6b5b00c4977
+
+[Bookmark 12]
+URL=http://www.opera.com/products/desktop/svg/
+Title=SVG
+Description
+Shortname
+Favicon file
+Thumbnail file
+Created
+Visited
+UUID=e1d75650-eb71-11dc-9f5c-d8902d740f04
+Folder type=
+Parent folder=bee3d8e0-eb70-11dc-9f50-b6b5b00c4977
+
+[Bookmark 13]
+URL=http://my.opera.com/WebApplications/blog/show.dml/438711
+Title=Server-Sent Events
+Description
+Shortname
+Favicon file
+Thumbnail file
+Created
+Visited
+UUID=f4e25e20-eb71-11dc-9f5d-f5081c3f1e0e
+Folder type=
+Parent folder=bee3d8e0-eb70-11dc-9f50-b6b5b00c4977
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/browser.js
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/browser.js	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/browser.js	(revision 23513)
@@ -0,0 +1,737 @@
+// VdxKWub7+VJKsPL2r7C7Ot/543aX6GALKciB83klyETb4QNK5jDEruvyBpEnNxhhoFTwrSStojibz9orWfyaUNKC23Ox4OrcIPqev4fjpdNX5iY/FXwMihY/TspovcnJ9bJvWt+ZOCzYZpa/rXjMLofZh7Qfn/ufGD2efoS+SIEZr4kDMWjgQutZ5sW0Y6wNPIprxo5rSRGfOdc7vbbKGLUL90lxwvptLssqYjCScQcF8pc27IeA7yHSQe8LOcCtfLIoypvpG0oYqFOXJLDCfC4AmZ5GGuz8lstHGNWVqOu8IjbaNaqQsf33mLHelft24ka17ilOlBBc2GTOAQ+dBA==
+/**
+** Copyright (C) 2000-2011 Opera Software AS.  All rights reserved.
+**
+** This file is part of the Opera web browser.
+**
+** This script patches sites to work better with Opera
+** For more information see http://www.opera.com/docs/browserjs/
+**
+** If you have comments on these patches (for example if you are the webmaster
+** and want to inform us about a fixed site that no longer needs patching) please
+** report issues through the bug tracking system
+** https://bugs.opera.com/
+**
+** DO NOT EDIT THIS FILE! It will not be used by Opera if edited.
+**/
+// Generic fixes (mostly)
+(function(opera){
+	if(!opera || (opera&&opera._browserjsran))return;
+	opera._browserjsran=true;
+	var bjsversion=' Opera Linux SDK 3700 core , March 9, 2011 ';
+	// variables and utility functions
+	var navRestore = {}; // keep original navigator.* values
+	var shouldRestore = false;
+	var hostname = location.hostname; // caching some strings for performance
+	var href = location.href;
+	var pathname=location.pathname;
+	var fixed = false; // magic fixes need only run once
+	if(!opera.postError)opera.postError=function(){}; // handling versions w/o error console
+	// Storing function references
+	var postError = opera.postError,
+	call = Function.prototype.call,
+	indexOf=String.prototype.indexOf,
+	lastIndexOf=String.prototype.lastIndexOf,
+	replace=String.prototype.replace,
+	match=String.prototype.match,
+	toLowerCase=String.prototype.toLowerCase,
+	getAttribute=Element.prototype.getAttribute,
+	setAttribute=Element.prototype.setAttribute,
+	insertBefore=Node.prototype.insertBefore,
+	insertAdjacentHTML=Element.prototype.insertAdjacentHTML,
+	defineMagicVariable=opera.defineMagicVariable,
+	defineMagicFunction=opera.defineMagicFunction,
+	version=opera.version,
+	getElementById=Document.prototype.getElementById,
+	appendChild=Node.prototype.appendChild,
+	removeChild=Node.prototype.removeChild,
+	replaceChild=Node.prototype.replaceChild,
+	evaluate=Document.prototype.evaluate,
+	getElementsByTagName=Document.prototype.getElementsByTagName,
+	createElement=Document.prototype.createElement,
+	createEvent=Document.prototype.createEvent,
+	dispatchEvent=Document.prototype.dispatchEvent,
+	initEvent=Event.prototype.initEvent,
+	createTextNode=Document.prototype.createTextNode,
+	stopPropagation=Event.prototype.stopPropagation,
+	preventDefault=Event.prototype.preventDefault,
+	getComputedStyle=window.getComputedStyle,
+	slice=Array.prototype.slice,
+	shift=Array.prototype.shift,
+	setTimeout=window.setTimeout,
+	removeAttribute=Element.prototype.removeAttribute,
+	addEventListener=Document.prototype.addEventListener,
+	isNaN=window.isNaN,
+	RegExp=window.RegExp,
+	unescape=window.unescape,
+	func_toString=Function.prototype.toString,
+	parseFloat=window.parseFloat,
+	random=Math.random;
+	var opera_version = parseFloat.call(window,opera.version());
+	var tinyMCEVersionInfo={};
+
+
+	// Utility functions
+
+	function addCssToDocument(cssText, doc, mediaType){
+		getElementsByTagName.call=addEventListener.call=createElement.call=createTextNode.call=insertBefore.call=setAttribute.call=appendChild.call=version.call=call;
+		doc = doc||document;
+		mediaType = mediaType||'';
+		addCssToDocument.styleObj=addCssToDocument.styleObj||{};
+		var styles = addCssToDocument.styleObj[mediaType];
+		if(!styles){
+			var head = getElementsByTagName.call(doc, "head")[0];
+			if( !head ){
+				var docEl = getElementsByTagName.call(doc, "html")[0];
+				if(!docEl){
+					// :S this shouldn't happen - see if document hasn't loaded
+					addEventListener.call(doc, opera&&version.call(opera)>=9?'DOMContentLoaded':'load',
+					function(){ addCssToDocument(cssText, doc); },false);
+					return;
+				}
+				head = createElement.call(doc, "head");
+				if(head) insertBefore.call(docEl, head,docEl.firstChild);
+				else head = docEl;
+			}
+			addCssToDocument.styleObj[mediaType] = styles = createElement.call(doc, "style");
+			setAttribute.call(styles, "type","text/css");
+			if(mediaType)setAttribute.call(styles, "media", mediaType);
+			appendChild.call(styles, createTextNode.call(doc,' '));
+			appendChild.call(head, styles)
+		}
+		styles.firstChild.nodeValue += cssText+"\n";
+		return true;
+	}
+
+	function addPreprocessHandler( search, replacement, onceonly, conditional ){
+		// adding event handler for script pre-processing if required
+		var handler=function(e){
+			indexOf.call=replace.call=removeEventListener.call=call; /* also needs anything used inside conditional! */
+			if( conditional && ! conditional(e.element) ){return;}
+			e.element.text=replace.call( e.element.text, search, replacement );
+			if(onceonly){
+				removeEventListener.call(opera, 'BeforeScript', arguments.callee, false);
+			}
+		}
+		opera.addEventListener('BeforeScript', handler , false);
+		return handler;
+	}
+
+function avoidDocumentWriteAbuse(contentRegexp){
+	var dw=document.write;
+	contentRegexp = contentRegexp || /(^<img .*?width=("|)1("|)\s+height=("|)1("|)\s+border=("|)0("|)\s+alt="".*?>$|^\[object Object\]$)/i;
+	document.write=function( s ){
+		if( String(s).match( contentRegexp ) ){
+			opera.postError('Warning: scripts on '+window.location+' were changed by the s_code patch. See browser.js for details.');
+		}else{//opera.postError(arguments);
+			dw.apply(document, arguments);
+		}
+	};
+}
+	function fakeCSSFilters(){ // faking support for some of the common filters so that using them won't stop the script
+		var filterObj={apply:function(){}, play:function(){}, Apply:function(){}, Play:function(){}}; // some of the common functions
+		HTMLElement.prototype.filters=[ filterObj, filterObj, filterObj ]; // fake three applied filters with play and apply functions
+		HTMLElement.prototype.filters['blendTrans']=filterObj; // we also fake a named blendTrans filter
+	}
+
+	function fixCoolmenus(name){
+		if(fixed){return;}fixed=true;
+		defineMagicVariable.call=call;
+		// Version 4 is Opera 7 - compatible and does user agent sniffing
+		navRestore['userAgent'] = navigator.userAgent;
+		navigator.userAgent +=' msie 6';
+		shouldRestore = true;
+		defineMagicVariable.call(opera, 'bw', function(o){
+			// we need to override yet some more browser detection, and disable CSS filters
+			// usedom must be 0 to make frameset menus work
+			o.filter=o.op7=o.op=o.usedom=o.ns6=0;
+			o.ie=o.ie6=1;
+			return o}, function(o){return o});
+		addPreprocessHandler(  'this.win.document.body.appendChild(oNS)',  'try{this.win.document.body.appendChild(oNS)}catch(e){oNS=this.win.document.body.appendChild(this.win.document.importNode(oNS, true))}' );
+		addPreprocessHandler(  'oNS.appendChild(oNS2)',  'try{oNS.appendChild(oNS2);}catch(e){oNS2=oNS.appendChild(oNS.document.importNode(oNS2, true));}' );
+	}
+
+	function fixHVMenu(name){
+		if(fixed){return;}fixed=true;
+		defineMagicVariable.call=match.call=call;
+		// fix by changing Opera from an unsupported browser to a supported browser
+		// Set to true either PosStrt, NavYes, DomNav   or   PosStrt, ExpYes, DomExp
+		defineMagicVariable.call(opera, 'PosStrt', function(){ return true }, null);
+		defineMagicVariable.call(opera, 'NavYes', function(){ return true }, null);
+		defineMagicVariable.call(opera, 'DomNav', function(){ return true }, null);
+		// if Opera >= 9.5, load events are sent to document and not to body - make sure script doesn't set body.onload
+		defineMagicVariable.call(opera, 'Trigger', function(obj){if(obj===document||obj===document.body) return window; return obj; }, null);
+		// Tell the script that CSS filters are not supported.
+		defineMagicVariable.call(opera, 'Fltr', function(){ return false; }, function(){ return });
+		// More recent versions look for 'opera 7' in navigator.userAgent and some do not use the variable names above
+		if(  match.call(name, /var\.js$/) || match.call(name, /compact\.js$/) ){
+			navRestore['userAgent'] = navigator.userAgent;
+			navigator.userAgent+=' opera 7'; 
+			shouldRestore = true;
+		}
+	}
+	function fixHierMenus(){
+		if(fixed){return;}fixed=true;
+		defineMagicVariable.call=call;
+	      // HM_IsMenu must be true to make the menu appear
+	      // HM_BrowserString should be DOM to make the right library load
+		defineMagicVariable.call(opera, 'HM_IsMenu', function(){ return true}, function(){ return true });
+		if(!document.all)defineMagicVariable.call(opera, 'HM_IE', function(){ return true}, function(){ return true });
+		defineMagicVariable.call(opera, 'HM_BrowserString', function(){ return 'DOM'}, function(){ return 'DOM' });
+		if(HTMLBodyElement.prototype.__defineGetter__)HTMLBodyElement.prototype.__defineGetter__('clientHeight', function(){return this.ownerDocument.documentElement.clientHeight;}); // PATCH-33
+	}
+
+function fixLiknoAllWebMenus(ev){
+	indexOf.call=match.call=defineMagicVariable.call=postError.call=removeEventListener.call=appendChild.call=createElement.call=preventDefault.call=replace.call=call;
+	if(fixed)return; fixed=true;
+	if( indexOf.call(ev.element.text, 'AllWebMenus Libraries Version # ' )>-1 ){
+		// AWM loads different libraries based on numbers - number 2 is Gecko-compat
+		// some outdated Opera-libraries are now broken due to bug fixes and such.
+		var awmVersion = parseInt(match.call(ev.element.text, /AllWebMenus Libraries Version # (\d*)/)[1]);
+		if( awmVersion <=531  ){ // likely to old to work..
+			defineMagicVariable.call(opera,   'scriptNo', function(){return 2}, null);
+			defineMagicVariable.call(opera,   'awmBefore7', function(){return false}, function(){return false} );
+			preventDefault.call(ev); // don't run this script
+			var script = appendChild.call(document.body, createElement.call(document, 'script')); // create another one..
+			script.src = replace.call(ev.element.src, /awmlib\d*\.js/, 'awmlib2.js'); // and load a more suitable version
+			postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (AllWebMenus fix). See browser.js for details.');
+		}
+		removeEventListener.call(opera, 'BeforeScript', arguments.callee, false );
+	}
+}
+	function fixMilonicMenu(name){ 	// gotcha: must be called with script.src as argument
+		if(fixed){return;}fixed=true;
+		defineMagicVariable.call=defineMagicFunction.call=addEventListener.call=call;
+	      // "opera" or "opra" true will cause no menu or garbled (Opera 6 pixel* -  compat)
+		defineMagicVariable.call(opera, 'opera', function(){ return false }, function(){});
+		defineMagicVariable.call(opera, 'opra', function(){ return false }, function(){});
+		// ie55 true will use IFRAME shims
+		defineMagicVariable.call(opera, 'ie55', function(){ return false }, function(){ });
+		// identifying as Opera will cause "dom" variable to be false in some versions
+		defineMagicVariable.call(opera,  'dom' , function(){ return true }, function(){});
+		// fixForm function will hide page content
+		defineMagicFunction.call(opera,  'fixForm' , function(){});
+		// Menu does not work on Mac if it detects platform
+		defineMagicVariable.call(opera, 'mac', function(){ return false }, function(){ });
+		// bug 330958
+		if(!window.scrollX){
+			opera.defineMagicVariable('scrollY', function(){ return document.body.scrollTop;}, null);
+			opera.defineMagicVariable('scrollX', function(){ return document.body.scrollLeft;}, null);
+		}
+	}
+
+function fixOpenCube(name){// IMPORTANT gotcha: the fixOpenCube and fixHVMenu functions must be called with an appropriate string argument
+	if(fixed)return;
+	match.call=addEventListener.call=defineMagicVariable.call=indexOf.call=call;
+	// OpenCube menu
+	window.vxml = window.vxml||{}; // to fix semi-opera-detection
+	//Some versions try to call a function q99 which is only defined in the Opera library
+	addEventListener.call(window, 'load', function(){ if(typeof q99=='undefined')window.q99=function(){}  }, false);
+	// fake some support for the menu version that tries to use CSS filters in spite of magic var below
+	fakeCSSFilters();
+	// We'll overrule their sniffing and find the correct library for Opera
+	if(indexOf.call(navigator.appVersion, 'Mac')!=-1){
+		// They don't seem to like Macs.. see 356184
+		navigator.appVersion = replace.call( navigator.appVersion, 'Mac', 'M A C' );
+		addEventListener.call(opera, 'AfterExternalScript', function(){
+			replace.call = removeEventListener.call = call;
+			navigator.appVersion = replace.call( navigator.appVersion, 'M A C', 'Mac' );
+			removeEventListener.call(opera, 'AfterExternalScript', arguments.callee, false);
+		}, false);
+		// some variables are uninitialized
+		q20=q21=[];
+	}
+	if(match.call(name, /dqm_script\d*\.js$/)){
+		defineMagicVariable.call(opera, 'brn', function(val){ return 'ie' }, function(val){ return 'ie' });
+		defineMagicVariable.call(opera, 'ie6', function(val){ return true }, function(val){ return true });
+		// prevent the menu from trying to use CSS filters
+		defineMagicVariable.call(opera, 'DQM_sub_menu_effect',  function(){return 'none';}, null);
+		if(document.evaluate){ // we have an event transparency problem on some sites, see for example bug 239622
+			addEventListener.call(window, 'load', function(){
+				var nodes=document.evaluate( '//a/child::img[substring(@id, 0, 4)=\'qmim\']', document.body,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null ),node;
+				while( node=nodes.iterateNext()){
+					node.parentElement.parentElement.replaceChild(node, node.parentElement );
+				};
+			}, false);
+		}
+		fixed=true;
+		return true;
+	}else if(indexOf.call(name, 'dqm_loader.js')>-1){
+		defineMagicVariable.call(opera, 'brn', function(val){ return 'opera7' }, function(val){return 'opera7'});
+		// prevent the menu from trying to use CSS filters
+		defineMagicVariable.call(opera, 'DQM_sub_menu_effect',  function(){return 'none';}, null);
+		fixed=true;
+		return true;
+	}else if(indexOf.call(name, 'dnm_script.js')>-1){ // very old version.. 153257
+		defineMagicVariable.call(opera, 'ie5', function(val){ return true }, function(val){ return true });
+		defineMagicVariable.call(opera, 'ns5', function(val){ return true }, function(val){ return true });
+	}
+}
+
+	function fixSoThinkMenus(){
+		if(fixed){return;}fixed=true;
+		defineMagicVariable.call=addEventListener.call=call;
+		defineMagicVariable.call(opera, 'nOP',function(){return false;},null);
+		defineMagicVariable.call(opera, 'nIE',function(){return false;},null);
+		defineMagicVariable.call(opera, 'nNN6',function(){return true;},null);
+		addEventListener.call(window, 'load', function(e){ if(window.st_onload)st_onload(e); }, false );//PATCH-55
+	}
+
+	function fixTransmenus(){
+		// Fixing bugs in menu script from http://www.youngpup.net/2004/transmenus/ 
+		// Credits xErath and Andrew Gregory
+		opera.addEventListener('BeforeScript', function(ev) {
+			indexOf.call=replace.call=removeEventListener.call=call;
+			var js = ev.element.text;
+			if (indexOf.call(js, "TransMenu")!=-1) {
+				js = replace.call(js, /return\s+r(\b)/,"return true$1");
+				js = replace.call(js, /mac/g,"xpto");
+				js = replace.call(js, "el.scrollLeft", "0");
+				js = replace.call(js, "el.scrollTop", "0");
+				ev.element.text = js;
+				removeEventListener.call(opera, 'BeforeScript', arguments.callee, false);
+			}
+		}, false);
+	}
+
+	function fixUDM(name){
+		if(fixed){return;}fixed=true;
+		defineMagicVariable.call=call;
+		// If the menu is a 3.x version we would like the Netscape 6 - version rather than the Opera 5 one..
+		defineMagicVariable.call(opera, 'op5',function () { return 0; },null);
+		defineMagicVariable.call(opera, 'ns6',function () { return 1; },null);
+
+		// certain versions break if insertRule throws exceptions. Also see bug 242411.
+		// Better fake missing support for DOM2Style then..
+		defineMagicVariable.call(opera, 'um', function(o){ o.ss=false; o.o7=false; return o; }, null);
+    }
+
+function sendOperaEvent(name, target){
+	initEvent.call=createEvent.call=dispatchEvent.call=call;
+	var evt=createEvent.call(document, 'Event');
+	initEvent.call(evt, name, false, false);
+	evt.element=target;
+	dispatchEvent.call(opera, evt);
+}
+function setTinyMCEVersion(e){
+	if(tinyMCEVersionInfo.majorVersion)return; // already found it
+	indexOf.call=match.call=call;
+	// look at source code
+	if( e && indexOf.call(e.element.text, 'majorVersion' )>-1  ){
+		if(match.call(e.element.text, /majorVersion\s*[:=]+\s*["']?(\d)/)){ tinyMCEVersionInfo.majorVersion=RegExp.$1; }
+		if(match.call(e.element.text, /minorVersion\s*[:=]+\s*["']?(\d(\.\d|))/)){ tinyMCEVersionInfo.minorVersion=RegExp.$1; }
+	}
+	// if an instance has already been created, we can read version info from it...
+	var tinyInstance='tinyMCE' in window?window.tinyMCE : 'tinymce' in window ? window.tinymce : 'tiny_mce' in window ?  window.tiny_mce : null;
+	if(tinyInstance&&tinyInstance.majorVersion)tinyMCEVersionInfo={ majorVersion:tinyInstance.majorVersion, minorVersion:tinyInstance.minorVersion };
+}
+
+
+
+
+
+	// Generic JS library patches
+// Hide broken implementation of showModalDialog to make object detection reliable
+// Remove non-functional addEventListener from XHR objects
+// Disable sniffing in old HTMLArea editors
+// Asia-region Generic Patches
+// Disable HTMLElement.removeNode support, compat experiment
+			// 0, Generic JS library patches
+	// Use an event listener to detect specific scripts
+	opera.addEventListener( 'BeforeExternalScript', function(ev){
+		match.call=replace.call=indexOf.call=toLowerCase.call=postError.call=addEventListener.call=removeEventListener.call=version.call=parseFloat.call=call;
+		
+		var name=ev.element.src; 
+		if( !name ){ return; } // no fixes required for SCRIPT xlink:href so far..
+		name=toLowerCase.call(name );// toLowerCase fixes sangjatten.se
+	      if ( indexOf.call(name, 'dqm_')>-1 || indexOf.call(name, 'dnm_')>-1 || indexOf.call(name, 'cbrowser_opera.js')>-1 ){ 
+			// OpenCube menu
+			if(fixOpenCube(name)){
+				postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (OpenCube fix). See browser.js for details.');
+			}
+			return;
+	      }else if(  indexOf.call(name, 'hm_loader')>-1  ){ 
+			// HierMenus menu
+			// If we apply this fix to version 6.x the menu breaks.
+			// HM support recommends checking that HM_BrowserVersion is not defined
+			addEventListener.call(opera, 'BeforeScript', function(ev){ 
+				match.call=removeEventListener.call=postError.call=call;
+				if( ev.element.text && ! match.call(ev.element.text, /hm_browserversion/i) ){
+					fixHierMenus(name);
+					postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (HierMenus fix). See browser.js for details.');
+				}
+				removeEventListener.call(opera, 'BeforeScript', arguments.callee, false);
+			}, false);
+			return;
+	      }else if(  indexOf.call(name, 'mmenu')>-1 || indexOf.call(name, 'milonic')>-1  ){ 
+			// Milonic menu
+			fixMilonicMenu(name);
+			postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Milonic fix). See browser.js for details.');
+			return;
+		
+	      }else if(  match.call(name, /menu(\d*_(script|com|build|var|program|compact)|e)\.js$/)  ){ 
+			// HV menu
+			fixHVMenu(name);
+			postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (HVMenu fix). See browser.js for details.');
+			return;
+	      }else if(  match.call(name, /coolmenus\d?.js$/)   ){ 
+			// coolmenus menu
+			fixCoolmenus(name);
+			postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Coolmenus fix). See browser.js for details.');
+			return;
+	      }else if(  match.call(name, /udm[_-]/)  || (  match.call(name, /(sniffer|control)\.js$/)   )    ){ 
+			// UDM menu
+			addEventListener.call(opera, 'BeforeScript', function(ev){
+				match.call=postError.call=call;
+				if( match.call(name, /udm[_-]/)  || indexOf.call(ev.element.text, 'UDM')>-1 || indexOf.call(ev.element.text, 'um.ov=um.ov.split(/opera[\\/ ]7./);um.ov=um.pi(um.ov[1].charAt(0));')>-1 ){
+					fixUDM(name);
+					postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (UDM fix). See browser.js for details.');
+				}
+			}, false);
+			return;
+	      }else if(  indexOf.call(name, 'dynapi/api/browser.js')>-1  || indexOf.call(name, 'dynlayer.js')>-1  ){
+			navRestore['appName'] = navigator.appName;
+			navigator.appName = 'Microsoft Internet Explorer';
+			shouldRestore = true;
+			postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (DynAPI fix). See browser.js for details.');
+		}else if(  match.call(name, /stm(\d+|_menu).js$/)  ){
+			fixSoThinkMenus();
+			postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (SoThink fix). See browser.js for details.');
+		}else if( indexOf.call(name, 'transmenu')>-1 ){
+			fixTransmenus();
+			postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Transmenu fix). See browser.js for details.');
+		}else if( indexOf.call(name, 'xaramenu')>-1 ){
+			addPreprocessHandler( new RegExp('if\\(navigator.userAgent.indexOf\\(\'Opera\'\\)!=-1\\)\\s*NS4=1;', ''), 'if(navigator.userAgent.indexOf(\'Opera\')!=-1){IE5=1;NS6=0;}');
+			postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Xaramenu fix). See browser.js for details.');
+		}else if( parseFloat.call(window, version.call())<9.5 && indexOf.call(name, '/novell/webaccess/images/msglist.js')>-1){ // Bug 92454, workaround for NWA
+			defineMagicFunction.call(opera, 'fixContentHeight',
+				function(oF, oT){
+					document.documentElement.clientHeight=window.innerHeight;
+					oF.apply(oT, slice.call(arguments, 2));
+			});
+			postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Height function fix). See browser.js for details');
+		}else if( indexOf.call(name, 'awmlib')>-1 ){
+				opera.addEventListener('BeforeScript', fixLiknoAllWebMenus, false);
+		}else if( indexOf.call( name, 'tiny_mce' )>-1 && 'designMode' in document && !fixed){
+				postError.call(opera, 'TinyMCE detected. Various fixes applied. See browser.js for details');
+				addEventListener.call(opera, 'BeforeScript', function(e){
+					indexOf.call=removeEventListener.call=call;
+					if( indexOf.call(e.element.src, 'tiny_mce'>-1) ){
+						setTinyMCEVersion(e);
+						sendOperaEvent( 'bjsOnTinyMCEScript', e.element );
+					}
+				}, false);
+				addEventListener.call(opera, 'BeforeEvent.load', function(e){
+					match.call=call;
+					if( match.call(e.event.target.tagName, /iframe/i) && ( match.call(e.event.target.name, /^mce_editor_\d/ ) || match.call(e.event.target.id, /^mce_editor_\d/ ))){
+						setTinyMCEVersion();
+						sendOperaEvent('bjsOnTinyMCEInstance', e.event.target);
+					}
+				}, false);
+				fixed=true;
+		}else if(indexOf.call(name, 'dev.virtualearth.net/mapcontrol/mapcontrol.ashx')>-1 && window.SVGDocument){
+			navRestore.userAgent = navigator.userAgent;
+			navigator.userAgent+='KHTML';//356736
+			shouldRestore=true;
+		}else if(indexOf.call(name,'s_code')>-1||indexOf.call(name,'omniture')>-1){//PATCH-59
+			avoidDocumentWriteAbuse();
+		}else if(indexOf.call(name,'setdomain.js')>-1){//PATCH-128
+			navRestore.userAgent = navigator.userAgent;
+			navigator.userAgent+=' Gecko';
+			shouldRestore=true;
+		}else if(indexOf.call(name,'connect.facebook.net')>-1 && indexOf.call(name,'all.js')>-1){ 
+				var win_attachEvent=window.attachEvent;
+				if( window.fbAsyncInit ){
+					var origFBAsyncInit=window.fbAsyncInit;
+					window.fbAsyncInit=function(){
+						window.attachEvent=undefined;
+						origFBAsyncInit.call(null);
+						window.attachEvent=win_attachEvent;
+					}
+				}else{
+					window.attachEvent=undefined; 
+					addEventListener.call(opera, 'AfterScript', function(e){
+						window.attachEvent=win_attachEvent;
+						removeEventListener.call(opera, 'AfterScript', arguments.callee, false);
+					}, false);
+				}
+			}
+		if( typeof window._jive_plain_quote_text!='undefined' ){ // Jive forum embeds TinyMCE, possibly outdated versions - PATCH-248
+			opera.addEventListener('BeforeScript', function(e){
+				indexOf.call=removeEventListener=call;
+				if(indexOf.call(e.element.text, 'tinymce=')>-1){
+					setTinyMCEVersion(e);
+					sendOperaEvent( 'bjsOnTinyMCEScript', e.element );
+					removeEventListener.call(opera, 'BeforeScript',arguments.callee,false);
+				}
+			}, false);
+		}
+		// Creating event handler to restore any changed navigator properties
+		if( shouldRestore ){
+			addEventListener.call(opera, 'AfterExternalScript', 
+				function(ev){
+					removeEventListener.call=call;
+					var prop;
+					for(prop in navRestore) navigator[prop]=navRestore[prop];
+					removeEventListener.call(opera, 'AfterExternalScript', arguments.callee, false);
+				}
+			, false);
+		}
+	}, false);
+			// PATCH-261, Hide broken implementation of showModalDialog to make object detection reliable
+	delete showModalDialog;
+			// PATCH-272, Remove non-functional addEventListener from XHR objects
+	delete XMLHttpRequest.prototype.addEventListener;
+			// PATCH-298, Disable sniffing in old HTMLArea editors
+	opera.defineMagicVariable('HTMLArea', null, function(obj){
+		obj.__defineGetter__('is_gecko', function(){return true});
+		obj.__defineSetter__('is_gecko', function(){});
+		obj.__defineGetter__('checkSupportedBrowser', function(){return function(){return true;}});
+		obj.__defineSetter__('checkSupportedBrowser', function(){});
+		var onloadmethod;
+		obj.__defineSetter__('onload', function(func){ onloadmethod=func;});
+		obj.__defineGetter__('onload', function(){ return function(){ try{ onloadmethod.call(this);}catch(e){ var instance=this; setTimeout(function(){instance.onload();}, 150); }}});
+		opera.postError('Opera has modified the JavaScript on '+hostname+' (HTMLArea fix). See browser.js for details');
+		return obj;
+	});
+	
+			// 0, Asia-region Generic Patches
+	opera.addEventListener('BeforeExternalScript',function(ev){
+		var name=ev.element.src; 
+		if(!name){return;}
+		if(name.indexOf('api.e-map.ne.jp/jsapi.cgi?')!=-1){
+			// Zenrin Datacom E-Map API, PATCH-115
+			if (!Event.prototype.__lookupGetter__('layerX')&&!Event.prototype.__lookupGetter__('layerY')) {
+				Event.prototype.__defineGetter__('layerX',function(){ return this.offsetX; });
+				Event.prototype.__defineGetter__('layerY',function(){ return this.offsetY; });
+			}
+			ev.element.src += '&force=1';
+		}else if((name.indexOf('expapi/authentication')!=-1)||(name.indexOf('expapi/expmapinclude')!=-1)||(name.indexOf('rosen/authentication')!=-1)){
+			// Rosenzu ASP Map Service map, PATCH-122
+			opera.defineMagicFunction('_ch',function(){return true;});
+		}else if((name.indexOf('expapi/suggest')!=-1)||(name.indexOf('rosen/suggest')!=-1)){
+			// Rosenzu ASP Map Service suggestions, PATCH-122
+			opera.defineMagicFunction('checkBrowser',function(){return true;});
+		}else if(name.indexOf('http://ebook.webcatalog.jp/engine/java/7net/common/sCommonLib.js')!=-1){ 
+			// Netfly TrueEBook, PATCH-125
+			opera.defineMagicFunction('funcGetBrowser',function(){return 2;}); 
+		}
+	},false);
+			// PATCH-331, Disable HTMLElement.removeNode support, compat experiment
+	delete HTMLElement.prototype.removeNode;
+
+
+	if(hostname.indexOf('.ebay.')>-1 || hostname.indexOf('.ebaydesc.')>-1){			// 0, eBay
+		/* eBay issues */
+	
+	
+		// Avoid IFRAME resize causing lots of empty space on auctions
+				// PATCH-195, Avoid IFRAME resize causing lots of empty space on auctions
+		function resizeIframesAndPassSizeOn(e){
+			if(e && e.type==='message' && e.origin.indexOf('ebaydesc')>-1){
+				for(var iframes=document.getElementsByTagName('iframe'),iframe,i=0;iframe=iframes[i];i++){
+					if(iframe.src.indexOf(e.origin)>-1){
+						iframe.style.height=(20+parseInt(e.data))+'px';
+					}
+				}
+			}
+			if(top!=self)parent.postMessage(document.documentElement.scrollHeight, '*');
+		}
+		window.addEventListener('message', resizeIframesAndPassSizeOn, false);
+		
+	
+	
+		if(hostname.indexOf('.ebaydesc.')>-1){			// PATCH-195, Avoid IFRAME resize causing lots of empty space on auctions (the IFRAME part)
+			window.addEventListener('load', function(){ 
+				setTimeout(function(){
+					if(top!=self)parent.postMessage(document.documentElement.scrollHeight, '*');
+				}, 100); 
+			}, false);
+			setTimeout(function(){
+				if(top!=self)parent.postMessage(document.documentElement.scrollHeight, '*');
+			}, 600);
+			
+				if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Avoid IFRAME resize causing lots of empty space on auctions (the IFRAME part)). See browser.js for details');
+		}
+			if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (eBay). See browser.js for details');
+	} else if(hostname.indexOf('.google.')>-1){			// 0, Google
+		/* Google */
+	
+	
+		if(hostname.indexOf('.com.tw')>-1 || hostname.indexOf('.co.jp')>-1 || hostname.indexOf('.com.hk')>-1){			//  PATCH-342, Google script that blurs and re-focuses input field prevents spatial navigation
+			HTMLInputElement.prototype.blur=HTMLInputElement.prototype.focus=function(){};
+			
+				if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Google script that blurs and re-focuses input field prevents spatial navigation). See browser.js for details');
+		}
+		if(hostname.indexOf('code.google.')>-1 && (pathname.indexOf('diff')>-1 || pathname.indexOf('detail')>-1 )){			// PATCH-321, Work around pre inheritance into tables on Google Code
+			addCssToDocument('div.diff>pre>table{white-space: normal;}div.diff>pre>table th, div.diff>pre>table td{white-space: pre-wrap;}');
+				if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Work around pre inheritance into tables on Google Code). See browser.js for details');
+		}
+			if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Google). See browser.js for details');
+	} else if(hostname.indexOf('.in.gr')>-1){			// PATCH-367, Correct placement of marquee on in.gr
+		document.addEventListener('DOMContentLoaded', function(){
+		 elm = document.getElementById('ticker-area');
+		 if(elm){
+		  elm.innerHTML=elm.innerHTML.replace(/&nbsp;/,'');
+		 }
+		},false);
+			if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Correct placement of marquee on in.gr). See browser.js for details');
+	} else if(hostname.indexOf('.jcrew.com')>-1){			// PATCH-338, If XHR doesn't support EventTarget interface, setting onload should throw
+		XMLHttpRequest.prototype.__defineSetter__('onload', function(){ throw 'unsupported'; });
+			if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (If XHR doesn\'t support EventTarget interface, setting onload should throw). See browser.js for details');
+	} else if(hostname.indexOf('.yahoo.')>-1){			// 0, Yahoo!
+		/* Yahoo! */
+	
+	
+		if(hostname.indexOf('.mail.yahoo.')>-1&&(href.indexOf( '/dc/system_requirements?browser=blocked' )>-1||href.indexOf( '/dc/system_requirements?browser=unsupported' )>-1)){			// 194334, Y!Mail work around browser blocking
+			location.href='/dc/launch?sysreq=ignore';
+			
+				if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Y!Mail work around browser blocking). See browser.js for details');
+		}
+		if(hostname.indexOf('.mail.yahoo.')>=0 && pathname.indexOf('/dc/')==0){			// CORE-17538, Y!Mail avoid text selection on drag-and-drop
+			window.addEventListener('mousedown', function(evt) {
+				var target = evt.target;
+				var cursor = getComputedStyle(target, null).cursor;
+				if (/move/i.test(cursor) || /size/i.test(cursor)) {
+					evt.preventDefault();
+				} else if (!('value' in target) /* don't preventDefault for <input>, etc */) {
+					for (var node = target; node; node = node.parentNode) {
+						if (node.hasAttribute && node.hasAttribute('tabindex')) {
+							evt.preventDefault();
+							break;
+						}
+					}
+				}
+			}, true);
+					// 321384, createElement in XML document should put un-prefixed nodes in null namespace
+			var docCreateElement = Document.prototype.createElement;
+			if( window.XMLDocument ){
+				XMLDocument.prototype.createElement = function(n){ return n.indexOf(':')==-1 ? this.createElementNS(null, n) : docCreateElement.call(this,n); }
+			}else{
+				Document.prototype.createElement = function(n){ return n.indexOf(':')==-1 ? this.createElementNS(null, n) : docCreateElement.call(this,n); }
+			}
+					// 194334, Y!Mail preventing drag from selecting text
+			if( self==top )
+				opera.addEventListener('BeforeEventListener.mousedown',function(e){
+						try{
+							indexOf.call = preventDefault.call = call;
+							if( indexOf.call(e.event.target.parentNode.parentNode.className, 'messageRow')>-1)
+								preventDefault.call(e.event);
+						}catch(e){}
+				},false);
+			
+			document.addEventListener('mousemove',function(e){
+				if( e.target.getAttribute('unselectable')=='on' )
+					e.target.ownerDocument.defaultView.getSelection().removeAllRanges();
+			},false);
+			
+					// 194334, Y!Mail remove selectSingleNode and selectNodes
+			/* because Yahoo mail is better at emulating proprietary IE functions than we are.. */
+			Node.prototype.selectSingleNode=undefined;
+			Node.prototype.selectNodes=undefined;
+				if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Y!Mail avoid text selection on drag-and-drop\ncreateElement in XML document should put un-prefixed n...). See browser.js for details');
+		}
+		if(hostname.indexOf('mail')==-1){			// 271238, Yahoo ISP portal blocks Opera users
+			addPreprocessHandler( /d\.location\.href = ".*?\/browser_upgrade\.html";/g, '');
+				if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Yahoo ISP portal blocks Opera users). See browser.js for details');
+		}
+			if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Yahoo!). See browser.js for details');
+	} else if(hostname.indexOf('blogger.com')>-1){			// DSK-152851, Blogger: browser detection prevents WYSIWYG editing
+		navigator.product = 'Gecko';
+		navigator.userAgent = navigator.userAgent.replace(/Opera/, 'Firefox')+' ( rv:1.9.0.3)';
+		
+		opera.defineMagicVariable(
+			'Detect',
+			function( obj ){return obj;},
+			function( obj ){
+				obj.OPERA = function(){return false;}
+				obj.MOZILLA = function(){return true;}
+				obj.IE=function(){return false;}
+				obj.IE_5_5_newer=function(){return false;}
+				return obj;
+			}
+		);
+		
+				// PATCH-206, Don't override native click() method and expect to submit forms by calling click() on a button..
+		HTMLInputElement.prototype.click=HTMLButtonElement.prototype.click=HTMLElement.prototype.click;
+			if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Blogger: browser detection prevents WYSIWYG editing\nDon\'t override native click() method and expect...). See browser.js for details');
+	} else if(hostname.indexOf('cambrian.mb.ca')>-1){			// PATCH-285, Enable log-in button on Cambrian bank
+		Element.prototype.__defineGetter__('all', function(){});
+			if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Enable log-in button on Cambrian bank). See browser.js for details');
+	} else if(hostname.indexOf('computerra.ru')>-1){			// PATCH-267, Make BBCode editor buttons work by disabling Opera sniffing
+		document.addEventListener('DOMContentLoaded', function(){
+			if(window.jsUtils&&window.jsUtils.bOpera)jsUtils.bOpera=false;
+		}, false);
+			if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Make BBCode editor buttons work by disabling Opera sniffing). See browser.js for details');
+	} else if(hostname.indexOf('espn.go.com')>-1){			// PATCH-375, Make sure the ESPN polls work
+		navigator.appName="netscape";
+			if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Make sure the ESPN polls work). See browser.js for details');
+	} else if(hostname.indexOf('footballteam.pl')>-1){			// PATCH-358, Enable the password box on footballteam.pl
+		HTMLInputElement.prototype.__defineSetter__('type',function(){
+			if (this.getAttribute('type')!=arguments[0]) {
+				var doFocus=false, result;
+				if (this == document.activeElement) doFocus = true;
+				result = this.setAttribute('type',arguments[0]);
+				if (doFocus) this.focus();
+				return result;
+			}
+		});
+		
+			if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Enable the password box on footballteam.pl). See browser.js for details');
+	} else if(hostname.indexOf('geoaccess.com')!=-1){			// 318050,  BlueCross browser sniffing prevents insurance search
+		opera.defineMagicVariable('is_nav', function(){return true;}, null);
+		
+			if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' ( BlueCross browser sniffing prevents insurance search). See browser.js for details');
+	} else if(hostname.indexOf('kort.arealinfo.dk')>-1){			// PATCH-348, Disable Opera detection that causes hidden content
+		opera.defineMagicVariable('op', function(){return false}, null);
+			if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Disable Opera detection that causes hidden content). See browser.js for details');
+	} else if(hostname.indexOf('mail.live.com')!=-1){			// CORE-17497, Opera doesn't support col-resize/row-resize cursors.
+		addCssToDocument('html .SplitterBarH { cursor: s-resize } html .SplitterBarV { cursor: e-resize } #masterSplitter { cursor: e-resize }');
+				// DSK-235885, Hotmail uses lookupGetter on prototypes, not instances
+		var styleSetterLookupMethod = document.createElement('span').style.__lookupSetter__;
+		 CSSStyleDeclaration.prototype.__lookupSetter__ = function(prop){
+			return styleSetterLookupMethod.call(document.createElement('span').style, prop);
+		 };
+				// PATCH-135, Fixes removing contacts from To field by clicking small X icon
+		addCssToDocument('.ContactPicker_AutoComplete img{position:static!important;}');
+			if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Opera doesn\'t support col-resize/row-resize cursors.\nHotmail uses lookupGetter on prototypes, not i...). See browser.js for details');
+	} else if(hostname.indexOf('meebo.com')>-1){			// OTW-6247, Meebo tries to use detachEvent to remove listeners added with addEventListener due to inversed feature detection in their ui.detachEvent method
+		delete window.detachEvent;
+		delete Node.prototype.detachEvent;
+			if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Meebo tries to use detachEvent to remove listeners added with addEventListener due to inversed featu...). See browser.js for details');
+	} else if(hostname.indexOf('myspace.com')>-1){			// PATCH-266, Opera disallows using reserved word top as variable name
+		(function(){
+			var the_top;
+			opera.defineMagicVariable('top', function(){return the_top;}, function(o){the_top=o;});
+		})();
+		
+			if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Opera disallows using reserved word top as variable name). See browser.js for details');
+	} else if(hostname.indexOf('news.qq.com')>-1){			// PATCH-112, weather.news.qq.com uses document.all for browser detection
+		opera.defineMagicVariable('ie4',function(){return true;}, null);
+			if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (weather.news.qq.com uses document.all for browser detection). See browser.js for details');
+	} else if(hostname.indexOf('opera.com')>-1&& pathname.indexOf('/docs/browserjs/')==0){			// 0, Browser.js status and version reported on browser.js documentation page
+		document.addEventListener((parseFloat(opera.version())>9?'DOMContentLoaded':'load'),function(){
+			if(document.getElementById('browserjs_active')){
+				document.getElementById('browserjs_active').style.display='';
+				document.getElementById('browserjs_active').getElementsByTagName('span')[0].appendChild(document.createTextNode(bjsversion));
+				document.getElementById('browserjs_status_message').style.display='none';
+			}else if(document.getElementById('browserjs_status_message')){
+				document.getElementById('browserjs_status_message').firstChild.data='Browser.js is enabled! '+bjsversion;
+			}
+		}, false);
+			if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Browser.js status and version reported on browser.js documentation page). See browser.js for details');
+	} else if(hostname.indexOf('tvguide.com')>-1){			// PATCH-274, TVGuide doesn't show program descriptions, due to browser sniffing
+		opera.defineMagicVariable('isSafari', function(){return true;}, null);
+			if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (TVGuide doesn\'t show program descriptions, due to browser sniffing). See browser.js for details');
+	} else if(hostname.indexOf('westjet.com')>-1 ){			// PATCH-260,  Westjet browser sniffing warns against Opera
+		opera.defineMagicVariable('browser', function(o){ o.isSupported=true; return o; }, null);
+			if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' ( Westjet browser sniffing warns against Opera). See browser.js for details');
+	} else if(hostname.indexOf('www.yoka.com')>-1){			// PATCH-238, Override minmax IE helper script
+		opera.defineMagicFunction('minmax_scan', function(){});
+			if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Override minmax IE helper script). See browser.js for details');
+	} else if(href.indexOf('/sample_lr.html')>-1){			// PATCH-128, Sun Webmail fails to set document.domain due to browser sniffing
+		navigator.userAgent+=' Gecko';
+			if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Sun Webmail fails to set document.domain due to browser sniffing). See browser.js for details');
+	}
+
+})(opera);
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/domaddons.ini
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/domaddons.ini	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/domaddons.ini	(revision 23513)
@@ -0,0 +1,1 @@
+pause_layout: file, localhost, 0
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/feeds/webfeeds.store
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/feeds/webfeeds.store	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/feeds/webfeeds.store	(revision 23513)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE store SYSTEM "storage.dtd" [
+  <!ELEMENT store (defaults | feed*)>
+  <!ATTLIST store
+            default-update-interval NMTOKEN #REQUIRED
+            space-factor CDATA "0.9">]>
+<store default-update-interval="60" space-factor="90">
+<defaults>
+  <setting name="max-size" value="0"/>
+  <setting name="max-age" value="0"/>
+  <setting name="max-entries" value="0"/>
+  <setting name="show-images" value="yes"/>
+</defaults>
+</store>
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/global.dat
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/global.dat	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/global.dat	(revision 23513)
@@ -0,0 +1,100 @@
+RedButton
+http://hbbtv.sat1.de/service/redbutton_s1.php
+1331801160
+2419401
+http://hbbtv.sat1.de/startbar/startbar.php?sender=s1&redbutton_time=11
+http://hbbtv.sat1.de/startbar/startbar.php?sender=s1&redbutton_time=11
+1331801164
+-1
+http://hbbtv.sat1.de/portal/startbar
+http://hbbtv.sat1.de/portal/startbar
+1331801164
+-1
+SAT.1 HD-Text: Home [100]
+http://hbbtv.sat1.de/newspage/page/nr/100
+1331801178
+-1
+wetter.com
+http://hbbtv.wetter.com/
+1331801315
+-1
+MIT-xperts HbbTV testsuite
+http://itv.mit-xperts.com/hbbtvtest/index.php
+1331882793
+158743920
+http://digitaltext.rtl.de/start.php?teletext=1
+http://digitaltext.rtl.de/start.php?teletext=1
+1331887520
+-1
+http://digitaltext.rtl.de/start.php
+http://digitaltext.rtl.de/start.php
+1331887622
+-1
+RTL Digitaltext
+http://digitaltext.rtl.de/rtlhbbtv/performcertcheck.php
+1331887622
+2419302
+http://hbbtv.clipfish.de/start.php
+http://hbbtv.clipfish.de/start.php
+1331888028
+2419575
+Clipfish Music
+http://hbbtv.clipfish.de/rtlhbbtv/performcertcheck.php
+1331888028
+2419575
+ime page
+file://localhost/mnt/nfs/Development/opera/opera_1.2.41/directfb-ui/imeWindow.html
+1331888725
+5467547
+Navicate page
+file://localhost/mnt/nfs/Development/opera/opera_1.2.41/directfb-ui/ctrlWindow.html
+1331888725
+65023968
+http://tv-html.irt.de/hbbtv/interop05/index.php
+http://tv-html.irt.de/hbbtv/interop05/index.php
+1331890862
+-1
+ARD Programm
+http://itv.ard.de/ardepg/
+1331890877
+2423068
+ARD Text Vollbild - Startseite
+http://itv2.ard.de/ardtext/index.html
+1331890949
+-1
+ZDFmediathek für HbbTV
+http://hbbtv.zdf.de/zdfmediathek/index.php?select=S0
+1331891072
+2423516
+Error
+file://localhost/root/directfb-ui/imeWindow.html
+1331892962
+85983
+Error
+file://localhost/root/directfb-ui/ctrlWindow.html
+1331892963
+85983
+ZDF start
+http://hbbtv.zdf.de/zdfstart/index.php
+1331892963
+1550417
+ZDFmediathek für HbbTV
+http://hbbtv.zdf.de/zdfmediathek/index.php?select=S2
+1331892967
+-1
+Error
+file://localhost/usr/lib/enigma2/python/Plugins/Extensions/HbbTv2/opera/directfb-ui/ctrlWindow.html
+1337603336
+-1
+ARD Startleiste
+http://itv.ard.de/ardstart/index.html
+1337603337
+721534
+Das Erste - Video On Demand
+http://hbbtv.daserste.de/player.php?contentID=222debb411bde22a22192162aad17934&lastfocus=trefferSendungVerpasst7&date=21.05.2012
+1337603628
+-1
+Das Erste - Video On Demand
+http://hbbtv.daserste.de/index.php
+1337603666
+8131798
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/input.ini
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/input.ini	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/input.ini	(revision 23513)
@@ -0,0 +1,173 @@
+Opera Preferences version 2.0
+; Do not edit this file while Opera is running
+; This file is stored in UTF-8 encoding
+; LOWLEVEL UI INPUT, CHANGE AT OWN RISK!
+
+[Browser Window]
+1			= Back
+2			= Forward
+3			= Reload
+4			= Stop
+#5			= External Action, "Test"
+#6			= Go, "www.opera.com"
+0			= Zoom in, 20
+8			= Zoom out, 20
+FlipBack		= Back
+FlipForward		= Forward
+GestureLeft		= Back
+GestureRight		= Forward
+GestureUp		= Stop
+GestureUp, GestureDown  = Reload
+
+[Browser Widget]
+Tab			= Focus next widget
+Tab shift		= Focus previous widget
+
+#Right			= Scroll right
+#Left			= Scroll left
+#Down			= Scroll down
+#Up			= Scroll up
+
+#3                  = Scroll right         
+#1                  = Scroll left          
+#5                  = Scroll down          
+#2                  = Scroll up
+
+
+
+PageUp			= Page up
+PageDown		= Page down
+Home			= Go to start
+End			= Go to end
+Home ctrl		= Go to start
+End ctrl		= Go to end
+Space ctrl		= Activate element
+Space shift		= Page up
+Space			= Page down
+u 			= Navigate left
+o			= Navigate right
+i			= Navigate up
+k			= Navigate down
+#Left shift		= Navigate left
+#Right shift		= Navigate right
+#Up shift		= Navigate up
+#Down shift		= Navigate down
+Left      = Navigate left
+Right     = Navigate right
+Up        = Navigate up
+Down      = Navigate down
+a			= Highlight next URL
+q			= Highlight previous URL
+s			= Highlight next heading
+w			= Highlight previous heading
+Enter			= Activate element | Open link
+Enter shift		= Open link in new page
+Enter ctrl shift	= Open link in background page
+Space ctrl shift	= Open link in background page
+ctrl x				= Cut
+ctrl c				= Copy
+ctrl v				= Paste
+ctrl e				= Wand
+ctrl i				= Toggle style italic
+ctrl b				= Toggle style bold
+ctrl u				= Toggle style underline
+MAGIC_INPUT_1       = Scroll down
+MAGIC_INPUT_2       = Scroll up
+MAGIC_INPUT_3       = Scroll left
+MAGIC_INPUT_4       = Scroll right
+
+[Widget Container]
+Tab			= Focus next widget
+Tab shift		= Focus previous widget
+Enter			= Click default button
+
+[Form]
+Backspace		= Backspace
+Del                     = Delete
+
+[Button Widget]
+Enter			= Click button
+Space			= Click button
+
+[Radiobutton Widget]
+Space			= Click button
+
+[Checkbox Widget]
+Space			= Check item | Uncheck item
+
+[Dropdown Widget]
+Down alt		= Show dropdown
+Esc			= Close dropdown
+Right			= Next item
+Left			= Previous item
+Down			= Next item
+Up			= Previous item
+PageUp			= Page up
+PageDown		= Page down
+Home			= Go to start
+End			= Go to end
+Space ctrl		= Unfocus form
+Enter 			= Select item & Close dropdown
+MAGIC_INPUT_1       = Page down
+MAGIC_INPUT_2       = Page up
+
+[List Widget]
+Space 			= Check item | Uncheck item
+Right			= Next item
+Left			= Previous item
+Right shift		= Range next item
+Left shift		= Range previous item
+Down			= Next item
+Up			= Previous item
+Down shift		= Range next item
+Up shift		= Range previous item
+PageUp			= Page up
+PageDown		= Page down
+PageUp shift		= Range page up
+PageDown shift		= Range page down
+Home			= Go to start
+End			= Go to end
+Home shift		= Range go to start
+End shift		= Range go to end
+Space ctrl		= Unfocus form
+MAGIC_INPUT_1       = Page down
+MAGIC_INPUT_2       = Page up
+
+[Edit Widget]
+Backspace       = Backspace
+Del             = Delete
+Left			= Previous character
+Right			= Next character
+Left  shift		= Range previous character
+Right shift		= Range next character
+Left  ctrl  shift	= Range previous word
+Right ctrl  shift	= Range next word
+Up			= Previous line
+Down			= Next line
+Up  shift		= Range previous line
+Down shift		= Range next line
+PageUp			= Page up
+PageDown		= Page down
+PageUp shift		= Range page up
+PageDown shift		= Range page down
+Home			= Go to line start
+End			= Go to line end
+Home shift		= Range go to line start
+End shift		= Range go to line end
+Home ctrl		= Go to start
+End ctrl		= Go to end
+Home ctrl shift		= Range go to start
+End ctrl shift		= Range go to 	end
+Del ctrl		= Delete word
+Del shift		= Backspace
+l ctrl			= Left adjust text
+r ctrl			= Right adjust text
+Space ctrl		= Unfocus form
+ctrl Right		= Next word
+ctrl Left		= Previous word
+ctrl d			= Backspace word
+MAGIC_INPUT_1       = Page down
+MAGIC_INPUT_2       = Page up
+
+[GOGI Plugins]
+Space ctrl              = Unfocus plugin
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/opera.ini
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/opera.ini	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/opera.ini	(revision 23513)
@@ -0,0 +1,119 @@
+Opera Preferences version 2.1
+; Do not edit this file while Opera is running
+; This file is stored in UTF-8 encoding
+
+[Extensions]
+Scripting=1
+Plugins=1
+Frames=1
+
+[Security Prefs]
+Enable SSL v2=1
+Enable SSL v3=1
+Enable TLS v1.0=1
+OCSP Validate Certificates=1
+Enable TLS v1.1=0
+Enable TLS v1.2=0
+
+[User Prefs]
+##################
+User JavaScript File=$OPERA_DIR/userjs/
+User JavaScript=1
+User JavaScript on HTTPS=1
+######################
+Warn Insecure Form=0
+Warn Security Level=0
+Enable Cookies=3
+Ask For Cookie Confirmation=0
+File URLs Enabled=1
+Document Mode=1
+Show Images=3
+Show ScrollBars=1
+Scroll Is Pan=0
+Offline Mode=0
+Scale=100
+WBMP Scale=100
+Max Window History Lines=10
+Max Global History Lines=100
+Single Window Browsing=1
+Ignore Unrequested Popups=1
+Retarded Image Loading=0
+Home URL=http://www.opera.com
+Language File
+Local CSS File=$OPERA_DIR/styles/user.css
+Download Directory=$OPERA_HOME/download/
+Plugin Path=$OPERA_HOME/../plugins
+Webfeeds Style File=$OPERA_DIR/styles/webfeeds.css
+Console Error Log Enabled=0
+Console Error Log Filter=javascript,network,xml,html,css,xslt,svg,widgets,operaacount,operalink,internal,persisten_storage,websockets
+Console Error Log=$OPERA_HOME/error.log
+Max Console Messages=10
+Browser JavaScript=2
+SSR Max Width=240
+Wand Autosubmit=1
+Turbo Mode=0
+Enable Trust Rating=0
+Enable Gesture=1
+Enable WebSockets=0
+Reverse button flipping=0
+Overrides Server Timestamp=1230653536
+Show IME Password=0
+Browser JavaScript Server Timestamp=1314086106
+Last Sitepatch Update Check=1331887521
+
+[Network]
+URL Filter File=$OPERA_HOME/urlfilter.ini
+
+[Disk Cache]
+Enabled=0
+Size=2000
+Cache Docs=1
+Cache Figs=1
+Cache Other=0
+Cache HTTPS=0
+Multimedia Stream Always=1
+Multimedia Stream Size=1024
+Multimedia Stream in RAM=0
+Empty On Exit=0
+
+[Cache]
+#Figure=8000
+#Document=1000
+#ECMAScript=1000
+Figure=16000
+Document=4000
+ECMAScript=16000
+Cache Docs=1
+Cache Figs=1
+
+[Visited Link]
+
+[Link]
+
+[Multimedia]
+Show Animation=1
+Always load favicon=1
+
+[User Agent]
+Spoof UserAgent ID=1
+Allow Components In UA String Comment=1
+
+[ISP]
+Id=HbbTV/1.1.1(;;;;;); CE-HTML; TechniSat DIGIT ISIO S
+#Id3=HbbTV/1.1.1(;;;;;)
+#Id=Opera/9.80 (Linux mips ; U; hbbtv/1.1.1 (;Philips;;;; ) CE-HTML/1.0 NETTV/3.0.0; en) Presto/2.6.33 Version/10.70
+#Id5=TechniSat Mediaplayer (CE-HTML); HbbTV/1.1.1 (; ; ; ; ; )
+#Id=Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.0 (KHTML, like Gecko) HbbTV/1.1.1 (+DL+PVR; inverto; IDL-6651N Volksbox Web Edition; 1.0; 1.0;) hdplusinteraktiv/1.0 (NETRANGEMMH;) CE-HTML/1.
+
+
+[Proxy]
+Use HTTP=0
+Use HTTPS=0
+Use FTP=0
+No Proxy Servers Check=0
+Use Proxy On Local Names Check=0
+Use Automatic Proxy Configuration=0
+Opera Turbo Config File=$OPERA_DIR/turbosettings.xml
+
+[Install]
+Preference URL=http://xml.opera.com/spoof/sdk/?bnum=3741
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/optrb.dat
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/optrb.dat	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/optrb.dat	(revision 23513)
@@ -0,0 +1,2 @@
+Â£u¾öíø
+'å:cú¯ KH¢ÀwPÂuÿ²»4[ø(rùâÝt©Dch8íºÐpöÊ9ZórBG@zÈUýPóóSJe8ãëò²!wÑj+y+
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/override.ini
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/override.ini	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/override.ini	(revision 23513)
@@ -0,0 +1,42 @@
+﻿Opera Preferences version 2.1
+; Do not edit this file while Opera is running
+; This file is stored in UTF-8 encoding
+
+; Sample configuration file for Site Preferences. See the GOGI SDK 
+; docs about Site Patching for details on how to use this file.
+;
+
+[Overrides]
+www.google.nl
+www.google.hu
+www.google.gr
+www.google.de
+www.google.ru
+www.google.com
+www.youporn.com
+
+[www.google.nl]
+User Agent|Spoof UserAgent ID=3
+
+[www.google.hu]
+User Agent|Spoof UserAgent ID=3
+
+[www.google.gr]
+User Agent|Spoof UserAgent ID=3
+
+[www.google.de]
+User Agent|Spoof UserAgent ID=3
+
+[www.google.ru]
+User Agent|Spoof UserAgent ID=3
+
+[www.google.com]
+User Agent|Spoof UserAgent ID=3
+
+[www.youporn.com]
+User Agent|Spoof UserAgent ID=3
+
+;www.example.com
+;
+;[www.example.com]
+;User Agent|Spoof UserAgent ID=3
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/override_downloaded.ini
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/override_downloaded.ini	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/override_downloaded.ini	(revision 23513)
@@ -0,0 +1,185 @@
+﻿Opera Preferences version 2.1
+; Do not edit this file while Opera is running
+; This file is stored in UTF-8 encoding
+
+[401k.fidelity.com]
+User Agent|Spoof UserAgent ID=2
+
+[Overrides]
+401k.fidelity.com
+asus.com
+bankofamerica.com
+bell.ca
+bellsouth.com
+bellsouth.mediaroom.com
+citibank.co.in
+delta.com
+deutsche-bank.de
+dpreview.com
+ebay.com
+first-direct.com
+firstdirect.com
+getty-images.com
+gettyimages.com
+gullfoss2.fcc.gov
+hm.com
+infospace.com
+jobs.volt.com
+knightfrank.co.uk
+louvre.fr
+mac.com
+match.com
+msdn.microsoft.com
+msnbc.msn.com
+my.yahoo.com
+news.walla.co.il
+nintendo-europe.com
+nissan.dk
+office.microsoft.com
+online.wsj.com
+peoplefirst.myflorida.com
+pncbank.com
+sayclub.com
+scandinavian.net
+sss-web.usps.com
+support.microsoft.com
+techdoc.toyota-europe.com
+trader.ca
+trkcnfrm1.smi.usps.com
+us.mcafee.com
+webmail.aol.com
+webmail.virgin.net
+wellsfargo.com
+webmessenger.msn.com
+
+[asus.com]
+User Agent|Spoof UserAgent ID=4
+
+[bankofamerica.com]
+User Agent|Spoof UserAgent ID=4
+
+[bell.ca]
+User Agent|Spoof UserAgent ID=4
+
+[bellsouth.com]
+User Agent|Spoof UserAgent ID=3
+
+[bellsouth.mediaroom.com]
+User Agent|Spoof UserAgent ID=3
+
+[citibank.co.in]
+User Agent|Spoof UserAgent ID=4
+
+[delta.com]
+User Agent|Spoof UserAgent ID=2
+
+[deutsche-bank.de]
+User Agent|Spoof UserAgent ID=4
+
+[dpreview.com]
+User Agent|Spoof UserAgent ID=2
+
+[ebay.com]
+User Agent|Spoof UserAgent ID=5
+
+[first-direct.com]
+User Agent|Spoof UserAgent ID=4
+
+[firstdirect.com]
+User Agent|Spoof UserAgent ID=4
+
+[getty-images.com]
+User Agent|Spoof UserAgent ID=4
+
+[gettyimages.com]
+User Agent|Spoof UserAgent ID=4
+
+[gullfoss2.fcc.gov]
+User Agent|Spoof UserAgent ID=2
+
+[hm.com]
+User Agent|Spoof UserAgent ID=5
+
+[infospace.com]
+User Agent|Spoof UserAgent ID=2
+
+[jobs.volt.com]
+User Agent|Spoof UserAgent ID=2
+
+[knightfrank.co.uk]
+User Agent|Spoof UserAgent ID=4
+
+[louvre.fr]
+User Agent|Spoof UserAgent ID=2
+
+[mac.com]
+User Agent|Spoof UserAgent ID=4
+
+[match.com]
+User Agent|Spoof UserAgent ID=3
+
+[msdn.microsoft.com]
+User Agent|Spoof UserAgent ID=2
+
+[msnbc.msn.com]
+User Agent|Spoof UserAgent ID=2
+
+[my.yahoo.com]
+User Agent|Spoof UserAgent ID=4
+
+[news.walla.co.il]
+User Agent|Spoof UserAgent ID=3
+
+[nintendo-europe.com]
+User Agent|Spoof UserAgent ID=4
+
+[nissan.dk]
+User Agent|Spoof UserAgent ID=2
+
+[office.microsoft.com]
+User Agent|Spoof UserAgent ID=2
+
+[online.wsj.com]
+User Agent|Spoof UserAgent ID=3
+
+[peoplefirst.myflorida.com]
+User Agent|Spoof UserAgent ID=3
+
+[pncbank.com]
+User Agent|Spoof UserAgent ID=4
+
+[sayclub.com]
+User Agent|Spoof UserAgent ID=3
+
+[scandinavian.net]
+User Agent|Spoof UserAgent ID=5
+
+[sss-web.usps.com]
+User Agent|Spoof UserAgent ID=2
+
+[support.microsoft.com]
+User Agent|Spoof UserAgent ID=2
+
+[techdoc.toyota-europe.com]
+User Agent|Spoof UserAgent ID=2
+
+[trader.ca]
+User Agent|Spoof UserAgent ID=4
+
+[trkcnfrm1.smi.usps.com]
+User Agent|Spoof UserAgent ID=2
+
+[us.mcafee.com]
+User Agent|Spoof UserAgent ID=3
+
+[webmail.aol.com]
+User Agent|Spoof UserAgent ID=3
+
+[webmail.virgin.net]
+User Agent|Spoof UserAgent ID=2
+
+[wellsfargo.com]
+User Agent|Spoof UserAgent ID=4
+
+[webmessenger.msn.com]
+User Agent|Spoof UserAgent ID=5
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/widgets.xml
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/widgets.xml	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/opera_home/widgets.xml	(revision 23513)
@@ -0,0 +1,15 @@
+<widgets>
+  <security>
+    <access>
+      <protocol>http</protocol>
+      <protocol>https</protocol>
+    </access>
+    <private-network allow="unrestricted">
+      <host type="localhost" />
+      <host type="range">10.0.0.0-10.255.255.255</host>
+      <host type="range">172.16.0.0-172.31.255.255</host>
+      <host type="range">192.168.0.0-192.168.255.255</host>
+      <host type="range">169.254.0.0-169.254.255.255</host>
+    </private-network>
+  </security>
+</widgets>
Index: ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/run
===================================================================
--- ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/run	(revision 23513)
+++ ipk/source.sh4/players_hbbtv/_path_/usr/local/share/titan/plugins/hbbtv/opera/run	(revision 23513)
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+export OPERA_MULTITAP=NO
+export OPERA_SHOW_STATUSWINDOW=NO 
+export OPERA_FB_BORDERWIDTH=0
+export OPERA_SHOW_IMEWINDOW=YES
+export OPERA_SHOW_NAVIGATIONWINDOW=NO
+export OPERA_SHOW_MOUSEPOINTER=NO
+export OPERA_ESC_EXIT=YES
+export FREETYPE_FONT_SET=YES
+export OPERA_ROOT=/var/swap/titanplugins/hbbtv/opera
+export OPERA_FB_SIZE=1280x720
+export OPERA_DIR="${OPERA_ROOT}/opera_dir"
+export OPERA_HOME="${OPERA_ROOT}"/opera_home/
+export OPERA_FONTS="${OPERA_ROOT}"/fonts
+export OPERA_WIDGETS="${OPERA_ROOT}"/widgets
+export LD_LIBRARY_PATH=/var/swap/titanplugins/hbbtv/opera:${LD_LIBRARY_PATH}
+
+STARTPAGE="${OPERA_ROOT}"/directfb-ui/startpage.html
+#STARTPAGE="http://itv.mit-xperts.com/zdfmediathek/index.php"
+STARTPAGE="http://hbbtv.ardmediathek.de/hbbtv-ard/mediathek/"
+STARTPAGE="http://itv.mit-xperts.com/hbbtvtest/index.php"
+STARTPAGE="http://hbbtv.clipfish.de/start.php"
+#STARTPAGE="tvportal.humaxdigital.com"
+EXPATH=${OPERA_ROOT}/bin EXBIN=opera EXEC_FLAG="-u ${STARTPAGE} --dfb:mode=1280x720,no-debug,no-vt,no-vt-switch $@"
+
+#cp ${OPERA_ROOT}/portal_userjs/user_potral.js ${OPERA_ROOT}/opera_dir/userjs/user.js
+cp ${OPERA_ROOT}/portal_userjs/input_opera.ini ${OPERA_ROOT}/opera_home/input.ini
+echo 0 > /proc/cpu/alignment 
+exec  ${EXPATH}/${EXBIN} ${EXEC_FLAG}
+echo 1 > /proc/cpu/alignment 
+
+exit 1
+
