summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2009-11-01 14:05:09 +0000
committerAndreas Brachold <vdr07@deltab.de>2009-11-01 14:05:09 +0000
commit454652cfad1e4f5e501319b7a10985f96376985c (patch)
tree5ae2237c7e5c8558f70c38c6b54db37226de0ab6
parent6f21b40befb77303cc04415b675256b0ba098be3 (diff)
downloadxxv-454652cfad1e4f5e501319b7a10985f96376985c.tar.gz
xxv-454652cfad1e4f5e501319b7a10985f96376985c.tar.bz2
* VTX: Rewrite command interface, make functions stateless
* VTX: Remove embedded image, use css sprite for faster pages rendering * jason: add methods to display teletext pages * jason: show error message, if present * jason: enable command if allowed * Skins: redesign teletext widget (show any subpages as same time) * SVDRP: wait at startup, if'nt primary VDR connectable * html: parameter call show allways current query
l---------skins/blue/images/vtxgfx.gif1
l---------skins/blue/vtxgfx.css1
l---------skins/blue/vtxpage.tmpl1
l---------skins/blue_flat/vtxgfx.css1
l---------skins/blue_flat/vtxpage.tmpl1
l---------skins/deltab/images/vtxgfx.gif1
-rw-r--r--skins/deltab/style.css25
l---------skins/deltab/vtxgfx.css1
-rw-r--r--skins/deltab/vtxpage.tmpl51
-rw-r--r--skins/deltab/widgets/footer.tmpl2
-rw-r--r--skins/deltab/widgets/start.tmpl7
-rw-r--r--skins/deltab/widgets/vtx.tmpl54
-rw-r--r--skins/jason/autotimers.js2
-rw-r--r--skins/jason/channelspanel.js37
-rw-r--r--skins/jason/chronicle.js2
-rw-r--r--skins/jason/files.lst1
-rw-r--r--skins/jason/fixes.js44
-rw-r--r--skins/jason/form.js4
-rw-r--r--skins/jason/help.js10
-rw-r--r--skins/jason/index.tmpl1
-rw-r--r--skins/jason/jason.css58
-rw-r--r--skins/jason/locale/lang-de.js8
-rw-r--r--skins/jason/locale/lang-en.js7
-rwxr-xr-xskins/jason/locale/lang-it.js7
-rw-r--r--skins/jason/menus.js117
-rw-r--r--skins/jason/movetimers.js2
-rw-r--r--skins/jason/music.js2
-rw-r--r--skins/jason/now.js2
-rw-r--r--skins/jason/pic/vtxgfx.gifbin0 -> 8873 bytes
-rw-r--r--skins/jason/program.js2
-rw-r--r--skins/jason/reader.js5
-rw-r--r--skins/jason/recordings.js57
-rw-r--r--skins/jason/search.js2
-rw-r--r--skins/jason/tabpanel.js14
-rw-r--r--skins/jason/teletext.js335
-rw-r--r--skins/jason/timers.js2
-rw-r--r--skins/jason/users.js2
-rw-r--r--skins/jason/ux/Carousel.js3
-rw-r--r--skins/jason/ux/DDView.js3
-rw-r--r--skins/jason/ux/Multiselect.js1
-rw-r--r--skins/jason/ux/SlideZone.js19
-rw-r--r--skins/jason/ux/TabCloseMenu.js4
-rw-r--r--skins/jason/vdr.js2
-rw-r--r--skins/jason/vtxgfx.css546
-rw-r--r--skins/jason/widgets/littlemenu.tmpl2
-rw-r--r--skins/jason/widgets/message.tmpl3
l---------skins/lcars/images/vtxgfx.gif1
l---------skins/lcars/vtxgfx.css1
l---------skins/lcars/vtxpage.tmpl1
l---------skins/lcars_flat/vtxgfx.css1
l---------skins/lcars_flat/vtxpage.tmpl1
l---------skins/snow/images/vtxgfx.gif1
l---------skins/snow/vtxgfx.css1
l---------skins/snow/vtxpage.tmpl1
l---------skins/snow_flat/vtxgfx.css1
l---------skins/snow_flat/vtxpage.tmpl1
-rw-r--r--skins/stone/header.inc2
-rw-r--r--skins/stone/images/vtxgfx.gifbin0 -> 8463 bytes
-rw-r--r--skins/stone/style.css25
-rw-r--r--skins/stone/vtxgfx.css549
-rw-r--r--skins/stone/vtxpage.tmpl106
-rw-r--r--skins/stone/widgets/start.tmpl3
-rw-r--r--skins/stone/widgets/vtx.tmpl95
-rw-r--r--skins/stone_flat/header.inc2
-rw-r--r--skins/xstyle/images/vtxgfx.gifbin0 -> 8463 bytes
-rw-r--r--skins/xstyle/style/style.css21
-rw-r--r--skins/xstyle/style/vtxgfx.css549
-rw-r--r--skins/xstyle/vtxpage.tmpl43
-rw-r--r--skins/xstyle/widgets/start.tmpl4
-rw-r--r--skins/xstyle/widgets/vtx.tmpl44
70 files changed, 2506 insertions, 399 deletions
diff --git a/skins/blue/images/vtxgfx.gif b/skins/blue/images/vtxgfx.gif
new file mode 120000
index 0000000..484c3e7
--- /dev/null
+++ b/skins/blue/images/vtxgfx.gif
@@ -0,0 +1 @@
+../../stone/images/vtxgfx.gif \ No newline at end of file
diff --git a/skins/blue/vtxgfx.css b/skins/blue/vtxgfx.css
new file mode 120000
index 0000000..a17deb6
--- /dev/null
+++ b/skins/blue/vtxgfx.css
@@ -0,0 +1 @@
+../stone/vtxgfx.css \ No newline at end of file
diff --git a/skins/blue/vtxpage.tmpl b/skins/blue/vtxpage.tmpl
new file mode 120000
index 0000000..34c6245
--- /dev/null
+++ b/skins/blue/vtxpage.tmpl
@@ -0,0 +1 @@
+../stone/vtxpage.tmpl \ No newline at end of file
diff --git a/skins/blue_flat/vtxgfx.css b/skins/blue_flat/vtxgfx.css
new file mode 120000
index 0000000..a17deb6
--- /dev/null
+++ b/skins/blue_flat/vtxgfx.css
@@ -0,0 +1 @@
+../stone/vtxgfx.css \ No newline at end of file
diff --git a/skins/blue_flat/vtxpage.tmpl b/skins/blue_flat/vtxpage.tmpl
new file mode 120000
index 0000000..34c6245
--- /dev/null
+++ b/skins/blue_flat/vtxpage.tmpl
@@ -0,0 +1 @@
+../stone/vtxpage.tmpl \ No newline at end of file
diff --git a/skins/deltab/images/vtxgfx.gif b/skins/deltab/images/vtxgfx.gif
new file mode 120000
index 0000000..484c3e7
--- /dev/null
+++ b/skins/deltab/images/vtxgfx.gif
@@ -0,0 +1 @@
+../../stone/images/vtxgfx.gif \ No newline at end of file
diff --git a/skins/deltab/style.css b/skins/deltab/style.css
index 81eb59a..bdff13e 100644
--- a/skins/deltab/style.css
+++ b/skins/deltab/style.css
@@ -275,31 +275,6 @@ width:165px;
width:170px;
}
-p.vtx {
-font-size:12px;
-font-family:monospace;
-white-space:nowrap;
-}
-
-img.vtx {
-position:absolute;
-z-index:1;
-width:7px;
-height:15px;
-}
-
-a.vtx:link,a.vtx:visited,a.vtx:hover,a.vtx:active {
-text-decoration:none;
-}
-
-a.vtx:link,a.vtx:visited {
-color:#0F0;
-}
-
-a.vtx:hover,a.vtx:active {
-color:#FF0;
-}
-
img.progressleft {
background:#4080ff;
border-color:#000;
diff --git a/skins/deltab/vtxgfx.css b/skins/deltab/vtxgfx.css
new file mode 120000
index 0000000..a17deb6
--- /dev/null
+++ b/skins/deltab/vtxgfx.css
@@ -0,0 +1 @@
+../stone/vtxgfx.css \ No newline at end of file
diff --git a/skins/deltab/vtxpage.tmpl b/skins/deltab/vtxpage.tmpl
new file mode 100644
index 0000000..b2f148b
--- /dev/null
+++ b/skins/deltab/vtxpage.tmpl
@@ -0,0 +1,51 @@
+<!-- VTXTemplate -->
+<h1><?% gettext("Teletext") %?></h1>
+<!-- ###### Seite ###### -->
+<?% IF data.0 >= 1 %?>
+<?% channel = data.0.3 %?>
+<?% url = "?cmd=vt&amp;channel=${channel}" %?>
+<?% END %?>
+<div id="sidebar">
+ <p class="section"><?% gettext("Teletext",20) %?></p>
+ <form action="">
+ <p>
+ <select size="5" name='chan' onchange="di('?cmd=vt&amp;channel=',this.form.chan.options[this.form.chan.options.selectedIndex].value)">
+ <?% FOREACH ch = param.channels %?>
+ <option value="<?% ch.1 %?>" <?% 'selected="selected"' IF channel == ch.1 %?>><?% ch.0 %?></option>
+ <?% END %?>
+ </select>
+ </p>
+ </form>
+<?% IF channel %?>
+ <p class="section"><?% gettext("Page",20) %?></p>
+ <form method="post" action="<?% url %?>">
+ <p>
+ <input type="text" name="page" size="18" value="<?% data.0.1 %?>" />
+ </p>
+ </form>
+ <p style="color:#aaaaaa;">
+ <?% IF data.0.4 != 0 %?><a href="<?% url %?>"><img src="images/home.<?% global.imagetyp %?>" alt="" title="<?% gettext("First page") %?>" /></a><?% ELSE %?><img src="images/home.<?% global.imagetyp %?>" alt="" title="<?% gettext("First page") %?>" /><?% END %?>&nbsp;
+ <?% IF data.0.4 != 0 %?><a href="<?% url %?>"><?% gettext("First page",20) %?></a><?% ELSE %?><?% gettext("First page",20) %?><?% END %?><br />
+ <?% IF data.0.4 != 0 %?><a href="<?% url %?>&amp;page=<?% data.0.4 %?>"><img src="images/back.<?% global.imagetyp %?>" alt="" title="<?% gettext("Previous page") %?>" /></a><?% ELSE %?><img src="images/back.<?% global.imagetyp %?>" alt="" title="<?% gettext("Previous page") %?>" /><?% END %?>&nbsp;
+ <?% IF data.0.4 != 0 %?><a href="<?% url %?>&amp;page=<?% data.0.4 %?>"><?% gettext("Previous page",20) %?></a><?% ELSE %?><?% gettext("Previous page",20) %?><?% END %?><br />
+ <?% IF data.0.5 != 0 %?><a href="<?% url %?>&amp;page=<?% data.0.5 %?>"><img src="images/forward.<?% global.imagetyp %?>" alt="" title="<?% gettext("Next page") %?>" /></a><?% ELSE %?><img src="images/forward.<?% global.imagetyp %?>" alt="" title="<?% gettext("Next page") %?>" /><?% END %?>&nbsp;
+ <?% IF data.0.5 != 0 %?><a href="<?% url %?>&amp;page=<?% data.0.5 %?>"><?% gettext("Next page",20) %?></a><?% ELSE %?><?% gettext("Next page",20) %?><?% END %?><br />
+ </p>
+ <p class="section"><?% gettext("Search",20) %?></p>
+ <form method="post" action="?cmd=vs&amp;channel=<?% channel %?>">
+ <p>
+ <input type="text" name="data" size="18" value="" />
+ </p>
+ </form>
+<?% END %?>
+</div>
+<?% global.sidebar = 1 %?>
+<?% FOREACH zeile = data %?>
+<?% id=zeile.0;page=zeile.1;subpage=zeile.2;channels=zeile.3;prev=zeile.4;next=zeile.5;mtime=zeile.6 %?>
+<div style="float:left; margin:5px;" id="<?% id %?>">
+ <h2><?% gettext("Page") %?>&nbsp;<?% page; IF subpage > 0 %?>/<?% subpage; END %?></h2>
+ <div id="vt">
+ <?% zeile.7 %?>
+ </div>
+</div> <?% END %?>
+
diff --git a/skins/deltab/widgets/footer.tmpl b/skins/deltab/widgets/footer.tmpl
index 6d98c4b..0aab541 100644
--- a/skins/deltab/widgets/footer.tmpl
+++ b/skins/deltab/widgets/footer.tmpl
@@ -27,7 +27,7 @@
<?% IF allow( 'al' ) %?> <a accesskey="a" href="?cmd=al"><?% gettext("Autotimer") %?></a> &middot; <?% END %?>
<?% IF allow( 'tl' ) %?> <a accesskey="t" href="?cmd=tl"><?% gettext("Timers") %?></a> &middot; <?% END %?>
<?% IF allow( 'rl' ) %?> <a accesskey="r" href="?cmd=rl"><?% gettext("Recordings") %?></a> &middot; <?% END %?>
- <?% IF allow( 'vc' ) %?> <a accesskey="v" href="?cmd=vc"><?% gettext("Teletext") %?></a> &middot; <?% END %?>
+ <?% IF allow( 'vt' ) %?> <a accesskey="v" href="?cmd=vt"><?% gettext("Teletext") %?></a> &middot; <?% END %?>
<?% IF allow( 'ml' ) %?> <a accesskey="m" href="?cmd=ml"><?% gettext("Music") %?></a> &middot; <?% END %?>
<?% IF allow( 'r' ) %?> <a accesskey="f" href="?cmd=r"><?% gettext("Remote") %?></a> &middot; <?% END %?>
<?% IF allow( 'sa' ) %?> <a accesskey="s" href="?cmd=sa"><?% gettext("Status") %?></a> &middot; <?% END %?>
diff --git a/skins/deltab/widgets/start.tmpl b/skins/deltab/widgets/start.tmpl
index 3e57376..c46697c 100644
--- a/skins/deltab/widgets/start.tmpl
+++ b/skins/deltab/widgets/start.tmpl
@@ -5,6 +5,11 @@
<?% lang = locale.split('_') %?>
<html xmlns="http://www.w3.org/1999/xhtml" <?% IF lang.1 %?>xml:lang="<?% lang.0 %?>" lang="<?% lang.0 %?>"<?% ELSE %?>xml:lang="en" lang="en"<?% END %?>>
<head>
+ <link rel="stylesheet" type="text/css" href="style.css" media="all" />
+ <link rel="stylesheet" type="text/css" href="print.css" media="print" />
+<?% IF call == 'vtxpage' %?>
+ <link rel="stylesheet" type="text/css" href="vtxgfx.css" media="all" />
+<?% END %?>
<title><?% IF param.title.defined;param.title;ELSE %?>XXV<?% END %?></title>
<meta name="generator" content="XXV System - Version: <?% version %?>" />
<meta http-equiv="content-type" content="text/html; charset=<?% charset %?>" />
@@ -13,8 +18,6 @@
<meta http-equiv="pragma" content="no-cache" />
<meta name="robots" content="noindex,noarchive,nofollow" />
<link rel="shortcut icon" href="favicon.ico" />
- <link rel="stylesheet" type="text/css" href="style.css" media="all" />
- <link rel="stylesheet" type="text/css" href="print.css" media="print" />
<script language="JavaScript" type="text/javascript" src="tooltip.js"></script>
<script language="JavaScript" type="text/javascript" src="global.js"></script>
<?% IF allow("request") %?>
diff --git a/skins/deltab/widgets/vtx.tmpl b/skins/deltab/widgets/vtx.tmpl
deleted file mode 100644
index 60da208..0000000
--- a/skins/deltab/widgets/vtx.tmpl
+++ /dev/null
@@ -1,54 +0,0 @@
-<!-- VTXTemplate -->
-<?% IF !global.include_vtx_wigdet.defined %?>
-<h1><?% gettext("Teletext") %?></h1>
-<!-- ###### Seite ###### -->
-<?% url = "?cmd=vt&amp;data=" %?>
-<div id="sidebar">
- <p class="section"><?% gettext("Teletext",20) %?></p>
- <form action="">
- <p>
- <select size="5" name='chan' onchange="di('?cmd=vc&amp;data=',this.form.chan.options[this.form.chan.options.selectedIndex].value)">
- <?% FOREACH ch = param.channels %?>
- <option value="<?% ch.1 %?>" <?% 'selected="selected"' IF param.channel == ch.1 %?>><?% ch.0 %?></option>
- <?% END %?>
- </select>
- </p>
- </form>
- <p class="section"><?% gettext("Page",20) %?></p>
- <form method="post" action="?cmd=vt">
- <p>
- <input type="text" name="data" size="18" value="<?% param.page %?>" />
- </p>
- </form>
- <p style="color:#aaaaaa;">
- <?% IF param.toppage != 0 %?><a href="<?% url %?><?% param.toppage %?>"><img src="images/home.<?% global.imagetyp %?>" alt="" title="<?% gettext("First page") %?>" /></a><?% ELSE %?><img src="images/home.<?% global.imagetyp %?>" alt="" title="<?% gettext("First page") %?>" /><?% END %?>&nbsp;
- <?% IF param.toppage != 0 %?><a href="<?% url %?><?% param.toppage %?>"><?% gettext("First page",20) %?></a><?% ELSE %?><?% gettext("First page",20) %?><?% END %?><br />
- <?% IF param.page_prev != 0 %?><a href="<?% url %?><?% param.page_prev %?>"><img src="images/back.<?% global.imagetyp %?>" alt="" title="<?% gettext("Previous page") %?>" /></a><?% ELSE %?><img src="images/back.<?% global.imagetyp %?>" alt="" title="<?% gettext("Previous page") %?>" /><?% END %?>&nbsp;
- <?% IF param.page_prev != 0 %?><a href="<?% url %?><?% param.page_prev %?>"><?% gettext("Previous page",20) %?></a><?% ELSE %?><?% gettext("Previous page",20) %?><?% END %?><br />
- <?% IF param.page_next != 0 %?><a href="<?% url %?><?% param.page_next %?>"><img src="images/forward.<?% global.imagetyp %?>" alt="" title="<?% gettext("Next page") %?>" /></a><?% ELSE %?><img src="images/forward.<?% global.imagetyp %?>" alt="" title="<?% gettext("Next page") %?>" /><?% END %?>&nbsp;
- <?% IF param.page_next != 0 %?><a href="<?% url %?><?% param.page_next %?>"><?% gettext("Next page",20) %?></a><?% ELSE %?><?% gettext("Next page",20) %?><?% END %?><br />
- </p>
- <p style="color:#aaaaaa;">
- <?% IF param.subpage_prev != 0 %?><a href="<?% url %?><?% param.subpage_prev %?>"><img src="images/back.<?% global.imagetyp %?>" alt="" title="<?% gettext("Prior sub page") %?>" /></a><?% ELSE %?><img src="images/back.<?% global.imagetyp %?>" alt="" title="<?% gettext("Prior sub page") %?>" /><?% END %?>&nbsp;
- <?% IF param.subpage_prev != 0 %?><a href="<?% url %?><?% param.subpage_prev %?>"><?% gettext("Prior sub page",20) %?></a><?% ELSE %?><?% gettext("Prior sub page",20) %?><?% END %?><br />
- <?% IF param.subpage_next != 0 %?><a href="<?% url %?><?% param.subpage_next %?>"><img src="images/forward.<?% global.imagetyp %?>" alt="" title="<?% gettext("Next sub page") %?>" /></a><?% ELSE %?><img src="images/forward.<?% global.imagetyp %?>" alt="" title="<?% gettext("Next sub page") %?>" /><?% END %?>&nbsp;
- <?% IF param.subpage_next != 0 %?><a href="<?% url %?><?% param.subpage_next %?>"><?% gettext("Next sub page",20) %?></a><?% ELSE %?><?% gettext("Next sub page",20) %?><?% END %?><br />
- </p>
- <p class="section"><?% gettext("Search",20) %?></p>
- <form method="post" action="?cmd=vs">
- <p>
- <input type="text" name="data" size="18" value="" />
- </p>
- </form>
-</div>
-<?% global.sidebar = 1 %?>
-<?% SET global.include_vtx_wigdet = 1 %?>
-<?% END %?>
-<div style="float:left; margin:5px;">
-<h2>
-<?% gettext("Page") %?>&nbsp;<?% param.page; pages = cgi.param('data').split('_'); IF pages.size > 1 && pages.last > 0 %?>/<?% pages.last; END %?>
-</h2>
-<?% FOREACH l = data %?>
- <?% l %?>
-<?% END %?>
-</div>
diff --git a/skins/jason/autotimers.js b/skins/jason/autotimers.js
index 24f401b..08f3e32 100644
--- a/skins/jason/autotimers.js
+++ b/skins/jason/autotimers.js
@@ -164,7 +164,7 @@ Ext.extend(Ext.xxv.autotimerGrid, Ext.grid.EditorGridPanel, {
,stateful: true
,onLoadException : function( scope, o, arg, e) {
- new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e);
+ new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e.message);
}
,onLoad : function( store, records, opt ) {
this.getSelectionModel().selectFirstRow();
diff --git a/skins/jason/channelspanel.js b/skins/jason/channelspanel.js
index e24928b..4739fcd 100644
--- a/skins/jason/channelspanel.js
+++ b/skins/jason/channelspanel.js
@@ -87,15 +87,17 @@ Ext.xxv.channelsPanel = function() {
'selectionchange' : function(sm, node){
if(node){
var record = this.store.getById(node.attributes.channel);
- var top = Ext.getCmp('main-tabs');
- top.openProgram(record.data);
+ var top = Ext.getCmp('main-tabs');
+ switch(top.getActiveTab().id) {
+ case 'vt': top.openTeleText(node.attributes.text, node.attributes.channel); break;
+ default: top.openProgram(record.data); break;
+ }
var items = this.topToolbar.items;
if(items) { items.eachKey(function(key, f) {
- if(XXV.help.cmdAllowed(key)) f.enable();
- },items); }
+ if(XXV.help.cmdAllowed(key)) f.enable();
+ },items); }
}
- //this.getTopToolbar().items.get('delete').setDisabled(!node);
},
scope:this
});
@@ -114,6 +116,8 @@ Ext.extend(Ext.xxv.channelsPanel, Ext.tree.TreePanel, {
,webcastText : "Live web cast this channel"
,switchTTText: "Switch"
,switchText : "Switch to this channel"
+ ,teleTextText: "Teletext pages"
+ ,teleTextTTText: "Show teletext pages from this channel"
,editTTText : "Edit"
,editText : "Edit this channel"
,deleteText : "Delete this channel"
@@ -133,7 +137,11 @@ Ext.extend(Ext.xxv.channelsPanel, Ext.tree.TreePanel, {
,text:this.selectText
,scope: this
,disabled: true
- ,handler:function(){ this.ctxNode.select(); }
+ ,handler:function(){
+ var record = this.store.getById(this.ctxNode.attributes.channel);
+ var top = Ext.getCmp('main-tabs');
+ top.openProgram(record.data);
+ }
}
,'-',
{
@@ -143,14 +151,23 @@ Ext.extend(Ext.xxv.channelsPanel, Ext.tree.TreePanel, {
,scope: this
,disabled: true
,handler:function(){ this.onWebCastChannel(this.ctxNode.attributes.channel); }
- },
- {
+ },{
itemId:'sw'
,iconCls:'switch-icon'
,text:this.switchText
,scope: this
,disabled: true
,handler:function(){ this.onSwitchChannel(this.ctxNode.attributes.channel); }
+ },{
+ itemId:'vt'
+ ,iconCls:'teletext-icon'
+ ,text:this.teleTextText
+ ,scope: this
+ ,disabled: true
+ ,handler:function(){
+ var top = Ext.getCmp('main-tabs');
+ top.openTeleText(this.ctxNode.attributes.text, this.ctxNode.attributes.channel);
+ }
}
,'-',
{
@@ -211,7 +228,7 @@ Ext.extend(Ext.xxv.channelsPanel, Ext.tree.TreePanel, {
exists.select();
exists.ui.highlight();
}
- return;
+ return null;
}
Ext.apply(attrs, {
iconCls: 'channel-icon',
@@ -243,7 +260,7 @@ Ext.extend(Ext.xxv.channelsPanel, Ext.tree.TreePanel, {
}
/******************************************************************************/
,onLoadException : function( scope, o, arg, e) {
- new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e);
+ new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e.message);
}
,onLoad : function( store, records, opt ) {
diff --git a/skins/jason/chronicle.js b/skins/jason/chronicle.js
index 8937c28..e4921af 100644
--- a/skins/jason/chronicle.js
+++ b/skins/jason/chronicle.js
@@ -123,7 +123,7 @@ Ext.extend(Ext.xxv.chronicleGrid, Ext.grid.EditorGridPanel, {
,stateful: true
,onLoadException : function( scope, o, arg, e) {
- new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e);
+ new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e.message);
}
,onLoad : function( store, records, opt ) {
this.getSelectionModel().selectFirstRow();
diff --git a/skins/jason/files.lst b/skins/jason/files.lst
index 79524f9..5bc74eb 100644
--- a/skins/jason/files.lst
+++ b/skins/jason/files.lst
@@ -26,6 +26,7 @@ autotimers.js \
recordings.js \
chronicle.js \
music.js \
+teletext.js \
users.js \
vdr.js \
menus.js \
diff --git a/skins/jason/fixes.js b/skins/jason/fixes.js
index 5fb77b8..0e33c1f 100644
--- a/skins/jason/fixes.js
+++ b/skins/jason/fixes.js
@@ -276,3 +276,47 @@ Ext.override(Ext.layout.HBoxLayout, {
}, this);
}
});
+
+/* http://www.extjs.com/forum/showthread.php?t=73615 */
+Ext.override(Ext.menu.Menu, {
+ show: function(el, pos, parentMenu) {
+ if (this.floating) {
+ this.parentMenu = parentMenu;
+ if (!this.el) {
+ this.render();
+ this.doLayout(false, true);
+ }
+ //if(this.fireEvent('beforeshow', this) !== false){
+ this.showAt(this.el.getAlignToXY(el, pos || this.defaultAlign, this.defaultOffsets), parentMenu, false);
+ //}
+ } else {
+ Ext.menu.Menu.superclass.show.call(this);
+ }
+ },
+ showAt: function(xy, parentMenu, _e) {
+ if (this.fireEvent('beforeshow', this) !== false) {
+ this.parentMenu = parentMenu;
+ if (!this.el) {
+ this.render();
+ }
+ if (_e !== false) {
+ xy = this.el.adjustForConstraints(xy);
+ }
+ this.el.setXY(xy);
+ if (this.enableScrolling) {
+ this.constrainScroll(xy[1]);
+ }
+ this.el.show();
+ Ext.menu.Menu.superclass.onShow.call(this);
+ if (Ext.isIE) {
+ this.layout.doAutoSize();
+ if (!Ext.isIE8) {
+ this.el.repaint();
+ }
+ }
+ this.hidden = false;
+ this.focus();
+ this.fireEvent("show", this);
+ }
+ }
+});
diff --git a/skins/jason/form.js b/skins/jason/form.js
index ed337f4..caf2fbc 100644
--- a/skins/jason/form.js
+++ b/skins/jason/form.js
@@ -11,7 +11,7 @@ Ext.xxv.Question = function(item,parentstore) {
if(XXV.help.cmdDisabled(item.cmd)) {
new Ext.xxv.MessageBox().msgFailure(this.szCommandDeny, item.cmd);
- return 0;
+ return;
}
this.parentstore = parentstore;
@@ -75,7 +75,7 @@ Ext.extend(Ext.xxv.Question, Ext.Window, {
,szComboEmpty : "Select ..."
,onLoadException : function( scope, o, arg, e) {
- new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e);
+ new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e.message);
}
,onLoad : function(r,options,success){
diff --git a/skins/jason/help.js b/skins/jason/help.js
index d7b43b5..bcae331 100644
--- a/skins/jason/help.js
+++ b/skins/jason/help.js
@@ -37,16 +37,6 @@ Ext.extend(Ext.xxv.help, Ext.util.Observable, {
onLoad : function(store, records, options) {
if(!this.cmdDisabled('ce')) {
- // HTTPD are not visible on cmd=help
- XXV.configMenu.add(new Ext.menu.Item(
- {
- text: 'HTTPD'
- ,disabled:false
- ,handler: this.Configure
- ,scope:this
- }));
- XXV.configMenu.add('-');
-
var lastModule;
for(var i = 0, len = store.getCount(); i < len; i++){
var record = store.getAt(i);
diff --git a/skins/jason/index.tmpl b/skins/jason/index.tmpl
index f073515..c25798b 100644
--- a/skins/jason/index.tmpl
+++ b/skins/jason/index.tmpl
@@ -9,6 +9,7 @@
<link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css" />
<link rel="stylesheet" type="text/css" href="extjs/resources/css/xtheme-default.css" id="theme" />
<link rel="stylesheet" type="text/css" href="jason.css" />
+ <link rel="stylesheet" type="text/css" href="vtxgfx.css" />
<link rel="stylesheet" type="text/css" href="ux/multiselect.css" />
<link rel="stylesheet" type="text/css" href="ux/Carousel.css" />
<script language="javascript" type="text/javascript">
diff --git a/skins/jason/jason.css b/skins/jason/jason.css
index 9571803..eec6073 100644
--- a/skins/jason/jason.css
+++ b/skins/jason/jason.css
@@ -89,6 +89,7 @@ display:none;
.select-channel-icon { background-image:url(pic/channel-select.png) !important; }
.stream-icon { background-image:url(pic/web-playback.png) !important; }
.switch-icon { background-image:url(pic/remote-playback.png) !important; }
+.teletext-icon { background-image:url(pic/menu.png) !important; }
.xxv-icon { background-image:url(pic/xxv.png) !important; }
.program-icon { background-image:url(pic/channel.png) !important; }
.media-icon { background-image:url(pic/video.png) !important; }
@@ -479,3 +480,60 @@ color:red;
.x-form-check-group .x-panel-body {background-color: transparent;}
.x-form-check-wrap { height:auto; }
+/* teletext */
+#vt .x-panel-body{
+background: white;
+}
+#vt .thumb{
+background: #dddddd;
+padding: 3px;
+}
+
+#vt .thumb-wrap{
+float: left;
+margin: 4px;
+margin-right: 0;
+padding: 5px;
+}
+
+#vt .x-view-over{
+border:1px solid #dddddd;
+background: #efefef url(extjs/resources/images/default/grid/row-over.gif) repeat-x left top;
+padding: 4px;
+}
+
+#vt .x-view-selected{
+background: #eff5fb no-repeat right bottom;
+border:1px solid #99bbe8;
+padding: 4px;
+}
+
+#vt .x-view-selected .thumb{
+background:transparent;
+}
+
+#vt p.vtx {
+font-size:16px;
+line-height:18px;
+font-family:monospace;
+white-space:nowrap;
+}
+
+#vt img.vtx {
+position:absolute;
+z-index:1;
+width:10px;
+height:16px;
+}
+
+#vt a.vtx:link,a.vtx:visited,a.vtx:hover,a.vtx:active {
+text-decoration:none;
+}
+
+#vt a.vtx:link,a.vtx:visited {
+color:#0F0;
+}
+
+#vt a.vtx:hover,a.vtx:active {
+color:#FF0;
+}
diff --git a/skins/jason/locale/lang-de.js b/skins/jason/locale/lang-de.js
index d1e5b4f..a04a48c 100644
--- a/skins/jason/locale/lang-de.js
+++ b/skins/jason/locale/lang-de.js
@@ -55,6 +55,8 @@ Ext.xxv.channelsPanel.prototype.webcastTTText = "Live TV";
Ext.xxv.channelsPanel.prototype.webcastText = "Diesen Kanal als Live TV streamen";
Ext.xxv.channelsPanel.prototype.switchTTText = "Umschalten";
Ext.xxv.channelsPanel.prototype.switchText = "Auf diesen Kanal umschalten";
+Ext.xxv.channelsPanel.prototype.teleTextText = "Videotext";
+Ext.xxv.channelsPanel.prototype.teleTextTTText = "Zeigt den Videotext dieses Kanals";
Ext.xxv.channelsPanel.prototype.editTTText = "Bearbeiten";
Ext.xxv.channelsPanel.prototype.editText = "Diesen Kanal bearbeiten";
Ext.xxv.channelsPanel.prototype.deleteText = "Diesen Kanal löschen";
@@ -249,6 +251,11 @@ Ext.xxv.musicGrid.prototype.szColGenre = "Genre";
Ext.xxv.musicGrid.prototype.szColComment = "Kommentar";
Ext.xxv.musicGrid.prototype.szLoadException = "Konnte keine Titel der Musikliste holen!\r\n{0}";
+/* teletext */
+Ext.xxv.TeleTextView.prototype.szTitle = "Videotext";
+Ext.xxv.TeleTextView.prototype.szToolTip = "Zeigt Videotextseiten";
+Ext.xxv.TeleTextView.prototype.szLoadException = "Konnte keine Seite des Videotext holen!\r\n{0}";
+
/* monitor.js */
Ext.xxv.MonitorWindow.prototype.szTitle = "Monitorbild";
Ext.xxv.MonitorWindow.prototype.szAspect = "Wiederherstellen des korrekten Seitenverhältnis";
@@ -271,3 +278,4 @@ Ext.ux.Multiselect.prototype.maxLengthText = "Maximal sind {0} Einträge erlaubt
/* ux/filter.js */
Ext.ux.grid.Search.prototype.searchTipText = "Bitte geben Sie einen Text für die Suche ein";
+
diff --git a/skins/jason/locale/lang-en.js b/skins/jason/locale/lang-en.js
index 6c63039..65bb980 100644
--- a/skins/jason/locale/lang-en.js
+++ b/skins/jason/locale/lang-en.js
@@ -55,6 +55,8 @@ Ext.xxv.channelsPanel.prototype.webcastTTText = "Web cast";
Ext.xxv.channelsPanel.prototype.webcastText = "Live web cast this channel";
Ext.xxv.channelsPanel.prototype.switchTTText: "Switch";
Ext.xxv.channelsPanel.prototype.switchText = "Switch to this channel";
+Ext.xxv.channelsPanel.prototype.teleTextText = "Teletext pages";
+Ext.xxv.channelsPanel.prototype.teleTextTTText = "Show teletext pages from this channel";
Ext.xxv.channelsPanel.prototype.editTTText = "Edit";
Ext.xxv.channelsPanel.prototype.editText = "Edit this channel";
Ext.xxv.channelsPanel.prototype.deleteText = "Delete this channel";
@@ -251,6 +253,11 @@ Ext.xxv.musicGrid.prototype.szColGenre = "Genre";
Ext.xxv.musicGrid.prototype.szColComment = "Comment";
Ext.xxv.musicGrid.prototype.szLoadException = "Couldn't get title from music list!\r\n{0}";
+/* teletext */
+Ext.xxv.TeleTextView.prototype.szTitle = "Teletext";
+Ext.xxv.TeleTextView.prototype.szToolTip = "Display teletext pages";
+Ext.xxv.TeleTextView.prototype.szLoadException = "Couldn't get teletext pages!\r\n{0}";
+
/* monitor.js */
Ext.xxv.MonitorWindow.prototype.szTitle = "Monitor";
Ext.xxv.MonitorWindow.prototype.szAspect = "Restore aspect ratio correctly";
diff --git a/skins/jason/locale/lang-it.js b/skins/jason/locale/lang-it.js
index 6dc1615..1f23db9 100755
--- a/skins/jason/locale/lang-it.js
+++ b/skins/jason/locale/lang-it.js
@@ -55,6 +55,8 @@ Ext.xxv.channelsPanel.prototype.webcastTTText = "Trasmissione web";
Ext.xxv.channelsPanel.prototype.webcastText = "Trasmissione web dal vivo di questo canale";
Ext.xxv.channelsPanel.prototype.switchTTText: "Cambia";
Ext.xxv.channelsPanel.prototype.switchText = "Cambia su questo canale";
+/*NEED TO TRANSLATE*/ Ext.xxv.channelsPanel.prototype.teleTextText = "Teletext pages";
+/*NEED TO TRANSLATE*/ Ext.xxv.channelsPanel.prototype.teleTextTTText = "Show teletext pages from this channel";
Ext.xxv.channelsPanel.prototype.editTTText = "Modifica";
Ext.xxv.channelsPanel.prototype.editText = "Modifica questo canale";
Ext.xxv.channelsPanel.prototype.deleteText = "Elimina questo canale";
@@ -251,6 +253,11 @@ Ext.xxv.musicGrid.prototype.szColGenre = "Genere";
Ext.xxv.musicGrid.prototype.szColComment = "Commento";
Ext.xxv.musicGrid.prototype.szLoadException = "Impossibile recuperare titoli elenco musicale!\r\n{0}";
+/* teletext */
+/*NEED TO TRANSLATE*/ Ext.xxv.TeleTextView.prototype.szTitle = "Teletext";
+/*NEED TO TRANSLATE*/ Ext.xxv.TeleTextView.prototype.szToolTip = "Display teletext pages";
+/*NEED TO TRANSLATE*/ Ext.xxv.TeleTextView.prototype.szLoadException = "Couldn't get teletext pages!\r\n{0}";
+
/* monitor.js */
Ext.xxv.MonitorWindow.prototype.szTitle = "Schermo";
Ext.xxv.MonitorWindow.prototype.szAspect = "Ripristina risoluzione adeguata";
diff --git a/skins/jason/menus.js b/skins/jason/menus.js
index dbd3fa0..bcc8182 100644
--- a/skins/jason/menus.js
+++ b/skins/jason/menus.js
@@ -33,44 +33,57 @@ Ext.xxv.MainSearchField = Ext.extend(Ext.form.TwinTriggerField, {
}*/
});
+Ext.xxv.Menu = Ext.extend(Ext.menu.Menu, {
+ initComponent : function(){
+ Ext.xxv.Menu.superclass.initComponent.call(this);
+ this.on('beforerender', function(menu) {
+ menu.items.eachKey(function(key, f) {
+ if(f.cmd && XXV.help.cmdAllowed(f.cmd))
+ f.enable();
+ },menu.items);
+ } , this);
+ }
+});
+
Ext.xxv.MainMenu = function(/*config*/){
var selTheme = this.initTheme();
XXV.configMenu = new Ext.menu.Menu();
- var setupMenu = new Ext.menu.Menu(
- {
- items:[
- {
+ var setupMenu = new Ext.xxv.Menu({
+ defaults: {
+ disabled:true
+ ,handler: function(b,e) { XXV.tab.openTab(b.cmd); }
+ }
+ ,items:[{
text:this.szOwnSettings
,iconCls: 'setup-icon'
- ,disabled: false
,handler: XXV.help.Settings
,scope:XXV.help
+ ,cmd: 'up'
},{
text:this.szGlobalSettings
,iconCls: 'setup-icon'
,menu: XXV.configMenu
+ ,cmd: 'ce'
},'-',{
text: Ext.xxv.movetimersGrid.prototype.szTitle
- ,handler: function() { XXV.tab.openTab('mtl'); }
,iconCls:"movetimers-icon"
+ ,cmd: 'mtl'
},{
text: Ext.xxv.vdrGrid.prototype.szTitle
- ,handler: function() { XXV.tab.openTab('vl'); }
,iconCls:"vdr-icon"
+ ,cmd: 'vl'
},{
text: Ext.xxv.usersGrid.prototype.szTitle
- ,handler: function() { XXV.tab.openTab('ul'); }
,iconCls:"users-icon"
+ ,cmd: 'ul'
}
]
});
- var systemMenu = new Ext.menu.Menu(
- {
- items:[
- {
+ var systemMenu = new Ext.menu.Menu({
+ items:[{
text:this.szMenuItemSetup
,iconCls: 'setup-icon'
,menu: setupMenu
@@ -83,61 +96,63 @@ Ext.xxv.MainMenu = function(/*config*/){
]
});
-
-
- var ProgrammingMenu = new Ext.menu.Menu(
- {
- items:[
- {
+ var ProgrammingMenu = new Ext.xxv.Menu({
+ defaults: {
+ disabled:true
+ ,handler: function(b,e) { XXV.tab.openTab(b.cmd); }
+ }
+ ,items:[{
text: Ext.xxv.autotimerGrid.prototype.szTitle
- ,handler: function() { XXV.tab.openTab('al'); }
,iconCls:"autotimer-icon"
+ ,cmd: 'al'
},
{
text: Ext.xxv.timerGrid.prototype.szTitle
- ,handler: function() { XXV.tab.openTab('tl'); }
,iconCls:"timer-icon"
+ ,cmd: 'tl'
}
]
});
- var MediaMenu = new Ext.menu.Menu(
- {
- items:[
- {
+ var MediaMenu = new Ext.xxv.Menu({
+ defaults: {
+ disabled:true
+ ,handler: function(b,e) { XXV.tab.openTab(b.cmd); }
+ }
+ ,items:[{
text: Ext.xxv.recordingsDataView.prototype.szTitle
- ,handler: function() { XXV.tab.openTab('rl'); }
,iconCls:"recordings-icon"
- }
- ,{
+ ,cmd: 'rl'
+ },{
text: Ext.xxv.chronicleGrid.prototype.szTitle
- ,handler: function() { XXV.tab.openTab('chrl'); }
,iconCls:"chronicle-icon"
+ ,cmd: 'chrl'
},{
text: Ext.xxv.musicGrid.prototype.szTitle
- ,handler: function() { XXV.tab.openTab('ml'); }
,iconCls:"music-icon"
+ ,cmd: 'ml'
}/*,{
text: Ext.xxv.mediaDataView.prototype.szTitle,
- handler: function() { XXV.tab.openTab('mll'); },
iconCls:"media-icon",
- disabled:true
+ ,cmd: 'mll'
}*/
]
});
- var RemoteMenu = new Ext.menu.Menu(
- {
- items:[
- {
+ var RemoteMenu = new Ext.xxv.Menu({
+ defaults: {
+ disabled:true
+ }
+ ,items:[{
text: Ext.xxv.RemoteWindow.prototype.szTitle
,handler: function() { Ext.xxv.RemoteWindowOpen(); }
,iconCls:"remote-icon"
- }
- ,{
+ ,cmd: 'r'
+ },{
text: Ext.xxv.MonitorWindow.prototype.szTitle
,handler: function() { Ext.xxv.MonitorWindowOpen(); }
,iconCls:"monitor-icon"
+ ,cmd: 'r'
}
]
});
@@ -157,26 +172,26 @@ Ext.xxv.MainMenu = function(/*config*/){
id:"MainMenu",
region:"north",
height:26,
- items:[
- { text:this.szMenuXXV,
+ items:[{
+ text:this.szMenuXXV,
menu:systemMenu,
iconCls:"xxv-icon"
- },
- { text:this.szMenuProgramming,
+ },{
+ text:this.szMenuProgramming,
menu:ProgrammingMenu,
iconCls:"edit-icon"
- },
- { text:this.szMenuMedia,
+ },{
+ text:this.szMenuMedia,
menu:MediaMenu,
iconCls:"media-icon"
- },
- { text:this.szMenuRemote,
+ },{
+ text:this.szMenuRemote,
menu:RemoteMenu,
iconCls:"remote-icon"
- },
- { text:this.szMenuView,
- iconCls: 'view-icon',
- menu:{
+ },{
+ text:this.szMenuView,
+ iconCls: 'view-icon',
+ menu:{
items: [
{
text: this.szSelectTheme,
@@ -300,8 +315,8 @@ Ext.extend(Ext.xxv.MainMenu, Ext.Toolbar, {
/******************************************************************************/
,Logout: function(){
Ext.MessageBox.show({
- title: 'Logout'
- ,msg: 'Please wait...'
+ title: this.szMenuItemLogout
+ ,msg: Ext.form.BasicForm.prototype.waitTitle
,width:240
,closable:false
});
diff --git a/skins/jason/movetimers.js b/skins/jason/movetimers.js
index 499ca6d..d9fed61 100644
--- a/skins/jason/movetimers.js
+++ b/skins/jason/movetimers.js
@@ -110,7 +110,7 @@ Ext.extend(Ext.xxv.movetimersGrid, Ext.grid.EditorGridPanel, {
,stateful: true
,onLoadException : function( scope, o, arg, e) {
- new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e);
+ new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e.message);
}
,onLoad : function( store, records, opt ) {
this.getSelectionModel().selectFirstRow();
diff --git a/skins/jason/music.js b/skins/jason/music.js
index ad04c41..e3d81e3 100644
--- a/skins/jason/music.js
+++ b/skins/jason/music.js
@@ -157,7 +157,7 @@ Ext.extend(Ext.xxv.musicGrid, Ext.grid.GridPanel, { // Ext.grid.EditorGridPanel
,stateful: true
,onLoadException : function( scope, o, arg, e) {
- new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e);
+ new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e.message);
}
,onLoad : function( store, records, opt ) {
this.getSelectionModel().selectFirstRow();
diff --git a/skins/jason/now.js b/skins/jason/now.js
index 515dde9..2f19e03 100644
--- a/skins/jason/now.js
+++ b/skins/jason/now.js
@@ -176,7 +176,7 @@ Ext.extend(Ext.xxv.NowGrid, Ext.grid.GridPanel, {
,szRecordFailure : "Couldn't create timer!\r\n{0}"
,onLoadException : function( scope, o, arg, e) {
- new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e);
+ new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e.message);
}
,onBeforeLoad : function( store, opt ) {
diff --git a/skins/jason/pic/vtxgfx.gif b/skins/jason/pic/vtxgfx.gif
new file mode 100644
index 0000000..012a254
--- /dev/null
+++ b/skins/jason/pic/vtxgfx.gif
Binary files differ
diff --git a/skins/jason/program.js b/skins/jason/program.js
index b3523cf..7f22d7e 100644
--- a/skins/jason/program.js
+++ b/skins/jason/program.js
@@ -129,7 +129,7 @@ Ext.extend(Ext.xxv.programGrid, Ext.grid.GridPanel, {
,stateful: true
,onLoadException : function( scope, o, arg, e) {
- new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e);
+ new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e.message);
}
,onBeforeLoad : function( store, opt ) {
this.preview.clear();
diff --git a/skins/jason/reader.js b/skins/jason/reader.js
index f807163..0383348 100644
--- a/skins/jason/reader.js
+++ b/skins/jason/reader.js
@@ -18,7 +18,10 @@ Ext.extend(Ext.xxv.jsonReader, Ext.data.DataReader, {
throw {message: "XXVReader.read: " . r.statusText };
}
var o = eval('('+r.responseText+')');
- if(!o || !o.data || typeof(o.data) != 'object') {
+ if(!o || !o.data || typeof(o.data) != 'object') {
+ if(o && o.data && typeof(o.data) == 'string') {
+ throw {message: o.data};
+ }
throw {message: "XXVReader.read: Json object not found"};
}
return this.readRecords(o.data,o.param);
diff --git a/skins/jason/recordings.js b/skins/jason/recordings.js
index 84aea21..7e5fdef 100644
--- a/skins/jason/recordings.js
+++ b/skins/jason/recordings.js
@@ -363,31 +363,31 @@ Ext.xxv.recordingsDataView = function(viewer, preview, store, config) {
this.store = store;
var tpl = new Ext.XTemplate(
'<tpl for=".">',
- '<div class="thumb-wrap" id="{id}">',
+ '<div class="thumb-wrap" id="{id}">',
'<div class="thumb">',
'<tpl if="isrecording == 0">',
'<img src="pic/folder.png"<tpl if="group != 0"> ext:qtitle="{shortTitle}" ext:qtip="{ToolTip}"</tpl>/>',
'</tpl>',
'<tpl if="isrecording != 0">',
- '<tpl if="this.isRadio(type)">',
- '<img src="pic/radio.png" ext:qtitle="{shortTitle}" ext:qtip="{ToolTip}" />',
- '</tpl>',
- '<tpl if="this.isRadio(type) == false">',
- '<tpl if="frame == -1">',
- '<img src="pic/movie.png" ext:qtitle="{shortTitle}" ext:qtip="{ToolTip}" />',
- '</tpl>',
- '<tpl if="frame != -1">',
- '<img src="?cmd=ri&data={id}_{frame}" ext:qtitle="{shortTitle}" ext:qtip="{ToolTip}" />',
- '</tpl>',
+ '<tpl if="this.isRadio(type)">',
+ '<img src="pic/radio.png" ext:qtitle="{shortTitle}" ext:qtip="{ToolTip}" />',
+ '</tpl>',
+ '<tpl if="this.isRadio(type) == false">',
+ '<tpl if="frame == -1">',
+ '<img src="pic/movie.png" ext:qtitle="{shortTitle}" ext:qtip="{ToolTip}" />',
+ '</tpl>',
+ '<tpl if="frame != -1">',
+ '<img src="?cmd=ri&data={id}_{frame}" ext:qtitle="{shortTitle}" ext:qtip="{ToolTip}" />',
+ '</tpl>',
+ '</tpl>',
'</tpl>',
+ '<tpl if="unviewed != 0">',
+ '<div class="unviewed"></div>',
'</tpl>',
- '<tpl if="unviewed != 0">',
- '<div class="unviewed"></div>',
- '</tpl>',
- '</div>',
- '<span class="x-editable">{shortName}</span></div>',
- '</tpl>',
- '<div class="x-clear"></div>', {
+ '</div>',
+ '<span class="x-editable">{shortName}</span></div>',
+ '</tpl>',
+ '<div class="x-clear"></div>', {
isRadio: function(name){
return name == 'RADIO';
}
@@ -524,7 +524,7 @@ Ext.extend(Ext.xxv.recordingsDataView, Ext.DataView, {
,szFolderTip2 : "There are {0} recordings<br />Have {1} new recordings<br />Total time {2}"
,onLoadException : function( scope, o, arg, e) {
- new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e);
+ new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e.message);
}
,onBeforeLoad : function( scope, params ) {
if(this.DetailsTransaction)
@@ -687,12 +687,12 @@ Ext.extend(Ext.xxv.recordingsDataView, Ext.DataView, {
if(toDetails.length) {
toDetails += ',';
}
- var record = this.store.getById(selNode[i].id);
- if(record.data.isrecording == 0) {
+ var r = this.store.getById(selNode[i].id);
+ if(r.data.isrecording == 0) {
//toDetails += 'all:';
continue;
}
- toDetails += record.data.id;
+ toDetails += r.data.id;
}
}
}
@@ -778,7 +778,6 @@ Ext.extend(Ext.xxv.recordingsDataView, Ext.DataView, {
var enable = XXV.help.cmdAllowed(f.itemId);
if(enable) {
switch(f.itemId) {
- case 's': enable = (record.data.isrecording == 0) ? false : true; break;
case 're': enable = (record.data.isrecording == 0) ? false : true; break;
case 'rcu': enable = (record.data.isrecording == 0) ? false : true; break;
case 'rpv': enable = (record.data.isrecording == 0) ? false : true; break;
@@ -849,12 +848,12 @@ Ext.extend(Ext.xxv.recordingsDataView, Ext.DataView, {
if(toCut.length) {
toCut += ',';
}
- var record = this.store.getById(selNode[i].id);
- if(record.data.isrecording == 0) {
+ var r = this.store.getById(selNode[i].id);
+ if(r.data.isrecording == 0) {
//toCut += 'all:';
continue;
}
- toCut += record.data.id;
+ toCut += r.data.id;
}
}
}
@@ -936,11 +935,11 @@ Ext.extend(Ext.xxv.recordingsDataView, Ext.DataView, {
if(todelete.length) {
todelete += ',';
}
- var record = this.store.getById(selNode[i].id);
- if(record.data.isrecording == 0) {
+ var r = this.store.getById(selNode[i].id);
+ if(r.data.isrecording == 0) {
todelete += 'all:';
}
- todelete += record.data.id;
+ todelete += r.data.id;
}
}
}
diff --git a/skins/jason/search.js b/skins/jason/search.js
index a99d9c0..23c9279 100644
--- a/skins/jason/search.js
+++ b/skins/jason/search.js
@@ -120,7 +120,7 @@ Ext.extend(Ext.xxv.searchGrid, Ext.grid.GridPanel, {
,stateful: true
,onLoadException : function( scope, o, arg, e) {
- new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e);
+ new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e.message);
}
,onBeforeLoad : function( store, opt ) {
this.preview.clear();
diff --git a/skins/jason/tabpanel.js b/skins/jason/tabpanel.js
index df7096d..461dee3 100644
--- a/skins/jason/tabpanel.js
+++ b/skins/jason/tabpanel.js
@@ -152,7 +152,7 @@ Ext.extend(Ext.xxv.tabPanel, Ext.TabPanel, {
var d = record.data;
var Woerter = d.title.split("~");
var title = Woerter[0];
- return this.openSearch(title);
+ this.openSearch(title);
}
,Record : function(record){
if(!record || !record.data) return;
@@ -162,7 +162,17 @@ Ext.extend(Ext.xxv.tabPanel, Ext.TabPanel, {
if(!id) return;
this.gridNow.RecordID(id);
}
-
+ ,openTeleText : function(name, data){
+ var id = 'vt';
+ var tab;
+ if(!(tab = this.getItem(id))){
+ tab = createTeleTextView(this,id,name,data);
+ } else {
+ //tab.LoadTitle();
+ this.pageTeleText.reload(name, data);
+ }
+ this.setActiveTab(tab);
+ }
,openTab : function(id){
var tab;
if(!(tab = this.getItem(id))){
diff --git a/skins/jason/teletext.js b/skins/jason/teletext.js
new file mode 100644
index 0000000..491a032
--- /dev/null
+++ b/skins/jason/teletext.js
@@ -0,0 +1,335 @@
+/*
+ * jason - Javascript based skin for xxv
+ * Copyright(c) 2009, anbr
+ *
+ * http://xxv.berlios.de/
+ *
+ * $Id$
+ */
+/******************************************************************************/
+
+Ext.xxv.TeleTextStore = function(name, channel) {
+
+ // create the data store
+ return new Ext.data.Store({
+ title: name
+ ,baseParams:{cmd:'vt','channel':channel}
+ ,autoLoad:{params:{start:0, limit:99}}
+ ,reader: new Ext.xxv.jsonReader({
+ fields: [
+ {name: 'id', type: 'string'}
+ ,{name: 'page', type: 'string'}
+ ,{name: 'subpage', type: 'string'}
+ ,{name: 'channel', type: 'string'}
+ ,{name: 'prev', type: 'string'}
+ ,{name: 'next', type: 'string'}
+ ,{name: 'mtime', type: 'string'}
+ ,{name: 'content', type: 'string'}
+ ]
+ })
+ ,proxy : new Ext.data.HttpProxy({
+ url: XXV.help.baseURL()
+ ,method: 'POST'
+ })
+ });
+};
+
+Ext.xxv.TeleTextView = function(viewer, store, config) {
+ this.viewer = viewer;
+ Ext.apply(this, config);
+ this.store = store;
+ var tpl = new Ext.XTemplate(
+ '<tpl for=".">'
+ ,'<div class="thumb-wrap" id="{id}">'
+ ,'<div class="thumb">'
+ ,'{content}'
+ ,'</div>'
+ ,'</div>'
+ ,'</tpl>'
+ ,'<div class="x-clear"></div>'
+ );
+
+ this.filter = new Ext.ux.grid.Search({
+ position:'owner'
+ ,shortcutKey:null
+ ,paramNames: {
+ fields:'cmd'
+ ,all:'vt'
+ ,cmd:'vs'
+ ,query:'data'
+ }
+ });
+
+ Ext.xxv.TeleTextView.superclass.constructor.call(this, {
+ region: 'center'
+ ,store: store
+ ,tpl: tpl
+ ,cls: 'x-panel-body' // workaround - add missing border
+ ,style: 'overflow:auto'
+ ,singleSelect: true
+ ,overClass:'x-view-over'
+ ,itemSelector:'div.thumb-wrap'
+ ,loadMask:true
+ ,listeners: {
+ 'beforeselect' : {fn:function(view){ return view.store.getRange().length > 0; } }
+ ,'selectionchange': {fn:this.doClick, scope:this, buffer:100}
+ }
+ ,plugins: [
+ this.filter
+ ]
+ }
+ );
+ this.store.on({
+ 'beforeload' : this.onBeforeLoad
+ ,'load' : this.onLoad
+ ,'loadexception' : this.onLoadException
+ ,scope:this
+ });
+};
+
+
+Ext.extend(Ext.xxv.TeleTextView, Ext.DataView, {
+
+ szTitle : "Teletext"
+ ,szToolTip : "Display teletext pages"
+ ,szLoadException : "Couldn't get teletext pages!\r\n{0}"
+
+ ,onLoadException : function( scope, o, arg, e) {
+ new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e.message);
+ var tb = this.ownerCt.getTopToolbar();
+ tb.get('teletext-refresh').enable();
+ }
+ ,onBeforeLoad : function( scope, params ) {
+ if(this.DetailsTransaction)
+ Ext.Ajax.abort(this.DetailsTransaction);
+
+ if(this.el && this.el.dom) {
+ var elem = this.el.dom.getElementsByTagName('a');
+ for (var j = 0; j < elem.length; j++) {
+ var node = Ext.fly(elem[j]);
+ node.removeAllListeners();
+ }
+ }
+ var tb = this.ownerCt.getTopToolbar();
+ tb.get('teletext-refresh').disable();
+ }
+ ,onLoad : function( store, records, opt ) {
+
+ // replace all anchor to pages with callback
+ if(this.el && this.el.dom) {
+ var elem = this.el.dom.getElementsByTagName('a');
+ for (var j = 0; j < elem.length; j++) {
+ var url = Ext.urlDecode(elem[j].href);
+ if(url.page) {
+ elem[j].href = '#';
+ elem[j].id = url.page;
+
+ var node = Ext.fly(elem[j]);
+ node.on("click", function(e, ele){
+ e.stopEvent();
+ this.loadpage(ele.id);
+ },this);
+ }
+ }
+ }
+
+ if(store.title) {
+ this.ownerCt.SetPanelTitle(this.szTitle + " - " + store.title);
+ } else {
+ this.ownerCt.SetPanelTitle(this.szTitle);
+ }
+
+ var data = records[0].data;
+ var tb = this.ownerCt.getTopToolbar();
+ tb.get('teletext-number').setValue(data.page);
+ tb.get('teletext-first').setDisabled(data.prev == 0);
+ tb.get('teletext-prev').setDisabled(data.prev == 0);
+ tb.get('teletext-next').setDisabled(data.next == 0);
+ //tb.get('teletext-last').setDisabled(true);
+ tb.get('teletext-refresh').enable();
+ }
+ ,doClick : function(){
+ var selNode = this.getSelectedNodes();
+ if(selNode && selNode.length > 0){
+ var page = this.store.getById(selNode[0].id);
+ if(page) {
+ var tb = this.ownerCt.getTopToolbar();
+ tb.get('teletext-number').setValue(page.data.page);
+ }
+ }
+ }
+ ,reload : function(name, channel) {
+ this.store.title = name;
+ this.store.baseParams.channel = channel;
+ this.moveFirst();
+ }
+ ,loadpage : function(page) {
+ var f = this.filter.field.getValue();
+ if(f && f != '') {
+ this.filter.field.setValue('');
+ this.store.baseParams.cmd = 'vt';
+ }
+ if(page && page != 0)
+ this.store.load({params:{'page':page, start:0, limit:99}});
+ }
+ ,moveFirst : function() {
+ var f = this.filter.field.getValue();
+ if(f && f != '') {
+ this.filter.field.setValue('');
+ this.store.baseParams.cmd = 'vt';
+ }
+ this.store.load({params:{start:0, limit:99}});
+ }
+ ,movePrev : function() {
+ var node = this.getNode(0);
+ if(node) {
+ var record = this.store.getById(node.id);
+ if(record) {
+ this.loadpage(record.data.prev);
+ }
+ }
+ }
+ ,moveNext : function() {
+ var node = this.getNode(0);
+ if(node) {
+ var record = this.store.getById(node.id);
+ if(record) {
+ this.loadpage(record.data.next);
+ }
+ }
+ }
+ ,moveLast : function() {
+
+ }
+ ,retryPage : function() {
+ var node = this.getNode(0);
+ if(node) {
+ var record = this.store.getById(node.id);
+ if(record) {
+ this.store.load({params:{'page':record.data.page, start:0, limit:99}});
+ return;
+ }
+ }
+ moveFirst();
+ }
+ ,readPage : function(record){
+ var tb = this.ownerCt.getTopToolbar();
+ var input = tb.get('teletext-number');
+ var v = input.getValue(), pageNum;
+ if (!v || isNaN(pageNum = parseInt(v, 10))) {
+ input.setValue(record.data.page);
+ return false;
+ }
+ return pageNum;
+ }
+ ,onPagingBlur : function(e){
+ var node = this.getNode(0);
+ if(node) {
+ var record = this.store.getById(node.id);
+ if(record) {
+ var tb = this.ownerCt.getTopToolbar();
+ tb.get('teletext-number').setValue(record.data.page);
+ }
+ }
+ }
+ ,onPagingKeyDown : function(field, e){
+ var node = this.getNode(0);
+ if(!node) return;
+ var record = this.store.getById(node.id);
+ if(!record) return;
+
+ var k = e.getKey(), pageNum;
+ if (k == e.RETURN) {
+ e.stopEvent();
+ pageNum = this.readPage(record);
+ if(pageNum !== false){
+ this.loadpage(pageNum);
+ }
+ }else if (k == e.HOME) {
+ e.stopEvent();
+ this.moveFirst();
+ }else if (k == e.END) {
+ e.stopEvent();
+ this.moveLast();
+ }else if (k == e.UP || k == e.PAGEUP || k == e.DOWN || k == e.PAGEDOWN){
+ e.stopEvent();
+ if(k == e.DOWN || k == e.PAGEDOWN){
+ this.moveNext();
+ } else {
+ this.movePrev();
+ }
+ }
+ }
+});
+
+function createTeleTextView(viewer,id,name, channel) {
+
+ viewer.pageTeleText = new Ext.xxv.TeleTextView(
+ viewer,
+ new Ext.xxv.TeleTextStore(name, channel),
+ { id: 'teletext-view-page' });
+
+ var tab = new Ext.xxv.Panel({
+ id: id
+ ,iconCls:"teletext-icon"
+ ,closable:true
+ ,border:false
+ ,layout:'border'
+ ,stateful:true
+ ,hideMode:'offsets'
+ ,items:[ viewer.pageTeleText ]
+ ,tbar:new Ext.Toolbar({
+ items: [
+ {
+ id: 'teletext-first' ,iconCls: 'x-tbar-page-first'
+ ,tooltip: Ext.PagingToolbar.prototype.firstText
+ ,scope: viewer.pageTeleText ,disabled:true
+ ,handler: viewer.pageTeleText.moveFirst
+ },{
+ id: 'teletext-prev' ,iconCls: 'x-tbar-page-prev'
+ ,tooltip: Ext.PagingToolbar.prototype.prevText
+ ,scope: viewer.pageTeleText ,disabled:true
+ ,handler: viewer.pageTeleText.movePrev
+ },'-',{
+ xtype: 'tbtext', text: Ext.PagingToolbar.prototype.beforePageText
+ },{
+ id: 'teletext-number'
+ ,cls: "x-tbar-page-number"
+ ,xtype: 'numberfield'
+ ,allowDecimals: false
+ ,allowNegative: false
+ ,emptyText: Ext.PagingToolbar.prototype.emptyMsg
+ ,enableKeyEvents: true
+ ,selectOnFocus: true
+ ,listeners: {
+ scope: viewer.pageTeleText,
+ keydown: viewer.pageTeleText.onPagingKeyDown,
+ blur: viewer.pageTeleText.onPagingBlur
+ }
+ },'-',{
+ id: 'teletext-next'
+ ,iconCls: 'x-tbar-page-next'
+ ,tooltip: Ext.PagingToolbar.prototype.nextText
+ ,scope: viewer.pageTeleText ,disabled:true
+ ,handler: viewer.pageTeleText.moveNext
+ },{
+ id: 'teletext-last'
+ ,iconCls: 'x-tbar-page-last'
+ ,tooltip: Ext.PagingToolbar.prototype.lastText
+ ,scope: viewer.pageTeleText ,disabled:true
+ ,handler: viewer.pageTeleText.moveLast
+ },'-',{
+ id: 'teletext-refresh'
+ ,iconCls: 'x-tbar-loading'
+ ,tooltip: Ext.PagingToolbar.prototype.refreshText
+ ,scope: viewer.pageTeleText ,disabled:false
+ ,handler: viewer.pageTeleText.retryPage
+ },'->'
+ ]
+ })
+ });
+
+ viewer.add(tab);
+ return tab;
+}
+
diff --git a/skins/jason/timers.js b/skins/jason/timers.js
index 71473d7..7b66dbf 100644
--- a/skins/jason/timers.js
+++ b/skins/jason/timers.js
@@ -221,7 +221,7 @@ Ext.extend(Ext.xxv.timerGrid, Ext.grid.GridPanel, { // Ext.grid.EditorGridPanel
,stateful: true
,onLoadException : function( scope, o, arg, e) {
- new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e);
+ new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e.message);
}
,onBeforeLoad : function( store, opt ) {
this.preview.clear();
diff --git a/skins/jason/users.js b/skins/jason/users.js
index 22f66b7..06569a2 100644
--- a/skins/jason/users.js
+++ b/skins/jason/users.js
@@ -115,7 +115,7 @@ Ext.extend(Ext.xxv.usersGrid, Ext.grid.EditorGridPanel, {
,stateful: true
,onLoadException : function( scope, o, arg, e) {
- new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e);
+ new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e.message);
}
,onLoad : function( store, records, opt ) {
this.getSelectionModel().selectFirstRow();
diff --git a/skins/jason/ux/Carousel.js b/skins/jason/ux/Carousel.js
index bd1626d..9c1ace0 100644
--- a/skins/jason/ux/Carousel.js
+++ b/skins/jason/ux/Carousel.js
@@ -325,6 +325,7 @@ Ext.ux.layout.Carousel = Ext.extend(Ext.layout.ContainerLayout, {
}
}
}
+ return null;
},
getNextOnRight: function() {
@@ -337,6 +338,7 @@ Ext.ux.layout.Carousel = Ext.extend(Ext.layout.ContainerLayout, {
}
}
}
+ return null;
},
/**
@@ -444,6 +446,7 @@ Ext.ux.layout.Carousel = Ext.extend(Ext.layout.ContainerLayout, {
} else {
return (dir == -1) ? pos - this.scrollIncrement : pos + this.scrollIncrement;
}
+ return 0;
},
// private
diff --git a/skins/jason/ux/DDView.js b/skins/jason/ux/DDView.js
index a976bbd..cadbefd 100644
--- a/skins/jason/ux/DDView.js
+++ b/skins/jason/ux/DDView.js
@@ -579,6 +579,7 @@ Ext.extend(Ext.ux.DDView, Ext.DataView, {
}
}
}
+ return true;
},
// private
@@ -586,7 +587,7 @@ Ext.extend(Ext.ux.DDView, Ext.DataView, {
// The DragZone's mousedown->getDragData already handled selection
if (this.ignoreNextClick) {
delete this.ignoreNextClick;
- return;
+ return false;
}
if(this.fireEvent("beforeclick", this, index, item, e) === false){
diff --git a/skins/jason/ux/Multiselect.js b/skins/jason/ux/Multiselect.js
index d52dbe8..879906d 100644
--- a/skins/jason/ux/Multiselect.js
+++ b/skins/jason/ux/Multiselect.js
@@ -230,6 +230,7 @@ Ext.ux.Multiselect = Ext.extend(Ext.form.Field, {
onViewBeforeClick: function(vw, index, node, e) {
this.preClickSelections = this.view.getSelectedIndexes();
if (this.disabled) {return false;}
+ return true;
},
// private
diff --git a/skins/jason/ux/SlideZone.js b/skins/jason/ux/SlideZone.js
index 520797b..3932525 100644
--- a/skins/jason/ux/SlideZone.js
+++ b/skins/jason/ux/SlideZone.js
@@ -14,9 +14,10 @@
Ext.ux.SlideZone = function(id, config) {
if(id) {
Ext.apply(this, config);
- this.init(id, config || {});
+ this.init(id, config || {});
+ return this;
} else {
- return false;
+ return null;
}
}
@@ -128,6 +129,7 @@ Ext.extend(Ext.ux.SlideZone, Ext.BoxComponent, {
}
break;
}
+ return null;
},
@@ -366,37 +368,32 @@ Ext.extend(Ext.ux.Slider, Ext.BoxComponent, {
switch(this.type) {
case 'horizontal':
return [this.el.getX()];
- break;
case 'vertical':
return [this.el.getY()];
- break;
case 'area':
return this.el.getXY();
- break;
}
+ return null;
},
getBR: function() {
switch(this.type) {
case 'horizontal':
return [this.el.getRight()];
- break;
case 'vertical':
return [this.el.getBottom()];
- break;
case 'area':
return [this.el.getRight(), this.el.getBottom()];
- break;
}
-
+ return null;
},
setPosition: function(position) {
- var l = position.length;
+ var i,l = position.length;
for (i=0; i<l; i++) {
position[i] = parseInt(position[i]);
}
@@ -419,7 +416,7 @@ Ext.extend(Ext.ux.Slider, Ext.BoxComponent, {
setConstraint: function(low, high, snap) {
if(this.allowMove) {
- var l = low.length;
+ var i,l = low.length;
for (i=0; i<l; i++) {
low[i] = parseInt(low[i] = low[i] < 0 ? 0 : low[i]);
high[i] = parseInt(high[i] = high[i] < 0 ? 0 : high[i]);
diff --git a/skins/jason/ux/TabCloseMenu.js b/skins/jason/ux/TabCloseMenu.js
index 09d3678..803e2fe 100644
--- a/skins/jason/ux/TabCloseMenu.js
+++ b/skins/jason/ux/TabCloseMenu.js
@@ -43,10 +43,10 @@ Ext.ux.TabCloseMenu = function(){
tabs.items.each(function(){
if(this != item && this.closable){
disableOthers = false;
- return false;
+ return;
}
});
items.get(tabs.id + '-close-others').setDisabled(disableOthers);
- menu.showAt(e.getPoint());
+ menu.showAt(e.getPoint());
}
};
diff --git a/skins/jason/vdr.js b/skins/jason/vdr.js
index f780ba8..38fa447 100644
--- a/skins/jason/vdr.js
+++ b/skins/jason/vdr.js
@@ -135,7 +135,7 @@ Ext.extend(Ext.xxv.vdrGrid, Ext.grid.EditorGridPanel, {
,stateful: true
,onLoadException : function( scope, o, arg, e) {
- new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e);
+ new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e.message);
}
,onLoad : function( store, records, opt ) {
this.getSelectionModel().selectFirstRow();
diff --git a/skins/jason/vtxgfx.css b/skins/jason/vtxgfx.css
new file mode 100644
index 0000000..f200682
--- /dev/null
+++ b/skins/jason/vtxgfx.css
@@ -0,0 +1,546 @@
+#vt p.vtx {
+font-size:16px;
+line-height:18px;
+font-family:monospace;
+white-space:nowrap;
+}
+
+#vt a.vtx:link,a.vtx:visited,a.vtx:hover,a.vtx:active {
+text-decoration:none;
+}
+
+#vt a.vtx:link,a.vtx:visited {
+color:#0F0;
+}
+
+#vt a.vtx:hover,a.vtx:active {
+color:#FF0;
+}
+
+.vtgfx {
+width:12px;
+height:18px;
+background-image:url(pic/vtxgfx.gif);
+background-repeat:no-repeat;
+}
+
+.white20{ background-position:0 0;}
+.white21{ background-position:0 -18px;}
+.white22{ background-position:0 -36px;}
+.white23{ background-position:0 -54px;}
+.white24{ background-position:0 -72px;}
+.white25{ background-position:0 -90px;}
+.white26{ background-position:0 -108px;}
+.white27{ background-position:0 -126px;}
+.white28{ background-position:0 -144px;}
+.white29{ background-position:0 -162px;}
+.white2A{ background-position:0 -180px;}
+.white2B{ background-position:0 -198px;}
+.white2C{ background-position:0 -216px;}
+.white2D{ background-position:0 -234px;}
+.white2E{ background-position:0 -252px;}
+.white2F{ background-position:0 -270px;}
+.white30{ background-position:0 -288px;}
+.white31{ background-position:0 -306px;}
+.white32{ background-position:0 -324px;}
+.white33{ background-position:0 -342px;}
+.white34{ background-position:0 -360px;}
+.white35{ background-position:0 -378px;}
+.white36{ background-position:0 -396px;}
+.white37{ background-position:0 -414px;}
+.white38{ background-position:0 -432px;}
+.white39{ background-position:0 -450px;}
+.white3A{ background-position:0 -468px;}
+.white3B{ background-position:0 -486px;}
+.white3C{ background-position:0 -504px;}
+.white3D{ background-position:0 -522px;}
+.white3E{ background-position:0 -540px;}
+.white3F{ background-position:0 -558px;}
+.white60{ background-position:0 -576px;}
+.white61{ background-position:0 -594px;}
+.white62{ background-position:0 -612px;}
+.white63{ background-position:0 -630px;}
+.white64{ background-position:0 -648px;}
+.white65{ background-position:0 -666px;}
+.white66{ background-position:0 -684px;}
+.white67{ background-position:0 -702px;}
+.white68{ background-position:0 -720px;}
+.white69{ background-position:0 -738px;}
+.white6A{ background-position:0 -756px;}
+.white6B{ background-position:0 -774px;}
+.white6C{ background-position:0 -792px;}
+.white6D{ background-position:0 -810px;}
+.white6E{ background-position:0 -828px;}
+.white6F{ background-position:0 -846px;}
+.white70{ background-position:0 -864px;}
+.white71{ background-position:0 -882px;}
+.white72{ background-position:0 -900px;}
+.white73{ background-position:0 -918px;}
+.white74{ background-position:0 -936px;}
+.white75{ background-position:0 -954px;}
+.white76{ background-position:0 -972px;}
+.white77{ background-position:0 -990px;}
+.white78{ background-position:0 -1008px;}
+.white79{ background-position:0 -1026px;}
+.white7A{ background-position:0 -1044px;}
+.white7B{ background-position:0 -1062px;}
+.white7C{ background-position:0 -1080px;}
+.white7D{ background-position:0 -1098px;}
+.white7E{ background-position:0 -1116px;}
+.white7F{ background-position:0 -1134px;}
+
+.black20{ background-position:-12px 0px;}
+.black21{ background-position:-12px -18px;}
+.black22{ background-position:-12px -36px;}
+.black23{ background-position:-12px -54px;}
+.black24{ background-position:-12px -72px;}
+.black25{ background-position:-12px -90px;}
+.black26{ background-position:-12px -108px;}
+.black27{ background-position:-12px -126px;}
+.black28{ background-position:-12px -144px;}
+.black29{ background-position:-12px -162px;}
+.black2A{ background-position:-12px -180px;}
+.black2B{ background-position:-12px -198px;}
+.black2C{ background-position:-12px -216px;}
+.black2D{ background-position:-12px -234px;}
+.black2E{ background-position:-12px -252px;}
+.black2F{ background-position:-12px -270px;}
+.black30{ background-position:-12px -288px;}
+.black31{ background-position:-12px -306px;}
+.black32{ background-position:-12px -324px;}
+.black33{ background-position:-12px -342px;}
+.black34{ background-position:-12px -360px;}
+.black35{ background-position:-12px -378px;}
+.black36{ background-position:-12px -396px;}
+.black37{ background-position:-12px -414px;}
+.black38{ background-position:-12px -432px;}
+.black39{ background-position:-12px -450px;}
+.black3A{ background-position:-12px -468px;}
+.black3B{ background-position:-12px -486px;}
+.black3C{ background-position:-12px -504px;}
+.black3D{ background-position:-12px -522px;}
+.black3E{ background-position:-12px -540px;}
+.black3F{ background-position:-12px -558px;}
+.black60{ background-position:-12px -576px;}
+.black61{ background-position:-12px -594px;}
+.black62{ background-position:-12px -612px;}
+.black63{ background-position:-12px -630px;}
+.black64{ background-position:-12px -648px;}
+.black65{ background-position:-12px -666px;}
+.black66{ background-position:-12px -684px;}
+.black67{ background-position:-12px -702px;}
+.black68{ background-position:-12px -720px;}
+.black69{ background-position:-12px -738px;}
+.black6A{ background-position:-12px -756px;}
+.black6B{ background-position:-12px -774px;}
+.black6C{ background-position:-12px -792px;}
+.black6D{ background-position:-12px -810px;}
+.black6E{ background-position:-12px -828px;}
+.black6F{ background-position:-12px -846px;}
+.black70{ background-position:-12px -864px;}
+.black71{ background-position:-12px -882px;}
+.black72{ background-position:-12px -900px;}
+.black73{ background-position:-12px -918px;}
+.black74{ background-position:-12px -936px;}
+.black75{ background-position:-12px -954px;}
+.black76{ background-position:-12px -972px;}
+.black77{ background-position:-12px -990px;}
+.black78{ background-position:-12px -1008px;}
+.black79{ background-position:-12px -1026px;}
+.black7A{ background-position:-12px -1044px;}
+.black7B{ background-position:-12px -1062px;}
+.black7C{ background-position:-12px -1080px;}
+.black7D{ background-position:-12px -1098px;}
+.black7E{ background-position:-12px -1116px;}
+.black7F{ background-position:-12px -1134px;}
+
+.red20{ background-position:-24px 0px;}
+.red21{ background-position:-24px -18px;}
+.red22{ background-position:-24px -36px;}
+.red23{ background-position:-24px -54px;}
+.red24{ background-position:-24px -72px;}
+.red25{ background-position:-24px -90px;}
+.red26{ background-position:-24px -108px;}
+.red27{ background-position:-24px -126px;}
+.red28{ background-position:-24px -144px;}
+.red29{ background-position:-24px -162px;}
+.red2A{ background-position:-24px -180px;}
+.red2B{ background-position:-24px -198px;}
+.red2C{ background-position:-24px -216px;}
+.red2D{ background-position:-24px -234px;}
+.red2E{ background-position:-24px -252px;}
+.red2F{ background-position:-24px -270px;}
+.red30{ background-position:-24px -288px;}
+.red31{ background-position:-24px -306px;}
+.red32{ background-position:-24px -324px;}
+.red33{ background-position:-24px -342px;}
+.red34{ background-position:-24px -360px;}
+.red35{ background-position:-24px -378px;}
+.red36{ background-position:-24px -396px;}
+.red37{ background-position:-24px -414px;}
+.red38{ background-position:-24px -432px;}
+.red39{ background-position:-24px -450px;}
+.red3A{ background-position:-24px -468px;}
+.red3B{ background-position:-24px -486px;}
+.red3C{ background-position:-24px -504px;}
+.red3D{ background-position:-24px -522px;}
+.red3E{ background-position:-24px -540px;}
+.red3F{ background-position:-24px -558px;}
+.red60{ background-position:-24px -576px;}
+.red61{ background-position:-24px -594px;}
+.red62{ background-position:-24px -612px;}
+.red63{ background-position:-24px -630px;}
+.red64{ background-position:-24px -648px;}
+.red65{ background-position:-24px -666px;}
+.red66{ background-position:-24px -684px;}
+.red67{ background-position:-24px -702px;}
+.red68{ background-position:-24px -720px;}
+.red69{ background-position:-24px -738px;}
+.red6A{ background-position:-24px -756px;}
+.red6B{ background-position:-24px -774px;}
+.red6C{ background-position:-24px -792px;}
+.red6D{ background-position:-24px -810px;}
+.red6E{ background-position:-24px -828px;}
+.red6F{ background-position:-24px -846px;}
+.red70{ background-position:-24px -864px;}
+.red71{ background-position:-24px -882px;}
+.red72{ background-position:-24px -900px;}
+.red73{ background-position:-24px -918px;}
+.red74{ background-position:-24px -936px;}
+.red75{ background-position:-24px -954px;}
+.red76{ background-position:-24px -972px;}
+.red77{ background-position:-24px -990px;}
+.red78{ background-position:-24px -1008px;}
+.red79{ background-position:-24px -1026px;}
+.red7A{ background-position:-24px -1044px;}
+.red7B{ background-position:-24px -1062px;}
+.red7C{ background-position:-24px -1080px;}
+.red7D{ background-position:-24px -1098px;}
+.red7E{ background-position:-24px -1116px;}
+.red7F{ background-position:-24px -1134px;}
+
+.blue20{ background-position:-36px 0px;}
+.blue21{ background-position:-36px -18px;}
+.blue22{ background-position:-36px -36px;}
+.blue23{ background-position:-36px -54px;}
+.blue24{ background-position:-36px -72px;}
+.blue25{ background-position:-36px -90px;}
+.blue26{ background-position:-36px -108px;}
+.blue27{ background-position:-36px -126px;}
+.blue28{ background-position:-36px -144px;}
+.blue29{ background-position:-36px -162px;}
+.blue2A{ background-position:-36px -180px;}
+.blue2B{ background-position:-36px -198px;}
+.blue2C{ background-position:-36px -216px;}
+.blue2D{ background-position:-36px -234px;}
+.blue2E{ background-position:-36px -252px;}
+.blue2F{ background-position:-36px -270px;}
+.blue30{ background-position:-36px -288px;}
+.blue31{ background-position:-36px -306px;}
+.blue32{ background-position:-36px -324px;}
+.blue33{ background-position:-36px -342px;}
+.blue34{ background-position:-36px -360px;}
+.blue35{ background-position:-36px -378px;}
+.blue36{ background-position:-36px -396px;}
+.blue37{ background-position:-36px -414px;}
+.blue38{ background-position:-36px -432px;}
+.blue39{ background-position:-36px -450px;}
+.blue3A{ background-position:-36px -468px;}
+.blue3B{ background-position:-36px -486px;}
+.blue3C{ background-position:-36px -504px;}
+.blue3D{ background-position:-36px -522px;}
+.blue3E{ background-position:-36px -540px;}
+.blue3F{ background-position:-36px -558px;}
+.blue60{ background-position:-36px -576px;}
+.blue61{ background-position:-36px -594px;}
+.blue62{ background-position:-36px -612px;}
+.blue63{ background-position:-36px -630px;}
+.blue64{ background-position:-36px -648px;}
+.blue65{ background-position:-36px -666px;}
+.blue66{ background-position:-36px -684px;}
+.blue67{ background-position:-36px -702px;}
+.blue68{ background-position:-36px -720px;}
+.blue69{ background-position:-36px -738px;}
+.blue6A{ background-position:-36px -756px;}
+.blue6B{ background-position:-36px -774px;}
+.blue6C{ background-position:-36px -792px;}
+.blue6D{ background-position:-36px -810px;}
+.blue6E{ background-position:-36px -828px;}
+.blue6F{ background-position:-36px -846px;}
+.blue70{ background-position:-36px -864px;}
+.blue71{ background-position:-36px -882px;}
+.blue72{ background-position:-36px -900px;}
+.blue73{ background-position:-36px -918px;}
+.blue74{ background-position:-36px -936px;}
+.blue75{ background-position:-36px -954px;}
+.blue76{ background-position:-36px -972px;}
+.blue77{ background-position:-36px -990px;}
+.blue78{ background-position:-36px -1008px;}
+.blue79{ background-position:-36px -1026px;}
+.blue7A{ background-position:-36px -1044px;}
+.blue7B{ background-position:-36px -1062px;}
+.blue7C{ background-position:-36px -1080px;}
+.blue7D{ background-position:-36px -1098px;}
+.blue7E{ background-position:-36px -1116px;}
+.blue7F{ background-position:-36px -1134px;}
+
+.yellow20{ background-position:-48px 0px;}
+.yellow21{ background-position:-48px -18px;}
+.yellow22{ background-position:-48px -36px;}
+.yellow23{ background-position:-48px -54px;}
+.yellow24{ background-position:-48px -72px;}
+.yellow25{ background-position:-48px -90px;}
+.yellow26{ background-position:-48px -108px;}
+.yellow27{ background-position:-48px -126px;}
+.yellow28{ background-position:-48px -144px;}
+.yellow29{ background-position:-48px -162px;}
+.yellow2A{ background-position:-48px -180px;}
+.yellow2B{ background-position:-48px -198px;}
+.yellow2C{ background-position:-48px -216px;}
+.yellow2D{ background-position:-48px -234px;}
+.yellow2E{ background-position:-48px -252px;}
+.yellow2F{ background-position:-48px -270px;}
+.yellow30{ background-position:-48px -288px;}
+.yellow31{ background-position:-48px -306px;}
+.yellow32{ background-position:-48px -324px;}
+.yellow33{ background-position:-48px -342px;}
+.yellow34{ background-position:-48px -360px;}
+.yellow35{ background-position:-48px -378px;}
+.yellow36{ background-position:-48px -396px;}
+.yellow37{ background-position:-48px -414px;}
+.yellow38{ background-position:-48px -432px;}
+.yellow39{ background-position:-48px -450px;}
+.yellow3A{ background-position:-48px -468px;}
+.yellow3B{ background-position:-48px -486px;}
+.yellow3C{ background-position:-48px -504px;}
+.yellow3D{ background-position:-48px -522px;}
+.yellow3E{ background-position:-48px -540px;}
+.yellow3F{ background-position:-48px -558px;}
+.yellow60{ background-position:-48px -576px;}
+.yellow61{ background-position:-48px -594px;}
+.yellow62{ background-position:-48px -612px;}
+.yellow63{ background-position:-48px -630px;}
+.yellow64{ background-position:-48px -648px;}
+.yellow65{ background-position:-48px -666px;}
+.yellow66{ background-position:-48px -684px;}
+.yellow67{ background-position:-48px -702px;}
+.yellow68{ background-position:-48px -720px;}
+.yellow69{ background-position:-48px -738px;}
+.yellow6A{ background-position:-48px -756px;}
+.yellow6B{ background-position:-48px -774px;}
+.yellow6C{ background-position:-48px -792px;}
+.yellow6D{ background-position:-48px -810px;}
+.yellow6E{ background-position:-48px -828px;}
+.yellow6F{ background-position:-48px -846px;}
+.yellow70{ background-position:-48px -864px;}
+.yellow71{ background-position:-48px -882px;}
+.yellow72{ background-position:-48px -900px;}
+.yellow73{ background-position:-48px -918px;}
+.yellow74{ background-position:-48px -936px;}
+.yellow75{ background-position:-48px -954px;}
+.yellow76{ background-position:-48px -972px;}
+.yellow77{ background-position:-48px -990px;}
+.yellow78{ background-position:-48px -1008px;}
+.yellow79{ background-position:-48px -1026px;}
+.yellow7A{ background-position:-48px -1044px;}
+.yellow7B{ background-position:-48px -1062px;}
+.yellow7C{ background-position:-48px -1080px;}
+.yellow7D{ background-position:-48px -1098px;}
+.yellow7E{ background-position:-48px -1116px;}
+.yellow7F{ background-position:-48px -1134px;}
+
+.green20{ background-position:-60px 0px;}
+.green21{ background-position:-60px -18px;}
+.green22{ background-position:-60px -36px;}
+.green23{ background-position:-60px -54px;}
+.green24{ background-position:-60px -72px;}
+.green25{ background-position:-60px -90px;}
+.green26{ background-position:-60px -108px;}
+.green27{ background-position:-60px -126px;}
+.green28{ background-position:-60px -144px;}
+.green29{ background-position:-60px -162px;}
+.green2A{ background-position:-60px -180px;}
+.green2B{ background-position:-60px -198px;}
+.green2C{ background-position:-60px -216px;}
+.green2D{ background-position:-60px -234px;}
+.green2E{ background-position:-60px -252px;}
+.green2F{ background-position:-60px -270px;}
+.green30{ background-position:-60px -288px;}
+.green31{ background-position:-60px -306px;}
+.green32{ background-position:-60px -324px;}
+.green33{ background-position:-60px -342px;}
+.green34{ background-position:-60px -360px;}
+.green35{ background-position:-60px -378px;}
+.green36{ background-position:-60px -396px;}
+.green37{ background-position:-60px -414px;}
+.green38{ background-position:-60px -432px;}
+.green39{ background-position:-60px -450px;}
+.green3A{ background-position:-60px -468px;}
+.green3B{ background-position:-60px -486px;}
+.green3C{ background-position:-60px -504px;}
+.green3D{ background-position:-60px -522px;}
+.green3E{ background-position:-60px -540px;}
+.green3F{ background-position:-60px -558px;}
+.green60{ background-position:-60px -576px;}
+.green61{ background-position:-60px -594px;}
+.green62{ background-position:-60px -612px;}
+.green63{ background-position:-60px -630px;}
+.green64{ background-position:-60px -648px;}
+.green65{ background-position:-60px -666px;}
+.green66{ background-position:-60px -684px;}
+.green67{ background-position:-60px -702px;}
+.green68{ background-position:-60px -720px;}
+.green69{ background-position:-60px -738px;}
+.green6A{ background-position:-60px -756px;}
+.green6B{ background-position:-60px -774px;}
+.green6C{ background-position:-60px -792px;}
+.green6D{ background-position:-60px -810px;}
+.green6E{ background-position:-60px -828px;}
+.green6F{ background-position:-60px -846px;}
+.green70{ background-position:-60px -864px;}
+.green71{ background-position:-60px -882px;}
+.green72{ background-position:-60px -900px;}
+.green73{ background-position:-60px -918px;}
+.green74{ background-position:-60px -936px;}
+.green75{ background-position:-60px -954px;}
+.green76{ background-position:-60px -972px;}
+.green77{ background-position:-60px -990px;}
+.green78{ background-position:-60px -1008px;}
+.green79{ background-position:-60px -1026px;}
+.green7A{ background-position:-60px -1044px;}
+.green7B{ background-position:-60px -1062px;}
+.green7C{ background-position:-60px -1080px;}
+.green7D{ background-position:-60px -1098px;}
+.green7E{ background-position:-60px -1116px;}
+.green7F{ background-position:-60px -1134px;}
+
+.cyan20{ background-position:-72px 0px;}
+.cyan21{ background-position:-72px -18px;}
+.cyan22{ background-position:-72px -36px;}
+.cyan23{ background-position:-72px -54px;}
+.cyan24{ background-position:-72px -72px;}
+.cyan25{ background-position:-72px -90px;}
+.cyan26{ background-position:-72px -108px;}
+.cyan27{ background-position:-72px -126px;}
+.cyan28{ background-position:-72px -144px;}
+.cyan29{ background-position:-72px -162px;}
+.cyan2A{ background-position:-72px -180px;}
+.cyan2B{ background-position:-72px -198px;}
+.cyan2C{ background-position:-72px -216px;}
+.cyan2D{ background-position:-72px -234px;}
+.cyan2E{ background-position:-72px -252px;}
+.cyan2F{ background-position:-72px -270px;}
+.cyan30{ background-position:-72px -288px;}
+.cyan31{ background-position:-72px -306px;}
+.cyan32{ background-position:-72px -324px;}
+.cyan33{ background-position:-72px -342px;}
+.cyan34{ background-position:-72px -360px;}
+.cyan35{ background-position:-72px -378px;}
+.cyan36{ background-position:-72px -396px;}
+.cyan37{ background-position:-72px -414px;}
+.cyan38{ background-position:-72px -432px;}
+.cyan39{ background-position:-72px -450px;}
+.cyan3A{ background-position:-72px -468px;}
+.cyan3B{ background-position:-72px -486px;}
+.cyan3C{ background-position:-72px -504px;}
+.cyan3D{ background-position:-72px -522px;}
+.cyan3E{ background-position:-72px -540px;}
+.cyan3F{ background-position:-72px -558px;}
+.cyan60{ background-position:-72px -576px;}
+.cyan61{ background-position:-72px -594px;}
+.cyan62{ background-position:-72px -612px;}
+.cyan63{ background-position:-72px -630px;}
+.cyan64{ background-position:-72px -648px;}
+.cyan65{ background-position:-72px -666px;}
+.cyan66{ background-position:-72px -684px;}
+.cyan67{ background-position:-72px -702px;}
+.cyan68{ background-position:-72px -720px;}
+.cyan69{ background-position:-72px -738px;}
+.cyan6A{ background-position:-72px -756px;}
+.cyan6B{ background-position:-72px -774px;}
+.cyan6C{ background-position:-72px -792px;}
+.cyan6D{ background-position:-72px -810px;}
+.cyan6E{ background-position:-72px -828px;}
+.cyan6F{ background-position:-72px -846px;}
+.cyan70{ background-position:-72px -864px;}
+.cyan71{ background-position:-72px -882px;}
+.cyan72{ background-position:-72px -900px;}
+.cyan73{ background-position:-72px -918px;}
+.cyan74{ background-position:-72px -936px;}
+.cyan75{ background-position:-72px -954px;}
+.cyan76{ background-position:-72px -972px;}
+.cyan77{ background-position:-72px -990px;}
+.cyan78{ background-position:-72px -1008px;}
+.cyan79{ background-position:-72px -1026px;}
+.cyan7A{ background-position:-72px -1044px;}
+.cyan7B{ background-position:-72px -1062px;}
+.cyan7C{ background-position:-72px -1080px;}
+.cyan7D{ background-position:-72px -1098px;}
+.cyan7E{ background-position:-72px -1116px;}
+.cyan7F{ background-position:-72px -1134px;}
+
+.magenta20{ background-position:-84px 0px;}
+.magenta21{ background-position:-84px -18px;}
+.magenta22{ background-position:-84px -36px;}
+.magenta23{ background-position:-84px -54px;}
+.magenta24{ background-position:-84px -72px;}
+.magenta25{ background-position:-84px -90px;}
+.magenta26{ background-position:-84px -108px;}
+.magenta27{ background-position:-84px -126px;}
+.magenta28{ background-position:-84px -144px;}
+.magenta29{ background-position:-84px -162px;}
+.magenta2A{ background-position:-84px -180px;}
+.magenta2B{ background-position:-84px -198px;}
+.magenta2C{ background-position:-84px -216px;}
+.magenta2D{ background-position:-84px -234px;}
+.magenta2E{ background-position:-84px -252px;}
+.magenta2F{ background-position:-84px -270px;}
+.magenta30{ background-position:-84px -288px;}
+.magenta31{ background-position:-84px -306px;}
+.magenta32{ background-position:-84px -324px;}
+.magenta33{ background-position:-84px -342px;}
+.magenta34{ background-position:-84px -360px;}
+.magenta35{ background-position:-84px -378px;}
+.magenta36{ background-position:-84px -396px;}
+.magenta37{ background-position:-84px -414px;}
+.magenta38{ background-position:-84px -432px;}
+.magenta39{ background-position:-84px -450px;}
+.magenta3A{ background-position:-84px -468px;}
+.magenta3B{ background-position:-84px -486px;}
+.magenta3C{ background-position:-84px -504px;}
+.magenta3D{ background-position:-84px -522px;}
+.magenta3E{ background-position:-84px -540px;}
+.magenta3F{ background-position:-84px -558px;}
+.magenta60{ background-position:-84px -576px;}
+.magenta61{ background-position:-84px -594px;}
+.magenta62{ background-position:-84px -612px;}
+.magenta63{ background-position:-84px -630px;}
+.magenta64{ background-position:-84px -648px;}
+.magenta65{ background-position:-84px -666px;}
+.magenta66{ background-position:-84px -684px;}
+.magenta67{ background-position:-84px -702px;}
+.magenta68{ background-position:-84px -720px;}
+.magenta69{ background-position:-84px -738px;}
+.magenta6A{ background-position:-84px -756px;}
+.magenta6B{ background-position:-84px -774px;}
+.magenta6C{ background-position:-84px -792px;}
+.magenta6D{ background-position:-84px -810px;}
+.magenta6E{ background-position:-84px -828px;}
+.magenta6F{ background-position:-84px -846px;}
+.magenta70{ background-position:-84px -864px;}
+.magenta71{ background-position:-84px -882px;}
+.magenta72{ background-position:-84px -900px;}
+.magenta73{ background-position:-84px -918px;}
+.magenta74{ background-position:-84px -936px;}
+.magenta75{ background-position:-84px -954px;}
+.magenta76{ background-position:-84px -972px;}
+.magenta77{ background-position:-84px -990px;}
+.magenta78{ background-position:-84px -1008px;}
+.magenta79{ background-position:-84px -1026px;}
+.magenta7A{ background-position:-84px -1044px;}
+.magenta7B{ background-position:-84px -1062px;}
+.magenta7C{ background-position:-84px -1080px;}
+.magenta7D{ background-position:-84px -1098px;}
+.magenta7E{ background-position:-84px -1116px;}
+.magenta7F{ background-position:-84px -1134px;}
+
diff --git a/skins/jason/widgets/littlemenu.tmpl b/skins/jason/widgets/littlemenu.tmpl
new file mode 100644
index 0000000..58cc38f
--- /dev/null
+++ b/skins/jason/widgets/littlemenu.tmpl
@@ -0,0 +1,2 @@
+<!-- LittleMenuTemplate -->
+
diff --git a/skins/jason/widgets/message.tmpl b/skins/jason/widgets/message.tmpl
new file mode 100644
index 0000000..afffe69
--- /dev/null
+++ b/skins/jason/widgets/message.tmpl
@@ -0,0 +1,3 @@
+<!-- MessageTemplate -->
+<?% data.join('<br />') %?><br />
+
diff --git a/skins/lcars/images/vtxgfx.gif b/skins/lcars/images/vtxgfx.gif
new file mode 120000
index 0000000..484c3e7
--- /dev/null
+++ b/skins/lcars/images/vtxgfx.gif
@@ -0,0 +1 @@
+../../stone/images/vtxgfx.gif \ No newline at end of file
diff --git a/skins/lcars/vtxgfx.css b/skins/lcars/vtxgfx.css
new file mode 120000
index 0000000..a17deb6
--- /dev/null
+++ b/skins/lcars/vtxgfx.css
@@ -0,0 +1 @@
+../stone/vtxgfx.css \ No newline at end of file
diff --git a/skins/lcars/vtxpage.tmpl b/skins/lcars/vtxpage.tmpl
new file mode 120000
index 0000000..34c6245
--- /dev/null
+++ b/skins/lcars/vtxpage.tmpl
@@ -0,0 +1 @@
+../stone/vtxpage.tmpl \ No newline at end of file
diff --git a/skins/lcars_flat/vtxgfx.css b/skins/lcars_flat/vtxgfx.css
new file mode 120000
index 0000000..a17deb6
--- /dev/null
+++ b/skins/lcars_flat/vtxgfx.css
@@ -0,0 +1 @@
+../stone/vtxgfx.css \ No newline at end of file
diff --git a/skins/lcars_flat/vtxpage.tmpl b/skins/lcars_flat/vtxpage.tmpl
new file mode 120000
index 0000000..34c6245
--- /dev/null
+++ b/skins/lcars_flat/vtxpage.tmpl
@@ -0,0 +1 @@
+../stone/vtxpage.tmpl \ No newline at end of file
diff --git a/skins/snow/images/vtxgfx.gif b/skins/snow/images/vtxgfx.gif
new file mode 120000
index 0000000..484c3e7
--- /dev/null
+++ b/skins/snow/images/vtxgfx.gif
@@ -0,0 +1 @@
+../../stone/images/vtxgfx.gif \ No newline at end of file
diff --git a/skins/snow/vtxgfx.css b/skins/snow/vtxgfx.css
new file mode 120000
index 0000000..a17deb6
--- /dev/null
+++ b/skins/snow/vtxgfx.css
@@ -0,0 +1 @@
+../stone/vtxgfx.css \ No newline at end of file
diff --git a/skins/snow/vtxpage.tmpl b/skins/snow/vtxpage.tmpl
new file mode 120000
index 0000000..34c6245
--- /dev/null
+++ b/skins/snow/vtxpage.tmpl
@@ -0,0 +1 @@
+../stone/vtxpage.tmpl \ No newline at end of file
diff --git a/skins/snow_flat/vtxgfx.css b/skins/snow_flat/vtxgfx.css
new file mode 120000
index 0000000..a17deb6
--- /dev/null
+++ b/skins/snow_flat/vtxgfx.css
@@ -0,0 +1 @@
+../stone/vtxgfx.css \ No newline at end of file
diff --git a/skins/snow_flat/vtxpage.tmpl b/skins/snow_flat/vtxpage.tmpl
new file mode 120000
index 0000000..34c6245
--- /dev/null
+++ b/skins/snow_flat/vtxpage.tmpl
@@ -0,0 +1 @@
+../stone/vtxpage.tmpl \ No newline at end of file
diff --git a/skins/stone/header.inc b/skins/stone/header.inc
index 65dbbd5..984dce4 100644
--- a/skins/stone/header.inc
+++ b/skins/stone/header.inc
@@ -17,7 +17,7 @@
<?% IF allow( 'al' ) %?> <a accesskey="a" href="?cmd=al"><?% gettext("Autotimer") %?></a> &middot; <?% END %?>
<?% IF allow( 'tl' ) %?> <a accesskey="t" href="?cmd=tl"><?% gettext("Timers") %?></a> &middot; <?% END %?>
<?% IF allow( 'rl' ) %?> <a accesskey="r" href="?cmd=rl"><?% gettext("Recordings") %?></a> &middot; <?% END %?>
- <?% IF allow( 'vc' ) %?> <a accesskey="v" href="?cmd=vc"><?% gettext("Teletext") %?></a> &middot; <?% END %?>
+ <?% IF allow( 'vt' ) %?> <a accesskey="v" href="?cmd=vt"><?% gettext("Teletext") %?></a> &middot; <?% END %?>
<?% IF allow( 'ml' ) %?> <a accesskey="m" href="?cmd=ml"><?% gettext("Music") %?></a> &middot; <?% END %?>
<?% IF allow( 'mll' ) %?> <a accesskey="l" href="?cmd=mll"><?% gettext("Media list") %?></a> &middot; <?% END %?>
<?% IF allow( 'r' ) %?> <a accesskey="f" href="javascript:popupcmd('r',640,450,0)"><?% gettext("Remote") %?></a> &middot; <?% END %?>
diff --git a/skins/stone/images/vtxgfx.gif b/skins/stone/images/vtxgfx.gif
new file mode 100644
index 0000000..d9ed146
--- /dev/null
+++ b/skins/stone/images/vtxgfx.gif
Binary files differ
diff --git a/skins/stone/style.css b/skins/stone/style.css
index c05e72e..742242b 100644
--- a/skins/stone/style.css
+++ b/skins/stone/style.css
@@ -219,31 +219,6 @@ margin:0;
padding:0;
}
-p.vtx {
-font-size:12px;
-font-family:monospace;
-white-space:nowrap;
-}
-
-img.vtx {
-position:absolute;
-z-index:1;
-width:7px;
-height:15px;
-}
-
-a.vtx:link,a.vtx:visited,a.vtx:hover,a.vtx:active {
-text-decoration:none;
-}
-
-a.vtx:link,a.vtx:visited {
-color:#0F0;
-}
-
-a.vtx:hover,a.vtx:active {
-color:#FF0;
-}
-
img.progressleft {
background:#d2d2d2;
border-color:#000;
diff --git a/skins/stone/vtxgfx.css b/skins/stone/vtxgfx.css
new file mode 100644
index 0000000..4c1e661
--- /dev/null
+++ b/skins/stone/vtxgfx.css
@@ -0,0 +1,549 @@
+#vt p.vtx {
+font-size:15px;
+line-height:16px;
+font-family:monospace;
+white-space:nowrap;
+}
+
+#vt a.vtx:link,a.vtx:visited,a.vtx:hover,a.vtx:active {
+text-decoration:none;
+}
+
+#vt a.vtx:link,a.vtx:visited {
+color:#0F0;
+}
+
+#vt a.vtx:hover,a.vtx:active {
+color:#FF0;
+}
+
+.vtgfx {
+width:11px;
+height:16px;
+background-image:url(images/vtxgfx.gif);
+background-repeat:no-repeat;
+}
+
+.white20 { background-position: 0px 0px ;}
+.white21 { background-position: 0px -16px ;}
+.white22 { background-position: 0px -32px ;}
+.white23 { background-position: 0px -48px ;}
+.white24 { background-position: 0px -64px ;}
+.white25 { background-position: 0px -80px ;}
+.white26 { background-position: 0px -96px ;}
+.white27 { background-position: 0px -112px ;}
+.white28 { background-position: 0px -128px ;}
+.white29 { background-position: 0px -144px ;}
+.white2A { background-position: 0px -160px ;}
+.white2B { background-position: 0px -176px ;}
+.white2C { background-position: 0px -192px ;}
+.white2D { background-position: 0px -208px ;}
+.white2E { background-position: 0px -224px ;}
+.white2F { background-position: 0px -240px ;}
+.white30 { background-position: 0px -256px ;}
+.white31 { background-position: 0px -272px ;}
+.white32 { background-position: 0px -288px ;}
+.white33 { background-position: 0px -304px ;}
+.white34 { background-position: 0px -320px ;}
+.white35 { background-position: 0px -336px ;}
+.white36 { background-position: 0px -352px ;}
+.white37 { background-position: 0px -368px ;}
+.white38 { background-position: 0px -384px ;}
+.white39 { background-position: 0px -400px ;}
+.white3A { background-position: 0px -416px ;}
+.white3B { background-position: 0px -432px ;}
+.white3C { background-position: 0px -448px ;}
+.white3D { background-position: 0px -464px ;}
+.white3E { background-position: 0px -480px ;}
+.white3F { background-position: 0px -496px ;}
+.white60 { background-position: 0px -512px ;}
+.white61 { background-position: 0px -528px ;}
+.white62 { background-position: 0px -544px ;}
+.white63 { background-position: 0px -560px ;}
+.white64 { background-position: 0px -576px ;}
+.white65 { background-position: 0px -592px ;}
+.white66 { background-position: 0px -608px ;}
+.white67 { background-position: 0px -624px ;}
+.white68 { background-position: 0px -640px ;}
+.white69 { background-position: 0px -656px ;}
+.white6A { background-position: 0px -672px ;}
+.white6B { background-position: 0px -688px ;}
+.white6C { background-position: 0px -704px ;}
+.white6D { background-position: 0px -720px ;}
+.white6E { background-position: 0px -736px ;}
+.white6F { background-position: 0px -752px ;}
+.white70 { background-position: 0px -768px ;}
+.white71 { background-position: 0px -784px ;}
+.white72 { background-position: 0px -800px ;}
+.white73 { background-position: 0px -816px ;}
+.white74 { background-position: 0px -832px ;}
+.white75 { background-position: 0px -848px ;}
+.white76 { background-position: 0px -864px ;}
+.white77 { background-position: 0px -880px ;}
+.white78 { background-position: 0px -896px ;}
+.white79 { background-position: 0px -912px ;}
+.white7A { background-position: 0px -928px ;}
+.white7B { background-position: 0px -944px ;}
+.white7C { background-position: 0px -960px ;}
+.white7D { background-position: 0px -976px ;}
+.white7E { background-position: 0px -992px ;}
+.white7F { background-position: 0px -1008px ;}
+
+.black20 { background-position: -11px 0px ;}
+.black21 { background-position: -11px -16px ;}
+.black22 { background-position: -11px -32px ;}
+.black23 { background-position: -11px -48px ;}
+.black24 { background-position: -11px -64px ;}
+.black25 { background-position: -11px -80px ;}
+.black26 { background-position: -11px -96px ;}
+.black27 { background-position: -11px -112px ;}
+.black28 { background-position: -11px -128px ;}
+.black29 { background-position: -11px -144px ;}
+.black2A { background-position: -11px -160px ;}
+.black2B { background-position: -11px -176px ;}
+.black2C { background-position: -11px -192px ;}
+.black2D { background-position: -11px -208px ;}
+.black2E { background-position: -11px -224px ;}
+.black2F { background-position: -11px -240px ;}
+.black30 { background-position: -11px -256px ;}
+.black31 { background-position: -11px -272px ;}
+.black32 { background-position: -11px -288px ;}
+.black33 { background-position: -11px -304px ;}
+.black34 { background-position: -11px -320px ;}
+.black35 { background-position: -11px -336px ;}
+.black36 { background-position: -11px -352px ;}
+.black37 { background-position: -11px -368px ;}
+.black38 { background-position: -11px -384px ;}
+.black39 { background-position: -11px -400px ;}
+.black3A { background-position: -11px -416px ;}
+.black3B { background-position: -11px -432px ;}
+.black3C { background-position: -11px -448px ;}
+.black3D { background-position: -11px -464px ;}
+.black3E { background-position: -11px -480px ;}
+.black3F { background-position: -11px -496px ;}
+.black60 { background-position: -11px -512px ;}
+.black61 { background-position: -11px -528px ;}
+.black62 { background-position: -11px -544px ;}
+.black63 { background-position: -11px -560px ;}
+.black64 { background-position: -11px -576px ;}
+.black65 { background-position: -11px -592px ;}
+.black66 { background-position: -11px -608px ;}
+.black67 { background-position: -11px -624px ;}
+.black68 { background-position: -11px -640px ;}
+.black69 { background-position: -11px -656px ;}
+.black6A { background-position: -11px -672px ;}
+.black6B { background-position: -11px -688px ;}
+.black6C { background-position: -11px -704px ;}
+.black6D { background-position: -11px -720px ;}
+.black6E { background-position: -11px -736px ;}
+.black6F { background-position: -11px -752px ;}
+.black70 { background-position: -11px -768px ;}
+.black71 { background-position: -11px -784px ;}
+.black72 { background-position: -11px -800px ;}
+.black73 { background-position: -11px -816px ;}
+.black74 { background-position: -11px -832px ;}
+.black75 { background-position: -11px -848px ;}
+.black76 { background-position: -11px -864px ;}
+.black77 { background-position: -11px -880px ;}
+.black78 { background-position: -11px -896px ;}
+.black79 { background-position: -11px -912px ;}
+.black7A { background-position: -11px -928px ;}
+.black7B { background-position: -11px -944px ;}
+.black7C { background-position: -11px -960px ;}
+.black7D { background-position: -11px -976px ;}
+.black7E { background-position: -11px -992px ;}
+.black7F { background-position: -11px -1008px ;}
+
+.red20 { background-position: -22px 0px ;}
+.red21 { background-position: -22px -16px ;}
+.red22 { background-position: -22px -32px ;}
+.red23 { background-position: -22px -48px ;}
+.red24 { background-position: -22px -64px ;}
+.red25 { background-position: -22px -80px ;}
+.red26 { background-position: -22px -96px ;}
+.red27 { background-position: -22px -112px ;}
+.red28 { background-position: -22px -128px ;}
+.red29 { background-position: -22px -144px ;}
+.red2A { background-position: -22px -160px ;}
+.red2B { background-position: -22px -176px ;}
+.red2C { background-position: -22px -192px ;}
+.red2D { background-position: -22px -208px ;}
+.red2E { background-position: -22px -224px ;}
+.red2F { background-position: -22px -240px ;}
+.red30 { background-position: -22px -256px ;}
+.red31 { background-position: -22px -272px ;}
+.red32 { background-position: -22px -288px ;}
+.red33 { background-position: -22px -304px ;}
+.red34 { background-position: -22px -320px ;}
+.red35 { background-position: -22px -336px ;}
+.red36 { background-position: -22px -352px ;}
+.red37 { background-position: -22px -368px ;}
+.red38 { background-position: -22px -384px ;}
+.red39 { background-position: -22px -400px ;}
+.red3A { background-position: -22px -416px ;}
+.red3B { background-position: -22px -432px ;}
+.red3C { background-position: -22px -448px ;}
+.red3D { background-position: -22px -464px ;}
+.red3E { background-position: -22px -480px ;}
+.red3F { background-position: -22px -496px ;}
+.red60 { background-position: -22px -512px ;}
+.red61 { background-position: -22px -528px ;}
+.red62 { background-position: -22px -544px ;}
+.red63 { background-position: -22px -560px ;}
+.red64 { background-position: -22px -576px ;}
+.red65 { background-position: -22px -592px ;}
+.red66 { background-position: -22px -608px ;}
+.red67 { background-position: -22px -624px ;}
+.red68 { background-position: -22px -640px ;}
+.red69 { background-position: -22px -656px ;}
+.red6A { background-position: -22px -672px ;}
+.red6B { background-position: -22px -688px ;}
+.red6C { background-position: -22px -704px ;}
+.red6D { background-position: -22px -720px ;}
+.red6E { background-position: -22px -736px ;}
+.red6F { background-position: -22px -752px ;}
+.red70 { background-position: -22px -768px ;}
+.red71 { background-position: -22px -784px ;}
+.red72 { background-position: -22px -800px ;}
+.red73 { background-position: -22px -816px ;}
+.red74 { background-position: -22px -832px ;}
+.red75 { background-position: -22px -848px ;}
+.red76 { background-position: -22px -864px ;}
+.red77 { background-position: -22px -880px ;}
+.red78 { background-position: -22px -896px ;}
+.red79 { background-position: -22px -912px ;}
+.red7A { background-position: -22px -928px ;}
+.red7B { background-position: -22px -944px ;}
+.red7C { background-position: -22px -960px ;}
+.red7D { background-position: -22px -976px ;}
+.red7E { background-position: -22px -992px ;}
+.red7F { background-position: -22px -1008px ;}
+
+.blue20 { background-position: -33px 0px ;}
+.blue21 { background-position: -33px -16px ;}
+.blue22 { background-position: -33px -32px ;}
+.blue23 { background-position: -33px -48px ;}
+.blue24 { background-position: -33px -64px ;}
+.blue25 { background-position: -33px -80px ;}
+.blue26 { background-position: -33px -96px ;}
+.blue27 { background-position: -33px -112px ;}
+.blue28 { background-position: -33px -128px ;}
+.blue29 { background-position: -33px -144px ;}
+.blue2A { background-position: -33px -160px ;}
+.blue2B { background-position: -33px -176px ;}
+.blue2C { background-position: -33px -192px ;}
+.blue2D { background-position: -33px -208px ;}
+.blue2E { background-position: -33px -224px ;}
+.blue2F { background-position: -33px -240px ;}
+.blue30 { background-position: -33px -256px ;}
+.blue31 { background-position: -33px -272px ;}
+.blue32 { background-position: -33px -288px ;}
+.blue33 { background-position: -33px -304px ;}
+.blue34 { background-position: -33px -320px ;}
+.blue35 { background-position: -33px -336px ;}
+.blue36 { background-position: -33px -352px ;}
+.blue37 { background-position: -33px -368px ;}
+.blue38 { background-position: -33px -384px ;}
+.blue39 { background-position: -33px -400px ;}
+.blue3A { background-position: -33px -416px ;}
+.blue3B { background-position: -33px -432px ;}
+.blue3C { background-position: -33px -448px ;}
+.blue3D { background-position: -33px -464px ;}
+.blue3E { background-position: -33px -480px ;}
+.blue3F { background-position: -33px -496px ;}
+.blue60 { background-position: -33px -512px ;}
+.blue61 { background-position: -33px -528px ;}
+.blue62 { background-position: -33px -544px ;}
+.blue63 { background-position: -33px -560px ;}
+.blue64 { background-position: -33px -576px ;}
+.blue65 { background-position: -33px -592px ;}
+.blue66 { background-position: -33px -608px ;}
+.blue67 { background-position: -33px -624px ;}
+.blue68 { background-position: -33px -640px ;}
+.blue69 { background-position: -33px -656px ;}
+.blue6A { background-position: -33px -672px ;}
+.blue6B { background-position: -33px -688px ;}
+.blue6C { background-position: -33px -704px ;}
+.blue6D { background-position: -33px -720px ;}
+.blue6E { background-position: -33px -736px ;}
+.blue6F { background-position: -33px -752px ;}
+.blue70 { background-position: -33px -768px ;}
+.blue71 { background-position: -33px -784px ;}
+.blue72 { background-position: -33px -800px ;}
+.blue73 { background-position: -33px -816px ;}
+.blue74 { background-position: -33px -832px ;}
+.blue75 { background-position: -33px -848px ;}
+.blue76 { background-position: -33px -864px ;}
+.blue77 { background-position: -33px -880px ;}
+.blue78 { background-position: -33px -896px ;}
+.blue79 { background-position: -33px -912px ;}
+.blue7A { background-position: -33px -928px ;}
+.blue7B { background-position: -33px -944px ;}
+.blue7C { background-position: -33px -960px ;}
+.blue7D { background-position: -33px -976px ;}
+.blue7E { background-position: -33px -992px ;}
+.blue7F { background-position: -33px -1008px ;}
+
+.yellow20 { background-position: -44px 0px ;}
+.yellow21 { background-position: -44px -16px ;}
+.yellow22 { background-position: -44px -32px ;}
+.yellow23 { background-position: -44px -48px ;}
+.yellow24 { background-position: -44px -64px ;}
+.yellow25 { background-position: -44px -80px ;}
+.yellow26 { background-position: -44px -96px ;}
+.yellow27 { background-position: -44px -112px ;}
+.yellow28 { background-position: -44px -128px ;}
+.yellow29 { background-position: -44px -144px ;}
+.yellow2A { background-position: -44px -160px ;}
+.yellow2B { background-position: -44px -176px ;}
+.yellow2C { background-position: -44px -192px ;}
+.yellow2D { background-position: -44px -208px ;}
+.yellow2E { background-position: -44px -224px ;}
+.yellow2F { background-position: -44px -240px ;}
+.yellow30 { background-position: -44px -256px ;}
+.yellow31 { background-position: -44px -272px ;}
+.yellow32 { background-position: -44px -288px ;}
+.yellow33 { background-position: -44px -304px ;}
+.yellow34 { background-position: -44px -320px ;}
+.yellow35 { background-position: -44px -336px ;}
+.yellow36 { background-position: -44px -352px ;}
+.yellow37 { background-position: -44px -368px ;}
+.yellow38 { background-position: -44px -384px ;}
+.yellow39 { background-position: -44px -400px ;}
+.yellow3A { background-position: -44px -416px ;}
+.yellow3B { background-position: -44px -432px ;}
+.yellow3C { background-position: -44px -448px ;}
+.yellow3D { background-position: -44px -464px ;}
+.yellow3E { background-position: -44px -480px ;}
+.yellow3F { background-position: -44px -496px ;}
+.yellow60 { background-position: -44px -512px ;}
+.yellow61 { background-position: -44px -528px ;}
+.yellow62 { background-position: -44px -544px ;}
+.yellow63 { background-position: -44px -560px ;}
+.yellow64 { background-position: -44px -576px ;}
+.yellow65 { background-position: -44px -592px ;}
+.yellow66 { background-position: -44px -608px ;}
+.yellow67 { background-position: -44px -624px ;}
+.yellow68 { background-position: -44px -640px ;}
+.yellow69 { background-position: -44px -656px ;}
+.yellow6A { background-position: -44px -672px ;}
+.yellow6B { background-position: -44px -688px ;}
+.yellow6C { background-position: -44px -704px ;}
+.yellow6D { background-position: -44px -720px ;}
+.yellow6E { background-position: -44px -736px ;}
+.yellow6F { background-position: -44px -752px ;}
+.yellow70 { background-position: -44px -768px ;}
+.yellow71 { background-position: -44px -784px ;}
+.yellow72 { background-position: -44px -800px ;}
+.yellow73 { background-position: -44px -816px ;}
+.yellow74 { background-position: -44px -832px ;}
+.yellow75 { background-position: -44px -848px ;}
+.yellow76 { background-position: -44px -864px ;}
+.yellow77 { background-position: -44px -880px ;}
+.yellow78 { background-position: -44px -896px ;}
+.yellow79 { background-position: -44px -912px ;}
+.yellow7A { background-position: -44px -928px ;}
+.yellow7B { background-position: -44px -944px ;}
+.yellow7C { background-position: -44px -960px ;}
+.yellow7D { background-position: -44px -976px ;}
+.yellow7E { background-position: -44px -992px ;}
+.yellow7F { background-position: -44px -1008px ;}
+
+.green20 { background-position: -55px 0px ;}
+.green21 { background-position: -55px -16px ;}
+.green22 { background-position: -55px -32px ;}
+.green23 { background-position: -55px -48px ;}
+.green24 { background-position: -55px -64px ;}
+.green25 { background-position: -55px -80px ;}
+.green26 { background-position: -55px -96px ;}
+.green27 { background-position: -55px -112px ;}
+.green28 { background-position: -55px -128px ;}
+.green29 { background-position: -55px -144px ;}
+.green2A { background-position: -55px -160px ;}
+.green2B { background-position: -55px -176px ;}
+.green2C { background-position: -55px -192px ;}
+.green2D { background-position: -55px -208px ;}
+.green2E { background-position: -55px -224px ;}
+.green2F { background-position: -55px -240px ;}
+.green30 { background-position: -55px -256px ;}
+.green31 { background-position: -55px -272px ;}
+.green32 { background-position: -55px -288px ;}
+.green33 { background-position: -55px -304px ;}
+.green34 { background-position: -55px -320px ;}
+.green35 { background-position: -55px -336px ;}
+.green36 { background-position: -55px -352px ;}
+.green37 { background-position: -55px -368px ;}
+.green38 { background-position: -55px -384px ;}
+.green39 { background-position: -55px -400px ;}
+.green3A { background-position: -55px -416px ;}
+.green3B { background-position: -55px -432px ;}
+.green3C { background-position: -55px -448px ;}
+.green3D { background-position: -55px -464px ;}
+.green3E { background-position: -55px -480px ;}
+.green3F { background-position: -55px -496px ;}
+.green60 { background-position: -55px -512px ;}
+.green61 { background-position: -55px -528px ;}
+.green62 { background-position: -55px -544px ;}
+.green63 { background-position: -55px -560px ;}
+.green64 { background-position: -55px -576px ;}
+.green65 { background-position: -55px -592px ;}
+.green66 { background-position: -55px -608px ;}
+.green67 { background-position: -55px -624px ;}
+.green68 { background-position: -55px -640px ;}
+.green69 { background-position: -55px -656px ;}
+.green6A { background-position: -55px -672px ;}
+.green6B { background-position: -55px -688px ;}
+.green6C { background-position: -55px -704px ;}
+.green6D { background-position: -55px -720px ;}
+.green6E { background-position: -55px -736px ;}
+.green6F { background-position: -55px -752px ;}
+.green70 { background-position: -55px -768px ;}
+.green71 { background-position: -55px -784px ;}
+.green72 { background-position: -55px -800px ;}
+.green73 { background-position: -55px -816px ;}
+.green74 { background-position: -55px -832px ;}
+.green75 { background-position: -55px -848px ;}
+.green76 { background-position: -55px -864px ;}
+.green77 { background-position: -55px -880px ;}
+.green78 { background-position: -55px -896px ;}
+.green79 { background-position: -55px -912px ;}
+.green7A { background-position: -55px -928px ;}
+.green7B { background-position: -55px -944px ;}
+.green7C { background-position: -55px -960px ;}
+.green7D { background-position: -55px -976px ;}
+.green7E { background-position: -55px -992px ;}
+.green7F { background-position: -55px -1008px ;}
+
+.cyan20 { background-position: -66px 0px ;}
+.cyan21 { background-position: -66px -16px ;}
+.cyan22 { background-position: -66px -32px ;}
+.cyan23 { background-position: -66px -48px ;}
+.cyan24 { background-position: -66px -64px ;}
+.cyan25 { background-position: -66px -80px ;}
+.cyan26 { background-position: -66px -96px ;}
+.cyan27 { background-position: -66px -112px ;}
+.cyan28 { background-position: -66px -128px ;}
+.cyan29 { background-position: -66px -144px ;}
+.cyan2A { background-position: -66px -160px ;}
+.cyan2B { background-position: -66px -176px ;}
+.cyan2C { background-position: -66px -192px ;}
+.cyan2D { background-position: -66px -208px ;}
+.cyan2E { background-position: -66px -224px ;}
+.cyan2F { background-position: -66px -240px ;}
+.cyan30 { background-position: -66px -256px ;}
+.cyan31 { background-position: -66px -272px ;}
+.cyan32 { background-position: -66px -288px ;}
+.cyan33 { background-position: -66px -304px ;}
+.cyan34 { background-position: -66px -320px ;}
+.cyan35 { background-position: -66px -336px ;}
+.cyan36 { background-position: -66px -352px ;}
+.cyan37 { background-position: -66px -368px ;}
+.cyan38 { background-position: -66px -384px ;}
+.cyan39 { background-position: -66px -400px ;}
+.cyan3A { background-position: -66px -416px ;}
+.cyan3B { background-position: -66px -432px ;}
+.cyan3C { background-position: -66px -448px ;}
+.cyan3D { background-position: -66px -464px ;}
+.cyan3E { background-position: -66px -480px ;}
+.cyan3F { background-position: -66px -496px ;}
+.cyan60 { background-position: -66px -512px ;}
+.cyan61 { background-position: -66px -528px ;}
+.cyan62 { background-position: -66px -544px ;}
+.cyan63 { background-position: -66px -560px ;}
+.cyan64 { background-position: -66px -576px ;}
+.cyan65 { background-position: -66px -592px ;}
+.cyan66 { background-position: -66px -608px ;}
+.cyan67 { background-position: -66px -624px ;}
+.cyan68 { background-position: -66px -640px ;}
+.cyan69 { background-position: -66px -656px ;}
+.cyan6A { background-position: -66px -672px ;}
+.cyan6B { background-position: -66px -688px ;}
+.cyan6C { background-position: -66px -704px ;}
+.cyan6D { background-position: -66px -720px ;}
+.cyan6E { background-position: -66px -736px ;}
+.cyan6F { background-position: -66px -752px ;}
+.cyan70 { background-position: -66px -768px ;}
+.cyan71 { background-position: -66px -784px ;}
+.cyan72 { background-position: -66px -800px ;}
+.cyan73 { background-position: -66px -816px ;}
+.cyan74 { background-position: -66px -832px ;}
+.cyan75 { background-position: -66px -848px ;}
+.cyan76 { background-position: -66px -864px ;}
+.cyan77 { background-position: -66px -880px ;}
+.cyan78 { background-position: -66px -896px ;}
+.cyan79 { background-position: -66px -912px ;}
+.cyan7A { background-position: -66px -928px ;}
+.cyan7B { background-position: -66px -944px ;}
+.cyan7C { background-position: -66px -960px ;}
+.cyan7D { background-position: -66px -976px ;}
+.cyan7E { background-position: -66px -992px ;}
+.cyan7F { background-position: -66px -1008px ;}
+
+.magenta20 { background-position: -77px 0px ;}
+.magenta21 { background-position: -77px -16px ;}
+.magenta22 { background-position: -77px -32px ;}
+.magenta23 { background-position: -77px -48px ;}
+.magenta24 { background-position: -77px -64px ;}
+.magenta25 { background-position: -77px -80px ;}
+.magenta26 { background-position: -77px -96px ;}
+.magenta27 { background-position: -77px -112px ;}
+.magenta28 { background-position: -77px -128px ;}
+.magenta29 { background-position: -77px -144px ;}
+.magenta2A { background-position: -77px -160px ;}
+.magenta2B { background-position: -77px -176px ;}
+.magenta2C { background-position: -77px -192px ;}
+.magenta2D { background-position: -77px -208px ;}
+.magenta2E { background-position: -77px -224px ;}
+.magenta2F { background-position: -77px -240px ;}
+.magenta30 { background-position: -77px -256px ;}
+.magenta31 { background-position: -77px -272px ;}
+.magenta32 { background-position: -77px -288px ;}
+.magenta33 { background-position: -77px -304px ;}
+.magenta34 { background-position: -77px -320px ;}
+.magenta35 { background-position: -77px -336px ;}
+.magenta36 { background-position: -77px -352px ;}
+.magenta37 { background-position: -77px -368px ;}
+.magenta38 { background-position: -77px -384px ;}
+.magenta39 { background-position: -77px -400px ;}
+.magenta3A { background-position: -77px -416px ;}
+.magenta3B { background-position: -77px -432px ;}
+.magenta3C { background-position: -77px -448px ;}
+.magenta3D { background-position: -77px -464px ;}
+.magenta3E { background-position: -77px -480px ;}
+.magenta3F { background-position: -77px -496px ;}
+.magenta60 { background-position: -77px -512px ;}
+.magenta61 { background-position: -77px -528px ;}
+.magenta62 { background-position: -77px -544px ;}
+.magenta63 { background-position: -77px -560px ;}
+.magenta64 { background-position: -77px -576px ;}
+.magenta65 { background-position: -77px -592px ;}
+.magenta66 { background-position: -77px -608px ;}
+.magenta67 { background-position: -77px -624px ;}
+.magenta68 { background-position: -77px -640px ;}
+.magenta69 { background-position: -77px -656px ;}
+.magenta6A { background-position: -77px -672px ;}
+.magenta6B { background-position: -77px -688px ;}
+.magenta6C { background-position: -77px -704px ;}
+.magenta6D { background-position: -77px -720px ;}
+.magenta6E { background-position: -77px -736px ;}
+.magenta6F { background-position: -77px -752px ;}
+.magenta70 { background-position: -77px -768px ;}
+.magenta71 { background-position: -77px -784px ;}
+.magenta72 { background-position: -77px -800px ;}
+.magenta73 { background-position: -77px -816px ;}
+.magenta74 { background-position: -77px -832px ;}
+.magenta75 { background-position: -77px -848px ;}
+.magenta76 { background-position: -77px -864px ;}
+.magenta77 { background-position: -77px -880px ;}
+.magenta78 { background-position: -77px -896px ;}
+.magenta79 { background-position: -77px -912px ;}
+.magenta7A { background-position: -77px -928px ;}
+.magenta7B { background-position: -77px -944px ;}
+.magenta7C { background-position: -77px -960px ;}
+.magenta7D { background-position: -77px -976px ;}
+.magenta7E { background-position: -77px -992px ;}
+.magenta7F { background-position: -77px -1008px ;}
+
+
+
+
diff --git a/skins/stone/vtxpage.tmpl b/skins/stone/vtxpage.tmpl
new file mode 100644
index 0000000..0ca3d9f
--- /dev/null
+++ b/skins/stone/vtxpage.tmpl
@@ -0,0 +1,106 @@
+<!-- VTXTemplate -->
+<?% IF ! global.bodyinc.defined;global.bodyinc = 1 %?>
+<body class="frame">
+<!-- ###### Seite ###### -->
+<?% IF data.0 >= 1 %?>
+<?% channel = data.0.3 %?>
+<?% url = "?cmd=vt&amp;channel=${channel}" %?>
+<?% END %?>
+<div id="sidebar">
+ <table summary="">
+ <tr><td class="sidehead"><?% gettext("Selection",20) %?></td></tr>
+ <tr>
+ <td class="sidetext">
+ <form action="">
+ <select size="5" name='chan' onchange="di('?cmd=vt&amp;channel=',this.form.chan.options[this.form.chan.options.selectedIndex].value)">
+ <?% FOREACH ch = param.channels %?>
+ <option value="<?% ch.1 %?>" <?% 'selected="selected"' IF channel == ch.1 %?>><?% ch.0 %?></option>
+ <?% END %?>
+ </select>
+ </form>
+ </td>
+ </tr>
+ <tr>
+ <td class="sidebottom"></td>
+ </tr>
+ </table>
+<?% IF channel %?>
+ <table summary="">
+ <tr><td class="sidehead"><?% gettext("Page",20) %?></td></tr>
+ <tr>
+ <td class="sidetext">
+ <form method="post" action="<?% url %?>">
+ <input type="text" name="page" size="18" value="<?% param.page %?>" />
+ </form>
+ </td>
+ </tr>
+ <tr>
+ <td class="sidetext">
+ <a href="<?% url %?>">
+ <img src="images/home.<?% global.imagetyp %?>" alt="" title="<?% gettext('First page') %?>" />
+ </a>&nbsp;<a href="<?% url %?>">
+ <?% gettext('First page',20) %?>
+ </a>
+ <br />
+<?% BLOCK VTXItem %?>
+ <?% IF page %?><a href="<?% url %?>&amp;page=<?% page %?>"><?% END %?>
+ <img src="images/<?% image %?>.<?% global.imagetyp %?>" alt="" title="<?% label %?>" />
+ <?% "</a>" IF page %?>
+ &nbsp;
+ <?% IF page %?><a href="<?% url %?>&amp;page=<?% page %?>"><?% END %?>
+ <?% IF !page %?><font class="deactive"><?% END %?>
+ <?% label %?>
+ <?% IF !page %?></font><?% END %?>
+ <?% "</a>" IF page %?>
+ <br />
+<?% END %?>
+
+ <?% PROCESS VTXItem page=data.0.4 image='back' label=gettext('Previous page',20) %?>
+ <?% PROCESS VTXItem page=data.0.5 image='forward' label=gettext('Next page',20) %?>
+ </td>
+ </tr>
+ <tr>
+ <td class="sidebottom"></td>
+ </tr>
+ </table>
+ <table summary="">
+ <tr><td class="sidehead"><?% gettext("Search",20) %?></td></tr>
+ <tr>
+ <td class="sidetext">
+ <form method="post" action="?cmd=vs&amp;channel=${channel}">
+ <input type="text" name="data" size="18" value="" />
+ </form>
+ </td>
+ </tr>
+ <tr>
+ <td class="sidebottom"></td>
+ </tr>
+ </table>
+<?% END %?>
+ <p id="sidefooter">&nbsp;</p>
+</div>
+<?% INCLUDE header.inc %?>
+<div id="body">
+<h1><?% gettext("Teletext") %?></h1>
+<?% END %?>
+ <?% FOREACH zeile = data %?>
+ <?% id=zeile.0;page=zeile.1;subpage=zeile.2;channels=zeile.3;prev=zeile.4;next=zeile.5;mtime=zeile.6 %?>
+<div class="areabegin" id="<?% id %?>">
+ <table class="areatable" summary="">
+ <tr><td class="areahead"><?% gettext("Page") %?>&nbsp;<?% page; IF subpage > 0 %?>/<?% subpage; END %?></td></tr>
+ <tr>
+ <td class="areatext" align="center">
+ <table summary="" align="center">
+ <tr>
+ <td id="vt">
+ <?% zeile.7 %?>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr><td class="areabottom"></td></tr>
+ </table>
+</div>
+ <?% END %?>
+
diff --git a/skins/stone/widgets/start.tmpl b/skins/stone/widgets/start.tmpl
index 9724ad8..718b7e8 100644
--- a/skins/stone/widgets/start.tmpl
+++ b/skins/stone/widgets/start.tmpl
@@ -7,6 +7,9 @@
<head>
<link rel="stylesheet" type="text/css" href="style.css" media="all" />
<link rel="stylesheet" type="text/css" href="print.css" media="print" />
+<?% IF call == 'vtxpage' %?>
+ <link rel="stylesheet" type="text/css" href="vtxgfx.css" media="all" />
+<?% END %?>
<link rel="shortcut icon" href="favicon.ico" />
<title><?% IF param.title.defined;param.title;ELSE %?>XXV<?% END %?></title>
<meta name="generator" content="XXV System - Version: <?% version %?>" />
diff --git a/skins/stone/widgets/vtx.tmpl b/skins/stone/widgets/vtx.tmpl
deleted file mode 100644
index 2aa3c48..0000000
--- a/skins/stone/widgets/vtx.tmpl
+++ /dev/null
@@ -1,95 +0,0 @@
-<!-- VTXTemplate -->
-<?% IF ! global.bodyinc.defined;global.bodyinc = 1 %?>
-<body class="frame">
-<!-- ###### Seite ###### -->
-<?% url = "?cmd=vt&amp;data=" %?>
-<div id="sidebar">
- <table summary="">
- <tr><td class="sidehead"><?% gettext("Selection",20) %?></td></tr>
- <tr>
- <td class="sidetext">
- <form action="">
- <select size="5" name='chan' onchange="di('?cmd=vc&amp;data=',this.form.chan.options[this.form.chan.options.selectedIndex].value)">
- <?% FOREACH ch = param.channels %?>
- <option value="<?% ch.1 %?>" <?% 'selected="selected"' IF param.channel == ch.1 %?>><?% ch.0 %?></option>
- <?% END %?>
- </select>
- </form>
- </td>
- </tr>
- <tr>
- <td class="sidebottom"></td>
- </tr>
- </table>
- <table summary="">
- <tr><td class="sidehead"><?% gettext("Page",20) %?></td></tr>
- <tr>
- <td class="sidetext">
- <form method="post" action="?cmd=vt">
- <input type="text" name="data" size="18" value="<?% param.page %?>" />
- </form>
- </td>
- </tr>
-<?% BLOCK VTXItem %?>
- <?% IF page != 0 %?><a href="<?% url %?><?% page %?>"><?% END %?>
- <img src="images/<?% image %?>.<?% global.imagetyp %?>" alt="" title="<?% label %?>" />
- <?% "</a>" IF page != 0 %?>
- &nbsp;
- <?% IF page != 0 %?><a href="<?% url %?><?% page %?>"><?% END %?>
- <?% IF page == 0 %?><font class="deactive"><?% END %?>
- <?% label %?>
- <?% IF page == 0 %?></font><?% END %?>
- <?% "</a>" IF page != 0 %?>
- <br />
-<?% END %?>
- <tr>
- <td class="sidetext">
- <?% PROCESS VTXItem page=param.toppage image='home' label=gettext('First page',20) %?>
- <?% PROCESS VTXItem page=param.page_prev image='back' label=gettext('Previous page',20) %?>
- <?% PROCESS VTXItem page=param.page_next image='forward' label=gettext('Next page',20) %?>
- <?% PROCESS VTXItem page=param.subpage_prev image='back' label=gettext('Prior sub page',20) %?>
- <?% PROCESS VTXItem page=param.subpage_next image='forward' label=gettext('Next sub page',20) %?>
- </td>
- </tr>
- <tr>
- <td class="sidebottom"></td>
- </tr>
- </table>
- <table summary="">
- <tr><td class="sidehead"><?% gettext("Search",20) %?></td></tr>
- <tr>
- <td class="sidetext">
- <form method="post" action="?cmd=vs">
- <input type="text" name="data" size="18" value="" />
- </form>
- </td>
- </tr>
- <tr>
- <td class="sidebottom"></td>
- </tr>
- </table>
- <p id="sidefooter">&nbsp;</p>
-</div>
-<?% INCLUDE header.inc %?>
-<div id="body">
-<h1><?% gettext("Teletext") %?></h1>
-<?% END %?>
-<div class="areabegin">
- <table class="areatable" summary="">
- <tr><td class="areahead"><?% gettext("Page") %?>&nbsp;<?% param.page; pages = cgi.param('data').split('_'); IF pages.size > 1 && pages.last > 0 %?>/<?% pages.last; END %?></td></tr>
- <tr>
- <td class="areatext" align="center">
- <table summary="" align="center">
- <tr>
- <td>
- <?% FOREACH l = data %?>
- <?% l %?>
- <?% END %?>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr><td class="areabottom"></td></tr>
-</table>
-</div>
diff --git a/skins/stone_flat/header.inc b/skins/stone_flat/header.inc
index 65dbbd5..984dce4 100644
--- a/skins/stone_flat/header.inc
+++ b/skins/stone_flat/header.inc
@@ -17,7 +17,7 @@
<?% IF allow( 'al' ) %?> <a accesskey="a" href="?cmd=al"><?% gettext("Autotimer") %?></a> &middot; <?% END %?>
<?% IF allow( 'tl' ) %?> <a accesskey="t" href="?cmd=tl"><?% gettext("Timers") %?></a> &middot; <?% END %?>
<?% IF allow( 'rl' ) %?> <a accesskey="r" href="?cmd=rl"><?% gettext("Recordings") %?></a> &middot; <?% END %?>
- <?% IF allow( 'vc' ) %?> <a accesskey="v" href="?cmd=vc"><?% gettext("Teletext") %?></a> &middot; <?% END %?>
+ <?% IF allow( 'vt' ) %?> <a accesskey="v" href="?cmd=vt"><?% gettext("Teletext") %?></a> &middot; <?% END %?>
<?% IF allow( 'ml' ) %?> <a accesskey="m" href="?cmd=ml"><?% gettext("Music") %?></a> &middot; <?% END %?>
<?% IF allow( 'mll' ) %?> <a accesskey="l" href="?cmd=mll"><?% gettext("Media list") %?></a> &middot; <?% END %?>
<?% IF allow( 'r' ) %?> <a accesskey="f" href="javascript:popupcmd('r',640,450,0)"><?% gettext("Remote") %?></a> &middot; <?% END %?>
diff --git a/skins/xstyle/images/vtxgfx.gif b/skins/xstyle/images/vtxgfx.gif
new file mode 100644
index 0000000..d9ed146
--- /dev/null
+++ b/skins/xstyle/images/vtxgfx.gif
Binary files differ
diff --git a/skins/xstyle/style/style.css b/skins/xstyle/style/style.css
index f28f7bc..962e67a 100644
--- a/skins/xstyle/style/style.css
+++ b/skins/xstyle/style/style.css
@@ -88,27 +88,6 @@ input[type~=button],input[type~=submit], input[type~=reset], input[type~=radio],
color:#ff0000;
}
-
-/* VTX */
-p.vtx{
- font-size:16px;
- font-family:monospace;
- white-space:nowrap;
-}
-
-img.vtx{
- position:absolute;
- z-index: 1;
- width: 10px;
- height: 19px;
-}
-
-/* VTX Hyperlinks */
-a.vtx:link, a.vtx:visited, a.vtx:hover, a.vtx:active{
- text-decoration:none;
- color:#00FF00;
-}
-
.footer {
background: buttonface;
padding: 0px;
diff --git a/skins/xstyle/style/vtxgfx.css b/skins/xstyle/style/vtxgfx.css
new file mode 100644
index 0000000..1521d1f
--- /dev/null
+++ b/skins/xstyle/style/vtxgfx.css
@@ -0,0 +1,549 @@
+#vt p.vtx {
+font-size:15px;
+line-height:15px;
+font-family:monospace;
+white-space:nowrap;
+}
+
+#vt a.vtx:link,a.vtx:visited,a.vtx:hover,a.vtx:active {
+text-decoration:none;
+}
+
+#vt a.vtx:link,a.vtx:visited {
+color:#0F0;
+}
+
+#vt a.vtx:hover,a.vtx:active {
+color:#FF0;
+}
+
+.vtgfx {
+width:11px;
+height:16px;
+background-image:url(../images/vtxgfx.gif);
+background-repeat:no-repeat;
+}
+
+.white20 { background-position: 0px 0px ;}
+.white21 { background-position: 0px -16px ;}
+.white22 { background-position: 0px -32px ;}
+.white23 { background-position: 0px -48px ;}
+.white24 { background-position: 0px -64px ;}
+.white25 { background-position: 0px -80px ;}
+.white26 { background-position: 0px -96px ;}
+.white27 { background-position: 0px -112px ;}
+.white28 { background-position: 0px -128px ;}
+.white29 { background-position: 0px -144px ;}
+.white2A { background-position: 0px -160px ;}
+.white2B { background-position: 0px -176px ;}
+.white2C { background-position: 0px -192px ;}
+.white2D { background-position: 0px -208px ;}
+.white2E { background-position: 0px -224px ;}
+.white2F { background-position: 0px -240px ;}
+.white30 { background-position: 0px -256px ;}
+.white31 { background-position: 0px -272px ;}
+.white32 { background-position: 0px -288px ;}
+.white33 { background-position: 0px -304px ;}
+.white34 { background-position: 0px -320px ;}
+.white35 { background-position: 0px -336px ;}
+.white36 { background-position: 0px -352px ;}
+.white37 { background-position: 0px -368px ;}
+.white38 { background-position: 0px -384px ;}
+.white39 { background-position: 0px -400px ;}
+.white3A { background-position: 0px -416px ;}
+.white3B { background-position: 0px -432px ;}
+.white3C { background-position: 0px -448px ;}
+.white3D { background-position: 0px -464px ;}
+.white3E { background-position: 0px -480px ;}
+.white3F { background-position: 0px -496px ;}
+.white60 { background-position: 0px -512px ;}
+.white61 { background-position: 0px -528px ;}
+.white62 { background-position: 0px -544px ;}
+.white63 { background-position: 0px -560px ;}
+.white64 { background-position: 0px -576px ;}
+.white65 { background-position: 0px -592px ;}
+.white66 { background-position: 0px -608px ;}
+.white67 { background-position: 0px -624px ;}
+.white68 { background-position: 0px -640px ;}
+.white69 { background-position: 0px -656px ;}
+.white6A { background-position: 0px -672px ;}
+.white6B { background-position: 0px -688px ;}
+.white6C { background-position: 0px -704px ;}
+.white6D { background-position: 0px -720px ;}
+.white6E { background-position: 0px -736px ;}
+.white6F { background-position: 0px -752px ;}
+.white70 { background-position: 0px -768px ;}
+.white71 { background-position: 0px -784px ;}
+.white72 { background-position: 0px -800px ;}
+.white73 { background-position: 0px -816px ;}
+.white74 { background-position: 0px -832px ;}
+.white75 { background-position: 0px -848px ;}
+.white76 { background-position: 0px -864px ;}
+.white77 { background-position: 0px -880px ;}
+.white78 { background-position: 0px -896px ;}
+.white79 { background-position: 0px -912px ;}
+.white7A { background-position: 0px -928px ;}
+.white7B { background-position: 0px -944px ;}
+.white7C { background-position: 0px -960px ;}
+.white7D { background-position: 0px -976px ;}
+.white7E { background-position: 0px -992px ;}
+.white7F { background-position: 0px -1008px ;}
+
+.black20 { background-position: -11px 0px ;}
+.black21 { background-position: -11px -16px ;}
+.black22 { background-position: -11px -32px ;}
+.black23 { background-position: -11px -48px ;}
+.black24 { background-position: -11px -64px ;}
+.black25 { background-position: -11px -80px ;}
+.black26 { background-position: -11px -96px ;}
+.black27 { background-position: -11px -112px ;}
+.black28 { background-position: -11px -128px ;}
+.black29 { background-position: -11px -144px ;}
+.black2A { background-position: -11px -160px ;}
+.black2B { background-position: -11px -176px ;}
+.black2C { background-position: -11px -192px ;}
+.black2D { background-position: -11px -208px ;}
+.black2E { background-position: -11px -224px ;}
+.black2F { background-position: -11px -240px ;}
+.black30 { background-position: -11px -256px ;}
+.black31 { background-position: -11px -272px ;}
+.black32 { background-position: -11px -288px ;}
+.black33 { background-position: -11px -304px ;}
+.black34 { background-position: -11px -320px ;}
+.black35 { background-position: -11px -336px ;}
+.black36 { background-position: -11px -352px ;}
+.black37 { background-position: -11px -368px ;}
+.black38 { background-position: -11px -384px ;}
+.black39 { background-position: -11px -400px ;}
+.black3A { background-position: -11px -416px ;}
+.black3B { background-position: -11px -432px ;}
+.black3C { background-position: -11px -448px ;}
+.black3D { background-position: -11px -464px ;}
+.black3E { background-position: -11px -480px ;}
+.black3F { background-position: -11px -496px ;}
+.black60 { background-position: -11px -512px ;}
+.black61 { background-position: -11px -528px ;}
+.black62 { background-position: -11px -544px ;}
+.black63 { background-position: -11px -560px ;}
+.black64 { background-position: -11px -576px ;}
+.black65 { background-position: -11px -592px ;}
+.black66 { background-position: -11px -608px ;}
+.black67 { background-position: -11px -624px ;}
+.black68 { background-position: -11px -640px ;}
+.black69 { background-position: -11px -656px ;}
+.black6A { background-position: -11px -672px ;}
+.black6B { background-position: -11px -688px ;}
+.black6C { background-position: -11px -704px ;}
+.black6D { background-position: -11px -720px ;}
+.black6E { background-position: -11px -736px ;}
+.black6F { background-position: -11px -752px ;}
+.black70 { background-position: -11px -768px ;}
+.black71 { background-position: -11px -784px ;}
+.black72 { background-position: -11px -800px ;}
+.black73 { background-position: -11px -816px ;}
+.black74 { background-position: -11px -832px ;}
+.black75 { background-position: -11px -848px ;}
+.black76 { background-position: -11px -864px ;}
+.black77 { background-position: -11px -880px ;}
+.black78 { background-position: -11px -896px ;}
+.black79 { background-position: -11px -912px ;}
+.black7A { background-position: -11px -928px ;}
+.black7B { background-position: -11px -944px ;}
+.black7C { background-position: -11px -960px ;}
+.black7D { background-position: -11px -976px ;}
+.black7E { background-position: -11px -992px ;}
+.black7F { background-position: -11px -1008px ;}
+
+.red20 { background-position: -22px 0px ;}
+.red21 { background-position: -22px -16px ;}
+.red22 { background-position: -22px -32px ;}
+.red23 { background-position: -22px -48px ;}
+.red24 { background-position: -22px -64px ;}
+.red25 { background-position: -22px -80px ;}
+.red26 { background-position: -22px -96px ;}
+.red27 { background-position: -22px -112px ;}
+.red28 { background-position: -22px -128px ;}
+.red29 { background-position: -22px -144px ;}
+.red2A { background-position: -22px -160px ;}
+.red2B { background-position: -22px -176px ;}
+.red2C { background-position: -22px -192px ;}
+.red2D { background-position: -22px -208px ;}
+.red2E { background-position: -22px -224px ;}
+.red2F { background-position: -22px -240px ;}
+.red30 { background-position: -22px -256px ;}
+.red31 { background-position: -22px -272px ;}
+.red32 { background-position: -22px -288px ;}
+.red33 { background-position: -22px -304px ;}
+.red34 { background-position: -22px -320px ;}
+.red35 { background-position: -22px -336px ;}
+.red36 { background-position: -22px -352px ;}
+.red37 { background-position: -22px -368px ;}
+.red38 { background-position: -22px -384px ;}
+.red39 { background-position: -22px -400px ;}
+.red3A { background-position: -22px -416px ;}
+.red3B { background-position: -22px -432px ;}
+.red3C { background-position: -22px -448px ;}
+.red3D { background-position: -22px -464px ;}
+.red3E { background-position: -22px -480px ;}
+.red3F { background-position: -22px -496px ;}
+.red60 { background-position: -22px -512px ;}
+.red61 { background-position: -22px -528px ;}
+.red62 { background-position: -22px -544px ;}
+.red63 { background-position: -22px -560px ;}
+.red64 { background-position: -22px -576px ;}
+.red65 { background-position: -22px -592px ;}
+.red66 { background-position: -22px -608px ;}
+.red67 { background-position: -22px -624px ;}
+.red68 { background-position: -22px -640px ;}
+.red69 { background-position: -22px -656px ;}
+.red6A { background-position: -22px -672px ;}
+.red6B { background-position: -22px -688px ;}
+.red6C { background-position: -22px -704px ;}
+.red6D { background-position: -22px -720px ;}
+.red6E { background-position: -22px -736px ;}
+.red6F { background-position: -22px -752px ;}
+.red70 { background-position: -22px -768px ;}
+.red71 { background-position: -22px -784px ;}
+.red72 { background-position: -22px -800px ;}
+.red73 { background-position: -22px -816px ;}
+.red74 { background-position: -22px -832px ;}
+.red75 { background-position: -22px -848px ;}
+.red76 { background-position: -22px -864px ;}
+.red77 { background-position: -22px -880px ;}
+.red78 { background-position: -22px -896px ;}
+.red79 { background-position: -22px -912px ;}
+.red7A { background-position: -22px -928px ;}
+.red7B { background-position: -22px -944px ;}
+.red7C { background-position: -22px -960px ;}
+.red7D { background-position: -22px -976px ;}
+.red7E { background-position: -22px -992px ;}
+.red7F { background-position: -22px -1008px ;}
+
+.blue20 { background-position: -33px 0px ;}
+.blue21 { background-position: -33px -16px ;}
+.blue22 { background-position: -33px -32px ;}
+.blue23 { background-position: -33px -48px ;}
+.blue24 { background-position: -33px -64px ;}
+.blue25 { background-position: -33px -80px ;}
+.blue26 { background-position: -33px -96px ;}
+.blue27 { background-position: -33px -112px ;}
+.blue28 { background-position: -33px -128px ;}
+.blue29 { background-position: -33px -144px ;}
+.blue2A { background-position: -33px -160px ;}
+.blue2B { background-position: -33px -176px ;}
+.blue2C { background-position: -33px -192px ;}
+.blue2D { background-position: -33px -208px ;}
+.blue2E { background-position: -33px -224px ;}
+.blue2F { background-position: -33px -240px ;}
+.blue30 { background-position: -33px -256px ;}
+.blue31 { background-position: -33px -272px ;}
+.blue32 { background-position: -33px -288px ;}
+.blue33 { background-position: -33px -304px ;}
+.blue34 { background-position: -33px -320px ;}
+.blue35 { background-position: -33px -336px ;}
+.blue36 { background-position: -33px -352px ;}
+.blue37 { background-position: -33px -368px ;}
+.blue38 { background-position: -33px -384px ;}
+.blue39 { background-position: -33px -400px ;}
+.blue3A { background-position: -33px -416px ;}
+.blue3B { background-position: -33px -432px ;}
+.blue3C { background-position: -33px -448px ;}
+.blue3D { background-position: -33px -464px ;}
+.blue3E { background-position: -33px -480px ;}
+.blue3F { background-position: -33px -496px ;}
+.blue60 { background-position: -33px -512px ;}
+.blue61 { background-position: -33px -528px ;}
+.blue62 { background-position: -33px -544px ;}
+.blue63 { background-position: -33px -560px ;}
+.blue64 { background-position: -33px -576px ;}
+.blue65 { background-position: -33px -592px ;}
+.blue66 { background-position: -33px -608px ;}
+.blue67 { background-position: -33px -624px ;}
+.blue68 { background-position: -33px -640px ;}
+.blue69 { background-position: -33px -656px ;}
+.blue6A { background-position: -33px -672px ;}
+.blue6B { background-position: -33px -688px ;}
+.blue6C { background-position: -33px -704px ;}
+.blue6D { background-position: -33px -720px ;}
+.blue6E { background-position: -33px -736px ;}
+.blue6F { background-position: -33px -752px ;}
+.blue70 { background-position: -33px -768px ;}
+.blue71 { background-position: -33px -784px ;}
+.blue72 { background-position: -33px -800px ;}
+.blue73 { background-position: -33px -816px ;}
+.blue74 { background-position: -33px -832px ;}
+.blue75 { background-position: -33px -848px ;}
+.blue76 { background-position: -33px -864px ;}
+.blue77 { background-position: -33px -880px ;}
+.blue78 { background-position: -33px -896px ;}
+.blue79 { background-position: -33px -912px ;}
+.blue7A { background-position: -33px -928px ;}
+.blue7B { background-position: -33px -944px ;}
+.blue7C { background-position: -33px -960px ;}
+.blue7D { background-position: -33px -976px ;}
+.blue7E { background-position: -33px -992px ;}
+.blue7F { background-position: -33px -1008px ;}
+
+.yellow20 { background-position: -44px 0px ;}
+.yellow21 { background-position: -44px -16px ;}
+.yellow22 { background-position: -44px -32px ;}
+.yellow23 { background-position: -44px -48px ;}
+.yellow24 { background-position: -44px -64px ;}
+.yellow25 { background-position: -44px -80px ;}
+.yellow26 { background-position: -44px -96px ;}
+.yellow27 { background-position: -44px -112px ;}
+.yellow28 { background-position: -44px -128px ;}
+.yellow29 { background-position: -44px -144px ;}
+.yellow2A { background-position: -44px -160px ;}
+.yellow2B { background-position: -44px -176px ;}
+.yellow2C { background-position: -44px -192px ;}
+.yellow2D { background-position: -44px -208px ;}
+.yellow2E { background-position: -44px -224px ;}
+.yellow2F { background-position: -44px -240px ;}
+.yellow30 { background-position: -44px -256px ;}
+.yellow31 { background-position: -44px -272px ;}
+.yellow32 { background-position: -44px -288px ;}
+.yellow33 { background-position: -44px -304px ;}
+.yellow34 { background-position: -44px -320px ;}
+.yellow35 { background-position: -44px -336px ;}
+.yellow36 { background-position: -44px -352px ;}
+.yellow37 { background-position: -44px -368px ;}
+.yellow38 { background-position: -44px -384px ;}
+.yellow39 { background-position: -44px -400px ;}
+.yellow3A { background-position: -44px -416px ;}
+.yellow3B { background-position: -44px -432px ;}
+.yellow3C { background-position: -44px -448px ;}
+.yellow3D { background-position: -44px -464px ;}
+.yellow3E { background-position: -44px -480px ;}
+.yellow3F { background-position: -44px -496px ;}
+.yellow60 { background-position: -44px -512px ;}
+.yellow61 { background-position: -44px -528px ;}
+.yellow62 { background-position: -44px -544px ;}
+.yellow63 { background-position: -44px -560px ;}
+.yellow64 { background-position: -44px -576px ;}
+.yellow65 { background-position: -44px -592px ;}
+.yellow66 { background-position: -44px -608px ;}
+.yellow67 { background-position: -44px -624px ;}
+.yellow68 { background-position: -44px -640px ;}
+.yellow69 { background-position: -44px -656px ;}
+.yellow6A { background-position: -44px -672px ;}
+.yellow6B { background-position: -44px -688px ;}
+.yellow6C { background-position: -44px -704px ;}
+.yellow6D { background-position: -44px -720px ;}
+.yellow6E { background-position: -44px -736px ;}
+.yellow6F { background-position: -44px -752px ;}
+.yellow70 { background-position: -44px -768px ;}
+.yellow71 { background-position: -44px -784px ;}
+.yellow72 { background-position: -44px -800px ;}
+.yellow73 { background-position: -44px -816px ;}
+.yellow74 { background-position: -44px -832px ;}
+.yellow75 { background-position: -44px -848px ;}
+.yellow76 { background-position: -44px -864px ;}
+.yellow77 { background-position: -44px -880px ;}
+.yellow78 { background-position: -44px -896px ;}
+.yellow79 { background-position: -44px -912px ;}
+.yellow7A { background-position: -44px -928px ;}
+.yellow7B { background-position: -44px -944px ;}
+.yellow7C { background-position: -44px -960px ;}
+.yellow7D { background-position: -44px -976px ;}
+.yellow7E { background-position: -44px -992px ;}
+.yellow7F { background-position: -44px -1008px ;}
+
+.green20 { background-position: -55px 0px ;}
+.green21 { background-position: -55px -16px ;}
+.green22 { background-position: -55px -32px ;}
+.green23 { background-position: -55px -48px ;}
+.green24 { background-position: -55px -64px ;}
+.green25 { background-position: -55px -80px ;}
+.green26 { background-position: -55px -96px ;}
+.green27 { background-position: -55px -112px ;}
+.green28 { background-position: -55px -128px ;}
+.green29 { background-position: -55px -144px ;}
+.green2A { background-position: -55px -160px ;}
+.green2B { background-position: -55px -176px ;}
+.green2C { background-position: -55px -192px ;}
+.green2D { background-position: -55px -208px ;}
+.green2E { background-position: -55px -224px ;}
+.green2F { background-position: -55px -240px ;}
+.green30 { background-position: -55px -256px ;}
+.green31 { background-position: -55px -272px ;}
+.green32 { background-position: -55px -288px ;}
+.green33 { background-position: -55px -304px ;}
+.green34 { background-position: -55px -320px ;}
+.green35 { background-position: -55px -336px ;}
+.green36 { background-position: -55px -352px ;}
+.green37 { background-position: -55px -368px ;}
+.green38 { background-position: -55px -384px ;}
+.green39 { background-position: -55px -400px ;}
+.green3A { background-position: -55px -416px ;}
+.green3B { background-position: -55px -432px ;}
+.green3C { background-position: -55px -448px ;}
+.green3D { background-position: -55px -464px ;}
+.green3E { background-position: -55px -480px ;}
+.green3F { background-position: -55px -496px ;}
+.green60 { background-position: -55px -512px ;}
+.green61 { background-position: -55px -528px ;}
+.green62 { background-position: -55px -544px ;}
+.green63 { background-position: -55px -560px ;}
+.green64 { background-position: -55px -576px ;}
+.green65 { background-position: -55px -592px ;}
+.green66 { background-position: -55px -608px ;}
+.green67 { background-position: -55px -624px ;}
+.green68 { background-position: -55px -640px ;}
+.green69 { background-position: -55px -656px ;}
+.green6A { background-position: -55px -672px ;}
+.green6B { background-position: -55px -688px ;}
+.green6C { background-position: -55px -704px ;}
+.green6D { background-position: -55px -720px ;}
+.green6E { background-position: -55px -736px ;}
+.green6F { background-position: -55px -752px ;}
+.green70 { background-position: -55px -768px ;}
+.green71 { background-position: -55px -784px ;}
+.green72 { background-position: -55px -800px ;}
+.green73 { background-position: -55px -816px ;}
+.green74 { background-position: -55px -832px ;}
+.green75 { background-position: -55px -848px ;}
+.green76 { background-position: -55px -864px ;}
+.green77 { background-position: -55px -880px ;}
+.green78 { background-position: -55px -896px ;}
+.green79 { background-position: -55px -912px ;}
+.green7A { background-position: -55px -928px ;}
+.green7B { background-position: -55px -944px ;}
+.green7C { background-position: -55px -960px ;}
+.green7D { background-position: -55px -976px ;}
+.green7E { background-position: -55px -992px ;}
+.green7F { background-position: -55px -1008px ;}
+
+.cyan20 { background-position: -66px 0px ;}
+.cyan21 { background-position: -66px -16px ;}
+.cyan22 { background-position: -66px -32px ;}
+.cyan23 { background-position: -66px -48px ;}
+.cyan24 { background-position: -66px -64px ;}
+.cyan25 { background-position: -66px -80px ;}
+.cyan26 { background-position: -66px -96px ;}
+.cyan27 { background-position: -66px -112px ;}
+.cyan28 { background-position: -66px -128px ;}
+.cyan29 { background-position: -66px -144px ;}
+.cyan2A { background-position: -66px -160px ;}
+.cyan2B { background-position: -66px -176px ;}
+.cyan2C { background-position: -66px -192px ;}
+.cyan2D { background-position: -66px -208px ;}
+.cyan2E { background-position: -66px -224px ;}
+.cyan2F { background-position: -66px -240px ;}
+.cyan30 { background-position: -66px -256px ;}
+.cyan31 { background-position: -66px -272px ;}
+.cyan32 { background-position: -66px -288px ;}
+.cyan33 { background-position: -66px -304px ;}
+.cyan34 { background-position: -66px -320px ;}
+.cyan35 { background-position: -66px -336px ;}
+.cyan36 { background-position: -66px -352px ;}
+.cyan37 { background-position: -66px -368px ;}
+.cyan38 { background-position: -66px -384px ;}
+.cyan39 { background-position: -66px -400px ;}
+.cyan3A { background-position: -66px -416px ;}
+.cyan3B { background-position: -66px -432px ;}
+.cyan3C { background-position: -66px -448px ;}
+.cyan3D { background-position: -66px -464px ;}
+.cyan3E { background-position: -66px -480px ;}
+.cyan3F { background-position: -66px -496px ;}
+.cyan60 { background-position: -66px -512px ;}
+.cyan61 { background-position: -66px -528px ;}
+.cyan62 { background-position: -66px -544px ;}
+.cyan63 { background-position: -66px -560px ;}
+.cyan64 { background-position: -66px -576px ;}
+.cyan65 { background-position: -66px -592px ;}
+.cyan66 { background-position: -66px -608px ;}
+.cyan67 { background-position: -66px -624px ;}
+.cyan68 { background-position: -66px -640px ;}
+.cyan69 { background-position: -66px -656px ;}
+.cyan6A { background-position: -66px -672px ;}
+.cyan6B { background-position: -66px -688px ;}
+.cyan6C { background-position: -66px -704px ;}
+.cyan6D { background-position: -66px -720px ;}
+.cyan6E { background-position: -66px -736px ;}
+.cyan6F { background-position: -66px -752px ;}
+.cyan70 { background-position: -66px -768px ;}
+.cyan71 { background-position: -66px -784px ;}
+.cyan72 { background-position: -66px -800px ;}
+.cyan73 { background-position: -66px -816px ;}
+.cyan74 { background-position: -66px -832px ;}
+.cyan75 { background-position: -66px -848px ;}
+.cyan76 { background-position: -66px -864px ;}
+.cyan77 { background-position: -66px -880px ;}
+.cyan78 { background-position: -66px -896px ;}
+.cyan79 { background-position: -66px -912px ;}
+.cyan7A { background-position: -66px -928px ;}
+.cyan7B { background-position: -66px -944px ;}
+.cyan7C { background-position: -66px -960px ;}
+.cyan7D { background-position: -66px -976px ;}
+.cyan7E { background-position: -66px -992px ;}
+.cyan7F { background-position: -66px -1008px ;}
+
+.magenta20 { background-position: -77px 0px ;}
+.magenta21 { background-position: -77px -16px ;}
+.magenta22 { background-position: -77px -32px ;}
+.magenta23 { background-position: -77px -48px ;}
+.magenta24 { background-position: -77px -64px ;}
+.magenta25 { background-position: -77px -80px ;}
+.magenta26 { background-position: -77px -96px ;}
+.magenta27 { background-position: -77px -112px ;}
+.magenta28 { background-position: -77px -128px ;}
+.magenta29 { background-position: -77px -144px ;}
+.magenta2A { background-position: -77px -160px ;}
+.magenta2B { background-position: -77px -176px ;}
+.magenta2C { background-position: -77px -192px ;}
+.magenta2D { background-position: -77px -208px ;}
+.magenta2E { background-position: -77px -224px ;}
+.magenta2F { background-position: -77px -240px ;}
+.magenta30 { background-position: -77px -256px ;}
+.magenta31 { background-position: -77px -272px ;}
+.magenta32 { background-position: -77px -288px ;}
+.magenta33 { background-position: -77px -304px ;}
+.magenta34 { background-position: -77px -320px ;}
+.magenta35 { background-position: -77px -336px ;}
+.magenta36 { background-position: -77px -352px ;}
+.magenta37 { background-position: -77px -368px ;}
+.magenta38 { background-position: -77px -384px ;}
+.magenta39 { background-position: -77px -400px ;}
+.magenta3A { background-position: -77px -416px ;}
+.magenta3B { background-position: -77px -432px ;}
+.magenta3C { background-position: -77px -448px ;}
+.magenta3D { background-position: -77px -464px ;}
+.magenta3E { background-position: -77px -480px ;}
+.magenta3F { background-position: -77px -496px ;}
+.magenta60 { background-position: -77px -512px ;}
+.magenta61 { background-position: -77px -528px ;}
+.magenta62 { background-position: -77px -544px ;}
+.magenta63 { background-position: -77px -560px ;}
+.magenta64 { background-position: -77px -576px ;}
+.magenta65 { background-position: -77px -592px ;}
+.magenta66 { background-position: -77px -608px ;}
+.magenta67 { background-position: -77px -624px ;}
+.magenta68 { background-position: -77px -640px ;}
+.magenta69 { background-position: -77px -656px ;}
+.magenta6A { background-position: -77px -672px ;}
+.magenta6B { background-position: -77px -688px ;}
+.magenta6C { background-position: -77px -704px ;}
+.magenta6D { background-position: -77px -720px ;}
+.magenta6E { background-position: -77px -736px ;}
+.magenta6F { background-position: -77px -752px ;}
+.magenta70 { background-position: -77px -768px ;}
+.magenta71 { background-position: -77px -784px ;}
+.magenta72 { background-position: -77px -800px ;}
+.magenta73 { background-position: -77px -816px ;}
+.magenta74 { background-position: -77px -832px ;}
+.magenta75 { background-position: -77px -848px ;}
+.magenta76 { background-position: -77px -864px ;}
+.magenta77 { background-position: -77px -880px ;}
+.magenta78 { background-position: -77px -896px ;}
+.magenta79 { background-position: -77px -912px ;}
+.magenta7A { background-position: -77px -928px ;}
+.magenta7B { background-position: -77px -944px ;}
+.magenta7C { background-position: -77px -960px ;}
+.magenta7D { background-position: -77px -976px ;}
+.magenta7E { background-position: -77px -992px ;}
+.magenta7F { background-position: -77px -1008px ;}
+
+
+
+
diff --git a/skins/xstyle/vtxpage.tmpl b/skins/xstyle/vtxpage.tmpl
new file mode 100644
index 0000000..5223971
--- /dev/null
+++ b/skins/xstyle/vtxpage.tmpl
@@ -0,0 +1,43 @@
+<!-- vtx -->
+<?% IF data.0 >= 1 %?>
+<?% channel = data.0.3 %?>
+<?% url = "?cmd=vt&amp;channel=${channel}" %?>
+<?% END %?>
+<h1><?% gettext("Teletext") %?></h1>
+
+<table border="0">
+<tr><td><form>
+ <select name='chan' onChange="di(this.form.chan.options[this.form.chan.options.selectedIndex].value, '?cmd=vt&amp;channel=')">
+ <?% FOREACH ch = param.channels %?>
+ <option value="<?% ch.1 %?>" <?% "selected" IF channel == ch.1 %?>><?% ch.0 %?></option>
+ <?% END %?>
+ </select>
+ </form>
+</td>
+ <?% IF channel %?>
+<td>
+ <form method="post" action="<?% url %?>">
+ <?% gettext("Page") %?>:<input style='width:50px' type="text" name="page" size="5" value="<?% data.0.1 %?>">
+ </form>
+</td>
+<td>
+<form method="post" action="?cmd=vs&amp;channel=<?% channel %?>">
+ <?% gettext("Search") %?>:<input style='width:250px' type="text" name="data" size="10" value="">
+</form>
+</td>
+<?% END %?>
+</tr>
+</table>
+<?% IF channel %?>
+ <?% IF data.0.4 != 0 %?><a title="<?% gettext("First page") %?>" href="<?% url %?>"><img src='images/oben.png'></a><?% ELSE %?><span class="shadow"><img src='images/trans.gif'></span><?% END %?>&nbsp;
+ <?% IF data.0.4 != 0 %?><a title="<?% gettext("Previous page") %?>"href="<?% url %?>&amp;page=<?% data.0.4 %?>"><img src='images/schnell_back.png'></a><?% ELSE %?><span class="shadow"><img src='images/trans.gif'></span><?% END %?>&nbsp;
+ <?% IF data.0.5 != 0 %?><a title="<?% gettext("Next page") %?>"href="<?% url %?>&amp;page=<?% data.0.5 %?>"><img src='images/schnell_vor.png'></a><?% ELSE %?><span class="shadow"><img src='images/trans.gif'></span><?% END %?>
+<?% END %?>
+
+<br />
+<?% FOREACH zeile = data %?>
+<?% id=zeile.0;page=zeile.1;subpage=zeile.2;channels=zeile.3;prev=zeile.4;next=zeile.5;mtime=zeile.6 %?>
+<div style="float:left; margin:5px;" id="<?% id %?>">
+ <h2><?% gettext("Page") %?>&nbsp;<?% page; IF subpage > 0 %?>/<?% subpage; END %?></h2>
+ <div id="vt"> <?% zeile.7 %?>
+ </div> </div> <?% END %?>
diff --git a/skins/xstyle/widgets/start.tmpl b/skins/xstyle/widgets/start.tmpl
index a48e427..53a9a08 100644
--- a/skins/xstyle/widgets/start.tmpl
+++ b/skins/xstyle/widgets/start.tmpl
@@ -15,7 +15,9 @@
<link href="style/style.css" type="text/css" rel="stylesheet" />
<link href="style/xmenu.css" type="text/css" rel="stylesheet">
<link href="style/xmenu.windows.css" type="text/css" rel="stylesheet">
-
+<?% IF call == 'vtxpage' %?>
+ <link href="style/vtxgfx.css" type="text/css" rel="stylesheet" />
+<?% END %?>
<!-- Javascript -->
<script type="text/javascript" src="javascript/global.js"></script>
<script type="text/javascript" src="javascript/XHConn.js"></script>
diff --git a/skins/xstyle/widgets/vtx.tmpl b/skins/xstyle/widgets/vtx.tmpl
deleted file mode 100644
index 274d2fc..0000000
--- a/skins/xstyle/widgets/vtx.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<!-- vtx -->
-<?% IF !global.include_vtx_wigdet.defined %?>
-<h1><?% gettext("Teletext") %?>&nbsp;
-<?% gettext("Page") %?>&nbsp;<?% param.page; pages = cgi.param('data').split('_'); IF pages.size > 1 && pages.last > 0 %?>/<?% pages.last; END %?>
-</h1>
-<?% ELSE %?>
-<h2>
-<?% gettext("Page") %?>&nbsp;<?% param.page; pages = cgi.param('data').split('_'); IF pages.size > 1 && pages.last > 0 %?>/<?% pages.last; END %?>
-</h2>
-<?% END %?>
-
-<?% IF !global.include_vtx_wigdet.defined %?>
-<?% url = "?cmd=vt&amp;data=" %?>
-<table border="0">
-<tr><td><form>
- <select name='chan' onChange="di(this.form.chan.options[this.form.chan.options.selectedIndex].value, '?cmd=vtxchannel&amp;data=')">
- <?% FOREACH ch = param.channels %?>
- <option value="<?% ch.1 %?>" <?% "selected" IF param.channel == ch.1 %?>><?% ch.0 %?></option>
- <?% END %?>
- </select>
- <input style='width:50px' type="hidden" name="cmd" value="vt">
- <?% gettext("Page") %?>:<input style='width:50px' type="text" name="data" size="5" value="<?% param.page %?>">
- </form>
-</td>
-<td>
-<form method="post" action="?cmd=vs">
- <?% gettext("Search") %?>:<input style='width:50px' type="text" name="data" size="10" value="">
-</form>
-</td>
-</tr>
-</table>
- <?% IF param.toppage != 0 %?><a title="<?% gettext("First page") %?>" href="<?% url %?><?% param.toppage %?>"><img src='images/oben.png'></a><?% ELSE %?><span class="shadow"><img src='images/trans.gif'></span><?% END %?>&nbsp;
- <?% IF param.page_prev != 0 %?><a title="<?% gettext("Previous page") %?>"href="<?% url %?><?% param.page_prev %?>"><img src='images/schnell_back.png'></a><?% ELSE %?><span class="shadow"><img src='images/trans.gif'></span><?% END %?>&nbsp;
- <?% IF param.subpage_prev != 0 %?><a title="<?% gettext("Prior sub page") %?>"href="<?% url %?><?% param.subpage_prev %?>"><img src='images/back.png'></a><?% ELSE %?><span class="shadow"><img src='images/trans.gif'></span><?% END %?>&nbsp;
- <?% IF param.subpage_next != 0 %?><a title="<?% gettext("Next sub page") %?>"href="<?% url %?><?% param.subpage_next %?>"><img src='images/vor.png'></a><?% ELSE %?><span class="shadow"><img src='images/trans.gif'></span><?% END %?>&nbsp;
- <?% IF param.page_next != 0 %?><a title="<?% gettext("Next page") %?>"href="<?% url %?><?% param.page_next %?>"><img src='images/schnell_vor.png'></a><?% ELSE %?><span class="shadow"><img src='images/trans.gif'></span><?% END %?>
-<?% END %?>
-
-<br />
-<?% FOREACH l = data %?>
- <?% l %?>
-<?% END %?>
-
-<?% SET global.include_vtx_wigdet = 1 %?>