]> git.parisson.com Git - telemeta.git/commitdiff
rm htdocs
authoryomguy <yomguy@parisson.com>
Tue, 2 Oct 2012 08:59:21 +0000 (10:59 +0200)
committeryomguy <yomguy@parisson.com>
Tue, 2 Oct 2012 08:59:21 +0000 (10:59 +0200)
134 files changed:
telemeta/htdocs/css/admin.css [deleted file]
telemeta/htdocs/css/indent.png [deleted file]
telemeta/htdocs/css/indicator.gif [deleted file]
telemeta/htdocs/css/jquery.autocomplete.css [deleted file]
telemeta/htdocs/css/more.gif [deleted file]
telemeta/htdocs/css/more.png [deleted file]
telemeta/htdocs/css/player.css [deleted file]
telemeta/htdocs/css/search_bg.png [deleted file]
telemeta/htdocs/css/telemeta.css [deleted file]
telemeta/htdocs/css/telemeta_ie.css [deleted file]
telemeta/htdocs/css/telemeta_ie6.css [deleted file]
telemeta/htdocs/images/add.png [deleted file]
telemeta/htdocs/images/add_playlist_marker.png [deleted file]
telemeta/htdocs/images/add_to_playlist.png [deleted file]
telemeta/htdocs/images/admin_red.png [deleted file]
telemeta/htdocs/images/admin_wh.png [deleted file]
telemeta/htdocs/images/adv_search_red.png [deleted file]
telemeta/htdocs/images/adv_search_wh.png [deleted file]
telemeta/htdocs/images/asc.png [deleted file]
telemeta/htdocs/images/bg_yt.png [deleted file]
telemeta/htdocs/images/cancel.png [deleted file]
telemeta/htdocs/images/close.png [deleted file]
telemeta/htdocs/images/collections_red.png [deleted file]
telemeta/htdocs/images/collections_wh.png [deleted file]
telemeta/htdocs/images/copy_page.png [deleted file]
telemeta/htdocs/images/corpus.png [deleted file]
telemeta/htdocs/images/csv.png [deleted file]
telemeta/htdocs/images/del_marker.png [deleted file]
telemeta/htdocs/images/delete.png [deleted file]
telemeta/htdocs/images/desc.png [deleted file]
telemeta/htdocs/images/dialog-error.png [deleted file]
telemeta/htdocs/images/document-edit.png [deleted file]
telemeta/htdocs/images/dots.gif [deleted file]
telemeta/htdocs/images/download.png [deleted file]
telemeta/htdocs/images/dublin_core.png [deleted file]
telemeta/htdocs/images/edit_cancel.png [deleted file]
telemeta/htdocs/images/edit_marker.png [deleted file]
telemeta/htdocs/images/edit_page.png [deleted file]
telemeta/htdocs/images/favicon.ico [deleted file]
telemeta/htdocs/images/feed-icon-14x14.png [deleted file]
telemeta/htdocs/images/feed-icon-28x28.png [deleted file]
telemeta/htdocs/images/filter.png [deleted file]
telemeta/htdocs/images/find.png [deleted file]
telemeta/htdocs/images/flac.png [deleted file]
telemeta/htdocs/images/fonds.png [deleted file]
telemeta/htdocs/images/geo_wh.png [deleted file]
telemeta/htdocs/images/grid_bg.png [deleted file]
telemeta/htdocs/images/grid_bg_2.png [deleted file]
telemeta/htdocs/images/help.png [deleted file]
telemeta/htdocs/images/home_red.png [deleted file]
telemeta/htdocs/images/item.png [deleted file]
telemeta/htdocs/images/item_collector.png [deleted file]
telemeta/htdocs/images/item_duration.png [deleted file]
telemeta/htdocs/images/item_flag.png [deleted file]
telemeta/htdocs/images/item_title.png [deleted file]
telemeta/htdocs/images/logo-CNRS.png [deleted file]
telemeta/htdocs/images/logo-adonis.jpg [deleted file]
telemeta/htdocs/images/logo-mnhn.gif [deleted file]
telemeta/htdocs/images/logo.png [deleted file]
telemeta/htdocs/images/logo_crem.png [deleted file]
telemeta/htdocs/images/logo_mcc_2.png [deleted file]
telemeta/htdocs/images/logo_mini.png [deleted file]
telemeta/htdocs/images/logo_mini_2.png [deleted file]
telemeta/htdocs/images/logo_mini_wh.png [deleted file]
telemeta/htdocs/images/logo_only.png [deleted file]
telemeta/htdocs/images/logo_only_22.png [deleted file]
telemeta/htdocs/images/logo_only_22_cont.png [deleted file]
telemeta/htdocs/images/logo_only_22_nb.png [deleted file]
telemeta/htdocs/images/logo_only_52.png [deleted file]
telemeta/htdocs/images/logo_telemeta_2.png [deleted file]
telemeta/htdocs/images/logout.png [deleted file]
telemeta/htdocs/images/map_thumbnail.png [deleted file]
telemeta/htdocs/images/marker_ok_green.png [deleted file]
telemeta/htdocs/images/marker_tiny.png [deleted file]
telemeta/htdocs/images/maximize.gif [deleted file]
telemeta/htdocs/images/maximize.png [deleted file]
telemeta/htdocs/images/maximize_old.gif [deleted file]
telemeta/htdocs/images/maximize_old.png [deleted file]
telemeta/htdocs/images/media-record.png [deleted file]
telemeta/htdocs/images/minus.png [deleted file]
telemeta/htdocs/images/module_playlist.png [deleted file]
telemeta/htdocs/images/module_world.png [deleted file]
telemeta/htdocs/images/mp3.png [deleted file]
telemeta/htdocs/images/next.png [deleted file]
telemeta/htdocs/images/ogg.png [deleted file]
telemeta/htdocs/images/ok.png [deleted file]
telemeta/htdocs/images/password.png [deleted file]
telemeta/htdocs/images/player_controlbg.png [deleted file]
telemeta/htdocs/images/playlist.png [deleted file]
telemeta/htdocs/images/playlist_title.png [deleted file]
telemeta/htdocs/images/plots.png [deleted file]
telemeta/htdocs/images/plus.png [deleted file]
telemeta/htdocs/images/previous.png [deleted file]
telemeta/htdocs/images/rss.png [deleted file]
telemeta/htdocs/images/rss_red.png [deleted file]
telemeta/htdocs/images/save.png [deleted file]
telemeta/htdocs/images/save_changes.png [deleted file]
telemeta/htdocs/images/search_red.png [deleted file]
telemeta/htdocs/images/search_wh.png [deleted file]
telemeta/htdocs/images/search_wh2.png [deleted file]
telemeta/htdocs/images/share.png [deleted file]
telemeta/htdocs/images/text-speak.png [deleted file]
telemeta/htdocs/images/topbar_gradient.png [deleted file]
telemeta/htdocs/images/topbar_gradient2.png [deleted file]
telemeta/htdocs/images/transparent.png [deleted file]
telemeta/htdocs/images/tw_hd.png [deleted file]
telemeta/htdocs/images/tw_hd_bg.png [deleted file]
telemeta/htdocs/images/user.png [deleted file]
telemeta/htdocs/images/user_red.png [deleted file]
telemeta/htdocs/images/user_tr.png [deleted file]
telemeta/htdocs/images/view-pim-notes.png [deleted file]
telemeta/htdocs/images/visu_icon.png [deleted file]
telemeta/htdocs/images/vox.png [deleted file]
telemeta/htdocs/images/vox_wh.png [deleted file]
telemeta/htdocs/images/wait.gif [deleted file]
telemeta/htdocs/images/wait_small.gif [deleted file]
telemeta/htdocs/images/wav.png [deleted file]
telemeta/htdocs/images/waves.png [deleted file]
telemeta/htdocs/images/webm.png [deleted file]
telemeta/htdocs/images/world2.png [deleted file]
telemeta/htdocs/images/world_red.png [deleted file]
telemeta/htdocs/images/zoom2.png [deleted file]
telemeta/htdocs/js/application.js [deleted file]
telemeta/htdocs/js/divmarker.js [deleted file]
telemeta/htdocs/js/jquery.autocomplete.js [deleted file]
telemeta/htdocs/js/jquery.bgiframe.js [deleted file]
telemeta/htdocs/js/locale.js [deleted file]
telemeta/htdocs/js/playerLoader.js [deleted file]
telemeta/htdocs/js/playlist.js [deleted file]
telemeta/htdocs/js/popupdiv-min.js [deleted file]
telemeta/htdocs/js/popupdiv.js [deleted file]
telemeta/htdocs/js/resourcemap.js [deleted file]
telemeta/htdocs/js/swfobject.js [deleted file]
telemeta/htdocs/js/tools-temp.js [deleted file]

diff --git a/telemeta/htdocs/css/admin.css b/telemeta/htdocs/css/admin.css
deleted file mode 100644 (file)
index c5b55af..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Shamelessly stolen from trac's admin.css... */
-
-.tabs {
- border: 1px solid #6a0307;
- /* border-color: gray black black gray;*/
- margin: 0em 0;
- padding: .3em 0 0 .5em;
- float: left;
- width: 15em;
- color: #6a0307;
- font-size: 14px;
- font-weight: bold;
- -moz-border-radius: 8px 8px 8px 8px;
- -webkit-border-radius: 8px 8px 8px 8px;
- border-radius: 8px 8px 8px 8px;
-}
-.tabs ul { list-style: none; margin: 0 0 .5em; padding: 0 }
-.tabs li { margin: 0; padding: 0.1em .5em }
-.tabs li li { margin: 0 -0.5em; padding-left: 1.5em }
-.tabs li li.active { background: #ccb; }
-.tabs :link, .tabs :visited { border: none; display: block }
-.tabs :link:hover, .tabs :visited:hover { background: transparent }
-
-.tabcontents {
- padding: 0em 2em;
- margin-left: 1em;
- min-height: 300px;
-}
-p.help { color: #666; font-size: 90%; margin: 1em .5em .5em }
-
-form.addnew { clear: right; float: right; margin: -2em 0 4em; width: 33% }
-form.mod { margin-top: 1em; }
-form.mod .field { margin: .5em 0; }
-form .field em { color: #888; font-size: smaller }
-form .field .disabled em { color: #d7d7d7 }
-
-table.listing { clear: none; width: 64% }
-table.listing .sel, table.listing .default { text-align: center; width: 1% }
-
-
-
diff --git a/telemeta/htdocs/css/indent.png b/telemeta/htdocs/css/indent.png
deleted file mode 100644 (file)
index 03a7c34..0000000
Binary files a/telemeta/htdocs/css/indent.png and /dev/null differ
diff --git a/telemeta/htdocs/css/indicator.gif b/telemeta/htdocs/css/indicator.gif
deleted file mode 100644 (file)
index 085ccae..0000000
Binary files a/telemeta/htdocs/css/indicator.gif and /dev/null differ
diff --git a/telemeta/htdocs/css/jquery.autocomplete.css b/telemeta/htdocs/css/jquery.autocomplete.css
deleted file mode 100644 (file)
index 91b6228..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-.ac_results {
-       padding: 0px;
-       border: 1px solid black;
-       background-color: white;
-       overflow: hidden;
-       z-index: 99999;
-}
-
-.ac_results ul {
-       width: 100%;
-       list-style-position: outside;
-       list-style: none;
-       padding: 0;
-       margin: 0;
-}
-
-.ac_results li {
-       margin: 0px;
-       padding: 2px 5px;
-       cursor: default;
-       display: block;
-       /* 
-       if width will be 100% horizontal scrollbar will apear 
-       when scroll mode will be used
-       */
-       /*width: 100%;*/
-       font: menu;
-       font-size: 12px;
-       /* 
-       it is very important, if line-height not setted or setted 
-       in relative units scroll will be broken in firefox
-       */
-       line-height: 16px;
-       overflow: hidden;
-}
-
-.ac_loading {
-       background: white url('indicator.gif') right center no-repeat;
-}
-
-.ac_odd {
-       background-color: #eee;
-}
-
-.ac_over {
-       background-color: #0A246A;
-       color: white;
-}
diff --git a/telemeta/htdocs/css/more.gif b/telemeta/htdocs/css/more.gif
deleted file mode 100644 (file)
index f4e7d5e..0000000
Binary files a/telemeta/htdocs/css/more.gif and /dev/null differ
diff --git a/telemeta/htdocs/css/more.png b/telemeta/htdocs/css/more.png
deleted file mode 100644 (file)
index db83cb8..0000000
Binary files a/telemeta/htdocs/css/more.png and /dev/null differ
diff --git a/telemeta/htdocs/css/player.css b/telemeta/htdocs/css/player.css
deleted file mode 100644 (file)
index 009155a..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-
-#player_maximized .ts-player .ts-wave,  #player_maximized .ts-player .ts-image {
-    height: 170px;
-}
-
-.ts-skin-lab .ts-player .ts-control {
-    background: url('../images/player_controlbg.png');
-}
-
-#player_maximized, #player_minimized {
-    position: relative;
-}
-
-
-#player_maximized .toggle, #player_minimized .toggle {
-    position: relative;
-    display: block;
-    overflow: hidden;
-    float: left;
-    width: 18px;
-    padding: 10px 0 0 0;
-    height: 0px !important;
-    height /**/:10px; /* for IE5/Win only */
-    background-image: url('../images/maximize.png');
-    text-decoration: none;
-    border: none;
-}
-
-#player_maximized .toggle:hover, #player_minimized .toggle:hover {
-    background-position: 0px -10px;
-}
-
-#player_maximized .embed_player_frame, #player_minimized .embed_player_frame {
-    float: right;
-    font-weight: bold;
-    color: #6A0307;
-    text-decoration: none;
-    font-size: 50%;
-    padding-left: 2ex;
-    padding-right: 2ex;
-     position: relative;
-    top: -1px;
-    line-height: 1.5em;
-}
-
-#player_maximized .embed_player_frame:hover, #player_minimized .embed_player_frame:hover {
-    text-decoration: none;
-}
-
-#player_maximized {
-    margin: 10px 0 15px 0;
-    display: none;
-}
\ No newline at end of file
diff --git a/telemeta/htdocs/css/search_bg.png b/telemeta/htdocs/css/search_bg.png
deleted file mode 100644 (file)
index 923ed4c..0000000
Binary files a/telemeta/htdocs/css/search_bg.png and /dev/null differ
diff --git a/telemeta/htdocs/css/telemeta.css b/telemeta/htdocs/css/telemeta.css
deleted file mode 100644 (file)
index d1a4dae..0000000
+++ /dev/null
@@ -1,1266 +0,0 @@
-body {margin: 0; padding: 0;}
-a {text-decoration: none; color: #969696;}
-a img {border: none;}
-html, input, select, textarea, h1, h2, h3, h4, h5, h6 {
-    font-size: 100%;
-}
-body {
-    font: 0.8125em/1em Verdana, sans-serif;
-    line-height: 1.3em;
-    color: #333;
-    background: #FFF;
-    margin: 0em;
-}
-
-/*a:link, a:visited {
-    color: #BB0000;
-    text-decoration:none;
-}
-a:link:hover, a:visited:hover {
-    background-color: transparent;
-    color: #BB0000;
-    text-decoration: underline;
-}*/
-a, a:visited {
-    color: #BB0000;
-    text-decoration:none;
-}
-a:hover {
-    background-color: transparent;
-    color: #BB0000;
-    text-decoration: underline;
-}
-
-a img { border: none; }
-
-.rst-content h1 {
-    font-size: 1.2em;
-    font-weight: bold;
-    color: #353535;
-}
-.nett {
-    clear: both;
-    height: 5px;
-}
-
-.wazing {
-    clear: both;
-    position: relative;
-}
-
-/* Min-width */
-#layout {
-    min-width: 740px;
-}
-
-#content {
-    /*margin-top: 1em;*/
-    margin-bottom: 0em;
-}
-
-#content {
-    position: relative;
-    margin-left: 2em;
-    margin-right: 2em;
-}
-
-
-#content ul, #content ul ul, #content ol {
-    list-style: square;
-    padding: .7em;
-    padding-left: 2em;
-    font-size: 0.8em;
-    clear: both;
-}
-#content ul ul {
-    font-size: 1.1em;
-    padding-left: 0;
-}
-#content li {
-    padding: .2em;
-    padding-left: 0;
-}
-#content li a {
-    padding: .1em 0;
-}
-#content h1 {
-    color: #6a0307;
-    font-weight: bold;
-    display:  inline;
-    font-size: 120%;
-}
-#content h3 {
-    color: #6a0307;
-    font-weight: bold;
-    display:  inline;
-}
-
-#content h2 {
-    color: #6a0307;
-}
-
-#logo a, #logo a:hover { border: none; background: transparent; }
-
-#header {
-    padding: 0em;
-/*     background: url("../images/waves.png") 100% 0% no-repeat; */
-}
-
-#content_header, #header{
-    margin-bottom: .8em;
-}
-
-#content_header{
-    width:100%;
-    border-collapse:collapse;
-}
-
-#content_header td{
-    vertical-align: top;
-}
-
-#content_header td.rightcol{
-    text-align:right;
-    white-space:nowrap; /**this implies to stretach righcol to accomodate all the width,
-                        UNLESS there is a div.fixedWidthAsPlayer inside td.rightcol (see blow)*/
-}
-
-#content_header td.rightcol div.fixedWidthAsPlayer{
-    width:374px; /*must be width+2*padding, see #rightcol below*/
-    float:right;
-    white-space:normal; /*to override no-wrap defined in #content_header td.rightcol*/
-}
-
-#content_header td.rightcol div.fixedWidthAsPlayer a{
-    display:inline-block;
-    margin-top:0.5ex;
-}
-
-#rightcol {
-    width: 362px; /**if u change this, change also width #content_header td.rightcol, see above*/
-    padding: 6px; /**if u change this, change also width #content_header td.rightcol, see above*/
-    position: relative;
-    z-index: 1;
-    float: right;
-    border: 1px solid #999;
-    background-color: #eee;
-    -moz-border-radius: 8px 8px 8px 8px;
-    -webkit-border-radius: 8px 8px 8px 8px;
-    border-radius: 8px 8px 8px 8px;
-}
-
-#rightcol .analyzer, #rightcol .exporter, .markers {
-    text-align: left;
-    position: relative;
-}
-
-#rightcol form {
-    width: 360px;
-    margin-top: 5px;
-    background-color: #fff;
-    border: 1px solid #adadad;
-}
-
-#rightcol p {
-    margin: 0;
-    padding: 0;
-}
-
-#collection_player {
-    background: transparent;
-    /*     background-image: url(../images/grid_bg.png); */
-}
-
-#collection_player .title {
-    padding: 2px 5px 7px 5px;
-}
-
-
-.exporter {
-    background-color: #fff;
-    border: 1px solid #adadad;
-    padding: 2px;
-    height: 26px;
-    margin: 5px 0 0;
-    font-size: 0.9em;
-    color: #000;
-    font-weight: bold;
-}
-
-.analyzer, .markers {
-    background-color: #fff;
-    color: #000;
-    border: 1px solid #adadad;
-    width: 356px;
-    padding: 2px;
-    /* margin: 5px 0 0; */
-    font-size: 1em;
-}
-
-.markers {
-    max-height: 500px;
-    overflow-y: scroll;
-}
-
-.vscroll {
-    max-height: 300px;
-    overflow-y: scroll;
-    width: 100%;
-}
-
-
-.analyzer-title {
-    background-color: #f2f2f2;
-    color: #000;
-    padding: 2px;
-}
-
-.analyzer-line {
-    background-color: #fdfdfd;
-    color: #000;
-    padding: 4px;
-}
-
-/* Geographic navigator */
-ul.continents, ul.continents ul { list-style: none; margin: 0; padding: 0;}
-ul.continents { margin: 1em 0; }
-ul.continents ul {margin-left: 0; margin-bottom: 0.9em; padding: 0 1em 1em 0;}
-ul.continents li.name { width: 460px; float: left; clear: left; margin-right: 30px;}
-ul.continents li.odd { clear: none;}
-ul.continents li.name b { font-size: 120%; font-weight: bold; }
-ul.continents ul li { display: inline; padding-right: 2em;}
-ul.continents ul li a { line-height: 1.8em; }
-
-/* Collection */
-#content .intro {
-    font-size: 1em;
-    font-weight: bold;
-    color: #444;
-    margin: 5px 0;
-    font-size: 0.8em;
-}
-#content .intro span {
-    padding: 3px;
-
-}
-
-/* Forms */
-input, textarea, select { margin: 2px }
-input, select { vertical-align: middle }
-input[type=button], input[type=submit], input[type=reset] {
-    background: #f2f2f2;
-    color: #444;
-    border: 3px double #ccc;
-    padding: .1em .5em;
-    font-weight: bold;
-    cursor: pointer;
-}
-input[type=button]:hover, input[type=submit]:hover, input[type=reset]:hover {
-    background: #8D8C94;
-    color: #fff;
-}
-input[type=button][disabled], input[type=submit][disabled],
-input[type=reset][disabled] {
-    background: #f6f6f6;
-    border-style: solid;
-    color: #999;
-}
-input[type=text], input[type=password], input.textwidget, textarea { border: 1px solid #ccc; }
-input[type=text], input[type=password], input.textwidget { padding: .25em .1em }
-input[type=text]:focus, input[type=password]:focus, input.textwidget:focus, textarea:focus {
-    border-color: #aaa;
-}
-option { border-bottom: 1px dotted #d7d7d7; }
-fieldset { border: 1px solid #d7d7d7; padding: .5em; margin: 0 }
-fieldset.iefix { background: transparent; border: none; padding: 0; margin: 0 }
-* html fieldset.iefix { width: 98% }
-fieldset.iefix p { margin: 0 }
-legend { color: #999; padding: 0 .25em; font-size: 90%; font-weight: bold }
-label.disabled { color: #d7d7d7 }
-.buttons { margin: .5em .5em .5em 0 }
-.buttons form, .buttons form div { display: inline }
-.buttons input { margin: 1em .5em .1em 0 }
-.inlinebuttons input {
-    font-size: 70%;
-    border-width: 1px;
-    border-style: dotted;
-    margin: 0;
-    padding: 0.1em;
-    background: none;
-}
-
-/* Quick search */
-#quick_search {
-    position: absolute;
-    top: 1.7em;
-    left: 35%;
-    background-color: #6a0307;
-    padding: 0.3em 0em 0.3em 0.3em;
-    -moz-border-radius: 8px 8px 8px 8px;
-    -webkit-border-radius: 8px 8px 8px 8px;
-    border-radius: 8px 8px 8px 8px;
-}
-#quick_search form {
-    float: left;
-    margin-right: 12px;
-}
-#quick_search p {
-    margin-top: .3em;
-    clear: left;
-}
-
-#quick_search a {
-    font-size: .8em;
-    font-weight: bold;
-    vertical-align: middle;
-}
-
-#quick_search input {
-    vertical-align: middle;
-    font-size: .8em;
-    margin-right: 0;
-    -moz-border-radius: 5px 5px 5px 5px;
-    -webkit-border-radius: 5px 5px 5px 5px;
-    border-radius: 5px 5px 5px 5px;
-}
-#quick_search_pattern {
-    background: #FFF url(search_bg.png) no-repeat;
-    padding: .4em .1em;
-    padding-left: 25px;
-    width: 180px;
-    color: #555;
-    font-weight: bold;
-}
-
-/* Authentication */
-#auth_info {
-    color: #FFF;
-    font-weight: bold;
-    position: absolute;
-    top: 1.5em;
-    right: 1.1em;
-    margin-right: 1em;
-    font-size: 0.9em;
-    background-color: #6a0307;
-    padding: 1em;
-    -moz-border-radius: 8px 8px 8px 8px;
-    -webkit-border-radius: 8px 8px 8px 8px;
-    border-radius: 8px 8px 8px 8px;
-}
-
-#auth_info a {
-    color: #FFF;
-    font-size: 1em;
-    font-weight: bold;
-}
-
-form.login {
-    font-size: 0.8em;
-    float: left;
-    margin-top: 2em;
-    margin-bottom: 4em;
-    padding: .5em;
-    border: 1px dotted #888;
-}
-
-.login-error {
-    color: #BB0000;
-}
-
-form.login label {
-    display: block;
-    width: 11em;
-    float: left;
-    clear: left;
-    font-weight: bold;
-    padding-top: 0.3em;
-}
-
-form.login .submit {
-    float: right;
-    margin-top: 1em;
-}
-
-/* Search form */
-#searchform {
-    margin: 15px 0;
-}
-#searchform fieldset {
-    padding: 0;
-    padding: .5em;
-    width: 650px;
-    border: none;
-    border: 1px solid #6a0307;
-    margin-bottom: 1em;
-    -moz-border-radius: 8px 8px 8px 8px;
-    -webkit-border-radius: 8px 8px 8px 8px;
-    border-radius: 8px 8px 8px 8px;
-}
-#searchform p {
-    background-color: #fff;
-    padding: .5em 0;
-}
-#searchform label {
-    font-size: 0.8em;
-    display: block;
-    float: left;
-    width: 30%;
-    margin-left: 15px;
-    margin-top: .2em;
-    line-height: 1.8em;
-    font-weight: bold;
-    color: #333;
-    text-transform: uppercase;
-}
-#searchform select {
-    width: 59%;
-}
-#searchform fieldset input {
-    width: 56%;
-}
-#searchform select, #searchform fieldset input {
-    font-size: 0.8em;
-}
-#searchform .submit {
-    padding: 0;
-    clear: both;
-    width: 450px;
-}
-
-#searchform select.tiny {
-    width: 12%;
-}
-
-/* Main navigation bar  (borrowed from Trac) */
-#menu {
-    background-color: #6a0307 ;
-    font: normal verdana,'Bitstream Vera Sans',helvetica,arial,sans-serif;
-    border-top: .25em solid #6a0307;
-    padding-left:26px;
-}
-
-#menu a, #menu a:visited{
-    display:inline-block;
-    color: #fff;
-    text-decoration:none;
-    border-bottom-width:.5em;
-    border-bottom-style: solid;
-    background-color: #6a0307;
-    -webkit-border-top-left-radius:5px 5px;
-    moz-border-radius-topleft: 5px 5px;
-    border-top-left-radius: 5px 5px;
-    -webkit-border-top-right-radius:5px 5px;
-    moz-border-radius-topright: 5px 5px;
-    border-top-right-radius: 5px 5px;
-    font-weight: bold;
-    font-size: 14px;
-    padding: .5em 1em;
-}
-#menu a:hover, #menu a.active{
-    background-color: #FFF;
-    color: #6a0307;
-}
-
-#menu .darkblue { border-bottom-color: #0f3179; }
-#menu .blue { border-bottom-color:  #4f628a; }
-#menu .green { border-bottom-color:  #92b220; }
-#menu .yellow { border-bottom-color:  #f3ad17; }
-#menu .orange { border-bottom-color:  #e65911; }
-#menu .darkgreen { border-bottom-color:  #006a12; }
-#menu .black { border-bottom-color:  #000000; }
-#menu .red { border-bottom-color:  #DD0000; }
-#menu .violet { border-bottom-color:  #A00020; }
-#menu .origin { border-bottom-color: #6a0307; }
-
-* html #menu :link, * html #menu :visited { background-position: 1px 0 }
-
-
-/* Drop Down Menus */
-.clear {clear:both}
-
-#nav {
-    margin:0;
-    padding:0;
-    list-style:none;
-}
-
-/* make the LI display inline */
-/* it's position relative so that position absolute */
-/* can be used in submenu */
-
-#nav li {
-display:inline-block;
-position:relative;
-z-index:500;
-}
-
-/* this is the parent menu */
-#nav li a {
-display:block;
-text-align:center;
-}
-
-/* you can make a different style for default selected value */
-#nav a.selected {
-color:#FFF;
-}
-
-/* submenu, it's hidden by default */
-#nav ul {
-    position:absolute;
-    left:0;
-    display:none;
-    margin:0 0 0 -2px;
-    padding:0;
-    list-style: none outside none;
-    border-left:2px solid #6a0307;
-    border-right:2px solid #6a0307;
-    border-bottom:2px solid #6a0307;
-    background-color: #6a0307;
-    color: #FFF;
-}
-
-#nav ul li {
-    width:100px;
-    float:left;
-    border-bottom:0px solid #fff;
-}
-
-/* display block will make the link fill the whole area of LI */
-#nav ul a {
-    display:block;
-    height:15px;
-    padding: 5px 5px;
-    font-size: 11px;
-    text-align:left;
-    -webkit-border-top-left-radius:0px 0px;
-    moz-border-radius-topleft: 0px 0px;
-    border-top-left-radius: 0px 0px;
-    -webkit-border-top-right-radius:0px 0px;
-    moz-border-radius-topright: 0px 0px;
-    border-top-right-radius: 0px 0px;
-    border-bottom-width: 0px;
-}
-
-#nav ul a:hover {
-    background-color: #FFF ;
-    color: #6a0307 ;
-}
-
-#nav ul a:active {
-    background-color: #FFF;
-    color: #6a0307 ;
-}
-
-
-
-/* Footer (borrowed from Trac) */
-#footer {
-    background: #6a0307;
-    clear: both;
-    color: #FFF;
-    font-size: 10px;
-    border-top: 1px solid;
-    height: 31px;
-    padding: 0.5em 0.5em 1.1em 0.5em;
-    margin-top: 2.5em;
-}
-#footer :link, #footer :visited { color: #FFF; }
-#footer hr { display: none }
-#footer #telemeta_powered { border: 0; float: left }
-#footer #telemeta_powered:hover { background: transparent }
-#footer p { margin: 0; }
-#footer p.left {
-    float: left;
-    margin-left: 1em;
-    padding: 0 1em;
-    border-left: 1px solid #d7d7d7;
-    border-right: 1px solid #d7d7d7;
-}
-#footer p.right {
-    float: right;
-    text-align: right;
-}
-#footer p.center {
-    text-align: center;
-}
-
-/* Homepage */
-.homelinks a { font-size: 120%;}
-
-
-/* Definition list */
-dl {
-    position: relative;
-    margin: .5em 0;
-}
-dl dt, dl dd {
-    position: relative;
-    margin: 0;
-    margin-bottom: .5em;
-    padding: 0;
-    font-size: 0.8em;
-    line-height: 1.4em;
-    min-height: 1.4em;
-}
-dl dd {
-    border: 1px solid transparent;
-}
-dl dt {
-    float: left;
-    clear: left;
-}
-
-dl.listing dt {
-    width: 18em;
-    background-color: #f9f9f9;
-    border: .1em solid #eee;
-    border-right: .3em solid #ddd;
-    padding-left: .3em;
-    margin-right: .8em;
-    color: #444;
-}
-dl.listing dt.group {
-    float: none;
-    margin-top: .9em;
-    background-color: #DDDDDD;
-    border-color: #ccc;
-    border-right: .1em solid #ccc;
-    width: 18.2em;
-}
-dl.listing dd {
-    margin-left: 19.4em;
-    font-weight: bold;
-}
-
-/* dublin core display */
-h4.dublincore {
-    text-align: left;
-    padding: 5px 0 10px;
-    font-weight: bold;
-    color: #666;
-}
-dl.dublincore dt {
-    margin-right: .8em;
-    width: 23em !important;
-    font-style: italic;
-}
-dl.dublincore dd {
-    margin-left: 23.4em;
-    font-weight: bold;
-}
-dl.dublincore dt span {
-    width: 13em;
-    display: block;
-    float: left;
-    font-style: normal;
-    background-color: #f9f9f9;
-    border: 1px solid #eee;
-    border-right: 3px solid #ddd;
-    padding-left: .3em;
-    margin-right: 1.2em;
-    color: #444;
-}
-dl.dublincore .caption {
-    background-color: #B8B7C1;
-    margin: .5em 0;
-    margin-top: 0;
-    border-bottom: 1px dotted #666;
-    padding-top: .4em;
-    padding-bottom: .4em;
-    padding-left: .3em;
-    color: #fff;
-    font-weight: bold;
-    border-right: 1px solid #fff;
-}
-dl.dublincore dt.caption span {
-    background-color: #B8B7C1;
-    border: none;
-    border-right: 1px solid #fff;
-    color: #fff;
-}
-dl.dublincore dd.caption {
-    padding-top: .3em;
-    padding-left: .4em;
-    margin-left: 23.4em;
-}
-
-/* infos item/collection */
-.infos, .extraInfos {
-    margin-bottom: 15px;
-}
-
-.infos dl, .infos table {
-    position: relative;
-    font-size: 105%;
-}
-
-.extraInfos dl, .extraInfos table {
-    position: relative;
-    font-size: 105%;
-}
-
-.extraInfos div {
-    padding: 0;
-    margin-bottom: 5px;
-}
-.extraInfos .nett {
-    position: relative;
-    height: 0;
-    margin-bottom: -5px;
-}
-.extraInfos h4 {
-    /* clear: both; */
-    font-size: 1em;
-    line-height: 1.4em;
-    border-bottom: 1px dotted #aaa;
-    color: #6a0307;
-}
-.with-rightcol .extraInfos h4 {
-    margin-right: 395px;
-}
-
-.extraInfos h4 a {
-    position: relative;
-    display: block;
-    color: #6a0307 !important;
-    text-decoration: none;
-    margin: 0;
-    background: #fff url(more.png) no-repeat left top;
-    background-position: 0 -16px;
-    padding-bottom: 2px;
-    padding-left: 16px;
-    border-bottom: none !important;
-    outline: none;
-}
-.extraInfos h4 a:hover {
-    background-color: transparent;
-    border-bottom: none;
-    color: #6a0307 !important;
-    text-decoration:none;
-}
-.extraInfos .folded h4 {
-    border-bottom: none;
-}
-.extraInfos .folded h4 a {
-    background-position: 0 1px;
-}
-
-/* Pagination */
-.pagination {
-    margin-top: .7em;
-    margin-bottom: .3em;
-    padding: .3em 0;
-    font-size: 1em;
-    background-color: #fff;
-    border-bottom: 1px solid #aaa;
-    color: #333;
-    font-weight: bold;
-}
-.pagination a {
-    background-color: #fff;
-    border-bottom: none;
-    font-size: 1em;
-    padding: .3em;
-}
-
-/* Item instruments */
-div.instruments {
-    position: relative;
-    margin-left: -.7em;
-    margin-right: .5em;
-}
-table.instruments {
-    border: none;
-    border-collapse: separate;
-    /* width: 100%; */
-    border-spacing: .7em;
-}
-table.instruments td {
-    font-size: .8em;
-    padding: 0 .2em;
-}
-table.instruments thead td {
-    background-color: #F9F9F9;
-    border: .1em solid #E1E1E1;
-    border-bottom: .3em solid #E1E1E1;
-}
-table.instruments tbody td {
-    border-bottom: .1em solid #E1E1E1;
-}
-
-/* Styles for tabular listings (stolen from trac) */
-table.listing {
-
-    border-spacing: 0;
-}
-
-.fullpage table.listing {
-    width: 100%;
-    font-size: 105%;
-}
-
-table.listing th {
-    text-align: left;
-    padding: 0 14em .1em 0;
-    font-size: 1em;
-}
-table.listing th, table.listing td {
-    font-size: 0.8em;
-    border-bottom: 1px solid #dfdfdf;
-}
-table.listing thead { background: #e8eaf0 }
-table.listing thead th {
-    font-size: 0.9em;
-    padding: 3px .5em 3px;
-}
-table.listing thead th :link:hover, table.listing thead th :visited:hover {
-    background-color: transparent;
-}
-/*conflicts with buttons inside table*/
-/*table.listing a {
-    border: none;
-}*/
-table.listing thead th a {
-    padding-right: 12px;
-}
-table.listing th.asc a, table.listing th.desc a { font-weight: bold }
-table.listing th.asc a, table.listing th.desc a {
-    background-position: 100% 50%;
-    background-repeat: no-repeat;
-}
-table.listing th.asc a { background-image: url(../images/asc.png) }
-table.listing th.desc a { background-image: url(../images/desc.png) }
-table.listing tbody td, table.listing tbody th {
-    padding: .33em .5em;
-    vertical-align: top;
-    font-weight: normal;
-}
-table.listing tbody td {
-    font-weight: bold;
-}
-table.listing tbody td.tmp {
-    width: 100%;
-}
-table.listing tbody td a:hover, table.listing tbody th a:hover {
-    background-color: transparent;
-}
-table.listing tbody tr { border-top: 1px solid #ddd }
-table.listing tbody tr.even { background-color: #fcfcfc }
-table.listing tbody tr.odd { background-color: #f7f7f7 }
-table.listing tbody tr:hover { background: #f7f8fa !important }
-
-table td.error {
-    color: red;
-    font-weight: bold;
-}
-
-.infos li.error{
-    color: red;
-    font-weight: bold;
-    font-size: 110%;
-}
-
-.gmap {
-    border: solid 1px #888;
-    margin-top: 0.8em;
-}
-
-.rst-content {
-    padding-top: 5px;
-}
-
-.rst-content h1 {
-    color: #6a0307;
-}
-
-.rst-content img.align-left {
-    float: left;
-    margin-right: 2ex;
-    margin-top: 0.6ex;
-    margin-bottom: 0.5ex;
-}
-
-.rst-content img.align-right {
-    float: left;
-    margin-left: 2ex;
-    margin-top: 0.6ex;
-    margin-bottom: 0.5ex;
-}
-
-img.align-left {
-    float: left;
-    padding-bottom: 1ex;
-    padding-right: 1ex;
-}
-
-#content .rst-content ul,  #content .rst-content ol {
-    clear: none;
-    font-size: 1em;
-    margin-left: 0.4em;
-}
-
-#module-set {
-    float: right;
-    clear: right;
-}
-
-#module-set .module {
-    border: 1px solid #000;
-    background-image: url(../images/grid_bg.png);
-    padding: 0.3em 0.8em 0.8em 0.8em;
-    margin: 0 0 1.5em 1.5em;
-    -moz-border-radius: 8px 8px 8px 8px;
-    -webkit-border-radius: 8px 8px 8px 8px;
-    border-radius: 8px 8px 8px 8px;
-}
-
-#module-set .module h3 {
-    color: #FFF;
-    font-size: 1.1em;
-    font-weight: bold;
-}
-
-#module-set .module a:hover {
-    text-decoration: none;
-}
-
-a.image-link {
-    border: none;
-}
-
-.map-thumbnail {
-    border: solid 1px #999;
-}
-
-.home-content .module {
-    width: 400px;
-}
-
-.home-description {
-    padding-right: 33%;
-    display: block;
-}
-
-#content ul.playlist {
-    list-style-type: none;
-    border-top: solid 1px #e1e1e1;
-    margin: 0;
-    padding: 0;
-}
-
-#content ul.playlist li {
-    display: block;
-    border: solid 1px #e1e1e1;
-    border-top: 0;
-    background: white;
-    margin: 0;
-    padding: 1em;
-}
-
-
-.tab_unselected, .tab_unselected:hover, .tab_unselected:visited {
-    background-color: #cccccc;
-    font-weight: normal;
-    color: #333333;
-    border: 1px solid #cccccc;
-
-}
-.tab_selected, .tab_selected:hover, .tab_selected:visited {
-    background-color: #ffffff;
-    color: #000000;
-    font-weight: bold;
-    border-top: 1px solid #999999;
-    border-right: 1px solid #999999;
-    border-left: 1px solid #999999;
-    border-bottom: 1px solid #ffffff;
-
-}
-
-.tab, .tab:hover, .tab:visited{
-    margin-top: 1ex;
-    display: inline-block;
-    margin-left: 0px;
-    padding: 1ex;
-    -moz-border-radius: 1ex 1ex 0ex 0ex;  -webkit-border-radius: 1ex 1ex 0ex 0ex;  border-radius: 1ex 1ex 0ex 0ex;
-}
-
-.roundBorder4{
-    /*padding: 0.3em 0.8em 0.8em 0.8em;
-    margin: 0 0 1.5em 1.5em;*/
-
-    -moz-border-radius: 4px 4px 4px 4px;
-    -webkit-border-radius: 4px 4px 4px 4px;
-    border-radius: 4px 4px 4px 4px;
-}
-.roundBorder6{
-    /*padding: 0.3em 0.8em 0.8em 0.8em;
-    margin: 0 0 1.5em 1.5em;*/
-
-    -moz-border-radius: 6px 6px 6px 6px;
-    -webkit-border-radius: 6px 6px 6px 6px;
-    border-radius: 6px 6px 6px 6px;
-}
-.roundBorder8{
-    /*padding: 0.3em 0.8em 0.8em 0.8em;
-    margin: 0 0 1.5em 1.5em;*/
-
-    -moz-border-radius: 8px 8px 8px 8px;
-    -webkit-border-radius: 8px 8px 8px 8px;
-    border-radius: 8px 8px 8px 8px;
-}
-.roundBorder10{
-    /*padding: 0.3em 0.8em 0.8em 0.8em;
-    margin: 0 0 1.5em 1.5em;*/
-
-    -moz-border-radius: 10px 10px 10px 10px;
-    -webkit-border-radius:  10px 10px 10px 10px;
-    border-radius:  10px 10px 10px 10px;
-}
-
-.markersdivUneditable{
-    border: 0px !important;
-}
-
-.markerdiv div{
-    padding:0.7ex 1ex;
-}
-.markerdiv div[zero_top_padding]{ /*mathces any div with the attribute zero_top_padding set (whatever the value)*/
-                                  padding-top:0px;
-}
-.markerdiv div *{
-    vertical-align:middle;
-    font-family: sans-serif;
-}
-.markerdiv div input, .markerdiv div textarea{
-    margin:0px;
-    padding:2px;
-}
-.markerdiv .ts-marker{
-    background-image: url('../images/marker_tiny.png'); text-align: center; min-width:3ex;
-}
-.markerdiv .ts-marker, .markerdiv .markersdivOffset, .markerdiv .markersdivTitle, .markerdiv .markersdivAddPlaylist, .markerdiv .markersdivEdit{margin-right:.8ex;}
-.markerdiv div a, .markerdiv div a:visited, .markerdiv div a:hover{
-    display: inline-block; /*otherwise width and height do not work*/
-    background-repeat: no-repeat;
-    text-decoration: none;
-
-}
-.markerdiv .markersdivOffset, .markerdiv .markersdivOffset:hover, .markerdiv .markersdivOffset:visited{
-    color: #000;
-}
-.markerdiv .ts-marker, .markerdiv .ts-marker:hover, .markerdiv .ts-marker:visited{
-    font-family: monospace; background: #e65911;color: #FFF;padding-left: .3ex; padding-right:.3ex;
-}
-.markersdivDelete{    background-image: url('../images/del_marker.png');width:15px;height:2ex;background-repeat: no-repeat;}
-/*backfround-repeat is redundant with .markerDiv a,.. defined above but this way .markersDivDelete is re-usable in other context (eg popupdiv*/
-.markersdivAddPlaylist{    background-image: url('../images/add_playlist_marker.png');width:13px;height:2ex; }
-.markersdivTitle{    font-weight:bold;}
-.markersdivEdit, .markersdivEdit:hover, .markersdivEdit:visited{
-    line-height: normal;
-    color:#000;
-    background-position: -2px center;
-    padding-left: 13px; padding-right: 2px;
-    font-size: 65%;
-    border:2px solid #666;
-    background-color: #fff;
-    background-image: url('../images/edit_marker.png');
-    -moz-border-radius: 1ex; -webkit-border-radius: 1ex; border-radius: 1ex;
-}
-.markersdivSave, .markersdivSave:hover, .markersdivSave:visited{
-    background-color: #087714;
-    color: #fff;
-    font-weight: bold;
-    padding:.7ex; padding-left: 20px;
-    background-position: 5px center;
-    -moz-border-radius: 1ex;-webkit-border-radius: 1ex;border-radius: 1ex;
-    background-image: url('../images/ok.png');
-}
-.markerdiv{
-    border: 1px solid #aaaaaa;
-    margin-bottom: 1ex;
-    -moz-border-radius: 1e;
-    -webkit-border-radius: 1ex;
-    border-radius: 1ex;
-}
-
-/*----------------------------------*/
-.component, .component_icon, .component:hover, .component_icon:hover, .component:visited, .component_icon:visited{
-    background-position: 1ex .5ex;
-    -moz-border-radius: 1ex 1ex 1ex 1ex;
-    -webkit-border-radius: 1ex 1ex 1ex 1ex;
-    border-radius: 1ex 1ex 1ex 1ex;
-    padding:.7ex .7ex .7ex .7ex;
-    background-color:  #f9f9f9; /*#626262;*/
-    color:#444;
-    text-decoration: none;
-    margin:0;
-}
-.component + .component, .component + .component_icon, .component_icon + .component ,
-.component_icon + .component_icon{
-    margin-left: .1ex;
-}
-
-.component_icon, .component_icon:hover, .component_icon:visited{
-    background-repeat: no-repeat;
-    background-position: 1ex .5ex;
-    padding:4px 8px 4px 26px; /*top right bottom left - last value depends on the icon size (default=16)*/
-}
-
-.button,  .button:visited, .button:hover{
-    font-weight: bold;
-    border:  1px solid #e1e1e1;
-    white-space:nowrap;
-    /*    border-top:  1px solid #e1e1e1 !important;
-        border-left:  1px solid #e1e1e1 !important;
-        border-right:  1px solid #e1e1e1 !important;
-        border-bottom:  1px solid #e1e1e1 !important;*/
-}
-
-.button:hover{
-    border-top:  1px solid #f9f9f9 !important;
-    border-left:  1px solid #f9f9f9 !important;
-    border-bottom:  1px solid #999 !important;
-    border-right:  1px solid #999 !important;
-    background-color:  #f4f4f4; /*#e9e9d9;*/
-    color: #000; /*#6A0307;*/
-}
-
-
-.list_item, .list_item:visited, .list_item:hover{
-    display:block;
-    color:#6A0307;
-}
-
-.list_item:hover{
-    font-weight: bold;
-}
-
-.icon_edit{
-    background-image: url('../images/edit_page.png');
-}
-.icon_copy{
-    background-image: url('../images/copy_page.png');
-}
-.icon_previous{
-    background-image: url('../images/previous.png');
-}
-.icon_next{
-    background-image: url('../images/next.png');
-}
-.icon_dublin_core{
-    background-image: url('../images/dublin_core.png');
-}
-.icon_cancel{
-    background-image: url('../images/cancel.png');
-}
-.icon_save{
-    background-image: url('../images/save.png');
-}
-.icon_add{
-    background-image: url('../images/add.png');
-}
-.icon_add_to_playlist{
-    background-image: url('../images/add_to_playlist.png');
-}
-.icon_login{
-    background-image: url('../images/password.png');
-}
-.icon_search{
-    background-image: url('../images/find.png');
-}
-.icon_ok{
-    background-image: url('../images/ok.png');
-}
-.icon_csv{
-    background-image: url('../images/csv.png');
-}
-.icon_playlist{
-    background-image: url('../images/playlist.png');
-}
-.icon_filter{
-    background-image: url('../images/filter.png');
-}
-.icon_delete{
-    background-image: url('../images/delete.png');
-}
-.icon_rss,.icon_rss:hover{
-    background: url('../images/feed-icon-14x14.png') no-repeat;
-    background-position: 0ex .8ex;
-    padding:.0ex 0ex .8ex .7ex;
-    text-decoration: none;
-}
-
-.addToPlaylist {
-    margin:0.5ex;
-    position: absolute;
-    display:none;
-    left: 0;
-    top: 0;
-}
-
-/* FORMS */
-#id_title {
-    width: 500px;
-}
-#id_alt_title {
-    width: 500px;
-}
-#id_collector {
-    width: 500px;
-}
-#id_creator {
-    width: 500px;
-}
-#id_cultural_area {
-    width: 500px;
-}
-#id_location_comment {
-    width: 500px;
-}
-#id_old_code {
-    width: 500px;
-}
-#id_code {
-    width: 500px;
-}
-#id_author {
-    width: 500px;
-}
-#id_collector_selection {
-    width: 500px;
-}
-#id_booklet_author {
-    width: 500px;
-}
-#id_alt_ids {
-    width: 500px;
-}
-#id_travail {
-    width: 500px;
-}
-#id_value_add {
-    width: 200px;
-}
-#id_value_edit {
-    width: 500px;
-}
-#id_file {
-    width: 500px;
-}
-#id_conservation_site {
-    width: 500px;
-}
-
-/*focus on elements*/
-a:focus,div:focus{
-    -moz-outline: 1px dotted #999  !important;
-    outline: #999 dotted 1px;  /*!important;*/
-}
-input,textarea{
-    outline: none !important;
-}
-
-.related_media {
-    border-top: 1px dotted #6a0307;
-}
diff --git a/telemeta/htdocs/css/telemeta_ie.css b/telemeta/htdocs/css/telemeta_ie.css
deleted file mode 100644 (file)
index f9c46d6..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-dl.listing, #rightcol {\r
-    margin-top: .4em;\r
-}\r
-dl.listing dd {\r
-    margin-top: .2em;\r
-}\r
-dl dd {\r
-    border-color: #fff;\r
-}\r
-dl.dublincore dd.caption {\r
-    margin-top: -.1em;\r
-}\r
-div.instruments {\r
-    margin-left: -.1em;\r
-    margin-right: .9em;\r
-}\r
-\r
diff --git a/telemeta/htdocs/css/telemeta_ie6.css b/telemeta/htdocs/css/telemeta_ie6.css
deleted file mode 100644 (file)
index 4b3fb5f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-/* Min-width */\r
-/*#submenu h3, #submenu div {\r
-    height: 1.6em;\r
-}*/\r
diff --git a/telemeta/htdocs/images/add.png b/telemeta/htdocs/images/add.png
deleted file mode 100644 (file)
index fe07994..0000000
Binary files a/telemeta/htdocs/images/add.png and /dev/null differ
diff --git a/telemeta/htdocs/images/add_playlist_marker.png b/telemeta/htdocs/images/add_playlist_marker.png
deleted file mode 100644 (file)
index 0915815..0000000
Binary files a/telemeta/htdocs/images/add_playlist_marker.png and /dev/null differ
diff --git a/telemeta/htdocs/images/add_to_playlist.png b/telemeta/htdocs/images/add_to_playlist.png
deleted file mode 100644 (file)
index 8431237..0000000
Binary files a/telemeta/htdocs/images/add_to_playlist.png and /dev/null differ
diff --git a/telemeta/htdocs/images/admin_red.png b/telemeta/htdocs/images/admin_red.png
deleted file mode 100644 (file)
index 4c952ff..0000000
Binary files a/telemeta/htdocs/images/admin_red.png and /dev/null differ
diff --git a/telemeta/htdocs/images/admin_wh.png b/telemeta/htdocs/images/admin_wh.png
deleted file mode 100644 (file)
index 3792339..0000000
Binary files a/telemeta/htdocs/images/admin_wh.png and /dev/null differ
diff --git a/telemeta/htdocs/images/adv_search_red.png b/telemeta/htdocs/images/adv_search_red.png
deleted file mode 100644 (file)
index c4d69e8..0000000
Binary files a/telemeta/htdocs/images/adv_search_red.png and /dev/null differ
diff --git a/telemeta/htdocs/images/adv_search_wh.png b/telemeta/htdocs/images/adv_search_wh.png
deleted file mode 100644 (file)
index 09c2e4c..0000000
Binary files a/telemeta/htdocs/images/adv_search_wh.png and /dev/null differ
diff --git a/telemeta/htdocs/images/asc.png b/telemeta/htdocs/images/asc.png
deleted file mode 100644 (file)
index 486b731..0000000
Binary files a/telemeta/htdocs/images/asc.png and /dev/null differ
diff --git a/telemeta/htdocs/images/bg_yt.png b/telemeta/htdocs/images/bg_yt.png
deleted file mode 100644 (file)
index a211953..0000000
Binary files a/telemeta/htdocs/images/bg_yt.png and /dev/null differ
diff --git a/telemeta/htdocs/images/cancel.png b/telemeta/htdocs/images/cancel.png
deleted file mode 100644 (file)
index 0ad2eb2..0000000
Binary files a/telemeta/htdocs/images/cancel.png and /dev/null differ
diff --git a/telemeta/htdocs/images/close.png b/telemeta/htdocs/images/close.png
deleted file mode 100644 (file)
index ca83794..0000000
Binary files a/telemeta/htdocs/images/close.png and /dev/null differ
diff --git a/telemeta/htdocs/images/collections_red.png b/telemeta/htdocs/images/collections_red.png
deleted file mode 100644 (file)
index b65328d..0000000
Binary files a/telemeta/htdocs/images/collections_red.png and /dev/null differ
diff --git a/telemeta/htdocs/images/collections_wh.png b/telemeta/htdocs/images/collections_wh.png
deleted file mode 100644 (file)
index bebb9f6..0000000
Binary files a/telemeta/htdocs/images/collections_wh.png and /dev/null differ
diff --git a/telemeta/htdocs/images/copy_page.png b/telemeta/htdocs/images/copy_page.png
deleted file mode 100644 (file)
index c600e99..0000000
Binary files a/telemeta/htdocs/images/copy_page.png and /dev/null differ
diff --git a/telemeta/htdocs/images/corpus.png b/telemeta/htdocs/images/corpus.png
deleted file mode 100644 (file)
index 6b0f371..0000000
Binary files a/telemeta/htdocs/images/corpus.png and /dev/null differ
diff --git a/telemeta/htdocs/images/csv.png b/telemeta/htdocs/images/csv.png
deleted file mode 100644 (file)
index c901266..0000000
Binary files a/telemeta/htdocs/images/csv.png and /dev/null differ
diff --git a/telemeta/htdocs/images/del_marker.png b/telemeta/htdocs/images/del_marker.png
deleted file mode 100644 (file)
index 5055a0f..0000000
Binary files a/telemeta/htdocs/images/del_marker.png and /dev/null differ
diff --git a/telemeta/htdocs/images/delete.png b/telemeta/htdocs/images/delete.png
deleted file mode 100644 (file)
index 5a3c05d..0000000
Binary files a/telemeta/htdocs/images/delete.png and /dev/null differ
diff --git a/telemeta/htdocs/images/desc.png b/telemeta/htdocs/images/desc.png
deleted file mode 100644 (file)
index 2070185..0000000
Binary files a/telemeta/htdocs/images/desc.png and /dev/null differ
diff --git a/telemeta/htdocs/images/dialog-error.png b/telemeta/htdocs/images/dialog-error.png
deleted file mode 100644 (file)
index a296fef..0000000
Binary files a/telemeta/htdocs/images/dialog-error.png and /dev/null differ
diff --git a/telemeta/htdocs/images/document-edit.png b/telemeta/htdocs/images/document-edit.png
deleted file mode 100644 (file)
index 4e51256..0000000
Binary files a/telemeta/htdocs/images/document-edit.png and /dev/null differ
diff --git a/telemeta/htdocs/images/dots.gif b/telemeta/htdocs/images/dots.gif
deleted file mode 100644 (file)
index c6ae052..0000000
Binary files a/telemeta/htdocs/images/dots.gif and /dev/null differ
diff --git a/telemeta/htdocs/images/download.png b/telemeta/htdocs/images/download.png
deleted file mode 100644 (file)
index 4f7a3c2..0000000
Binary files a/telemeta/htdocs/images/download.png and /dev/null differ
diff --git a/telemeta/htdocs/images/dublin_core.png b/telemeta/htdocs/images/dublin_core.png
deleted file mode 100644 (file)
index d53e56e..0000000
Binary files a/telemeta/htdocs/images/dublin_core.png and /dev/null differ
diff --git a/telemeta/htdocs/images/edit_cancel.png b/telemeta/htdocs/images/edit_cancel.png
deleted file mode 100644 (file)
index ebd4b9d..0000000
Binary files a/telemeta/htdocs/images/edit_cancel.png and /dev/null differ
diff --git a/telemeta/htdocs/images/edit_marker.png b/telemeta/htdocs/images/edit_marker.png
deleted file mode 100644 (file)
index 277a900..0000000
Binary files a/telemeta/htdocs/images/edit_marker.png and /dev/null differ
diff --git a/telemeta/htdocs/images/edit_page.png b/telemeta/htdocs/images/edit_page.png
deleted file mode 100644 (file)
index 98713ac..0000000
Binary files a/telemeta/htdocs/images/edit_page.png and /dev/null differ
diff --git a/telemeta/htdocs/images/favicon.ico b/telemeta/htdocs/images/favicon.ico
deleted file mode 100644 (file)
index 46ec3e2..0000000
Binary files a/telemeta/htdocs/images/favicon.ico and /dev/null differ
diff --git a/telemeta/htdocs/images/feed-icon-14x14.png b/telemeta/htdocs/images/feed-icon-14x14.png
deleted file mode 100755 (executable)
index b3c949d..0000000
Binary files a/telemeta/htdocs/images/feed-icon-14x14.png and /dev/null differ
diff --git a/telemeta/htdocs/images/feed-icon-28x28.png b/telemeta/htdocs/images/feed-icon-28x28.png
deleted file mode 100755 (executable)
index d64c669..0000000
Binary files a/telemeta/htdocs/images/feed-icon-28x28.png and /dev/null differ
diff --git a/telemeta/htdocs/images/filter.png b/telemeta/htdocs/images/filter.png
deleted file mode 100644 (file)
index 9cabc5a..0000000
Binary files a/telemeta/htdocs/images/filter.png and /dev/null differ
diff --git a/telemeta/htdocs/images/find.png b/telemeta/htdocs/images/find.png
deleted file mode 100644 (file)
index 943e00b..0000000
Binary files a/telemeta/htdocs/images/find.png and /dev/null differ
diff --git a/telemeta/htdocs/images/flac.png b/telemeta/htdocs/images/flac.png
deleted file mode 100644 (file)
index 3cf1845..0000000
Binary files a/telemeta/htdocs/images/flac.png and /dev/null differ
diff --git a/telemeta/htdocs/images/fonds.png b/telemeta/htdocs/images/fonds.png
deleted file mode 100644 (file)
index 0f20201..0000000
Binary files a/telemeta/htdocs/images/fonds.png and /dev/null differ
diff --git a/telemeta/htdocs/images/geo_wh.png b/telemeta/htdocs/images/geo_wh.png
deleted file mode 100644 (file)
index b5d9646..0000000
Binary files a/telemeta/htdocs/images/geo_wh.png and /dev/null differ
diff --git a/telemeta/htdocs/images/grid_bg.png b/telemeta/htdocs/images/grid_bg.png
deleted file mode 100644 (file)
index c7760f5..0000000
Binary files a/telemeta/htdocs/images/grid_bg.png and /dev/null differ
diff --git a/telemeta/htdocs/images/grid_bg_2.png b/telemeta/htdocs/images/grid_bg_2.png
deleted file mode 100644 (file)
index 08e6c67..0000000
Binary files a/telemeta/htdocs/images/grid_bg_2.png and /dev/null differ
diff --git a/telemeta/htdocs/images/help.png b/telemeta/htdocs/images/help.png
deleted file mode 100644 (file)
index 0177a64..0000000
Binary files a/telemeta/htdocs/images/help.png and /dev/null differ
diff --git a/telemeta/htdocs/images/home_red.png b/telemeta/htdocs/images/home_red.png
deleted file mode 100644 (file)
index b5d9646..0000000
Binary files a/telemeta/htdocs/images/home_red.png and /dev/null differ
diff --git a/telemeta/htdocs/images/item.png b/telemeta/htdocs/images/item.png
deleted file mode 100644 (file)
index 3f173d5..0000000
Binary files a/telemeta/htdocs/images/item.png and /dev/null differ
diff --git a/telemeta/htdocs/images/item_collector.png b/telemeta/htdocs/images/item_collector.png
deleted file mode 100644 (file)
index 79b8f98..0000000
Binary files a/telemeta/htdocs/images/item_collector.png and /dev/null differ
diff --git a/telemeta/htdocs/images/item_duration.png b/telemeta/htdocs/images/item_duration.png
deleted file mode 100644 (file)
index 523ffb6..0000000
Binary files a/telemeta/htdocs/images/item_duration.png and /dev/null differ
diff --git a/telemeta/htdocs/images/item_flag.png b/telemeta/htdocs/images/item_flag.png
deleted file mode 100644 (file)
index 0032779..0000000
Binary files a/telemeta/htdocs/images/item_flag.png and /dev/null differ
diff --git a/telemeta/htdocs/images/item_title.png b/telemeta/htdocs/images/item_title.png
deleted file mode 100644 (file)
index 6afd789..0000000
Binary files a/telemeta/htdocs/images/item_title.png and /dev/null differ
diff --git a/telemeta/htdocs/images/logo-CNRS.png b/telemeta/htdocs/images/logo-CNRS.png
deleted file mode 100644 (file)
index 1d49bd1..0000000
Binary files a/telemeta/htdocs/images/logo-CNRS.png and /dev/null differ
diff --git a/telemeta/htdocs/images/logo-adonis.jpg b/telemeta/htdocs/images/logo-adonis.jpg
deleted file mode 100644 (file)
index 2e6bce3..0000000
Binary files a/telemeta/htdocs/images/logo-adonis.jpg and /dev/null differ
diff --git a/telemeta/htdocs/images/logo-mnhn.gif b/telemeta/htdocs/images/logo-mnhn.gif
deleted file mode 100644 (file)
index df01967..0000000
Binary files a/telemeta/htdocs/images/logo-mnhn.gif and /dev/null differ
diff --git a/telemeta/htdocs/images/logo.png b/telemeta/htdocs/images/logo.png
deleted file mode 100644 (file)
index 430231a..0000000
Binary files a/telemeta/htdocs/images/logo.png and /dev/null differ
diff --git a/telemeta/htdocs/images/logo_crem.png b/telemeta/htdocs/images/logo_crem.png
deleted file mode 100644 (file)
index 9438fb8..0000000
Binary files a/telemeta/htdocs/images/logo_crem.png and /dev/null differ
diff --git a/telemeta/htdocs/images/logo_mcc_2.png b/telemeta/htdocs/images/logo_mcc_2.png
deleted file mode 100644 (file)
index 4be0384..0000000
Binary files a/telemeta/htdocs/images/logo_mcc_2.png and /dev/null differ
diff --git a/telemeta/htdocs/images/logo_mini.png b/telemeta/htdocs/images/logo_mini.png
deleted file mode 100644 (file)
index e834e70..0000000
Binary files a/telemeta/htdocs/images/logo_mini.png and /dev/null differ
diff --git a/telemeta/htdocs/images/logo_mini_2.png b/telemeta/htdocs/images/logo_mini_2.png
deleted file mode 100644 (file)
index 15e1fb7..0000000
Binary files a/telemeta/htdocs/images/logo_mini_2.png and /dev/null differ
diff --git a/telemeta/htdocs/images/logo_mini_wh.png b/telemeta/htdocs/images/logo_mini_wh.png
deleted file mode 100644 (file)
index 9ef05cb..0000000
Binary files a/telemeta/htdocs/images/logo_mini_wh.png and /dev/null differ
diff --git a/telemeta/htdocs/images/logo_only.png b/telemeta/htdocs/images/logo_only.png
deleted file mode 100644 (file)
index 1f043ce..0000000
Binary files a/telemeta/htdocs/images/logo_only.png and /dev/null differ
diff --git a/telemeta/htdocs/images/logo_only_22.png b/telemeta/htdocs/images/logo_only_22.png
deleted file mode 100644 (file)
index 68cc1cc..0000000
Binary files a/telemeta/htdocs/images/logo_only_22.png and /dev/null differ
diff --git a/telemeta/htdocs/images/logo_only_22_cont.png b/telemeta/htdocs/images/logo_only_22_cont.png
deleted file mode 100644 (file)
index fb002fa..0000000
Binary files a/telemeta/htdocs/images/logo_only_22_cont.png and /dev/null differ
diff --git a/telemeta/htdocs/images/logo_only_22_nb.png b/telemeta/htdocs/images/logo_only_22_nb.png
deleted file mode 100644 (file)
index ff19a2f..0000000
Binary files a/telemeta/htdocs/images/logo_only_22_nb.png and /dev/null differ
diff --git a/telemeta/htdocs/images/logo_only_52.png b/telemeta/htdocs/images/logo_only_52.png
deleted file mode 100644 (file)
index 558bcda..0000000
Binary files a/telemeta/htdocs/images/logo_only_52.png and /dev/null differ
diff --git a/telemeta/htdocs/images/logo_telemeta_2.png b/telemeta/htdocs/images/logo_telemeta_2.png
deleted file mode 100644 (file)
index 62cec47..0000000
Binary files a/telemeta/htdocs/images/logo_telemeta_2.png and /dev/null differ
diff --git a/telemeta/htdocs/images/logout.png b/telemeta/htdocs/images/logout.png
deleted file mode 100644 (file)
index 51ed2dc..0000000
Binary files a/telemeta/htdocs/images/logout.png and /dev/null differ
diff --git a/telemeta/htdocs/images/map_thumbnail.png b/telemeta/htdocs/images/map_thumbnail.png
deleted file mode 100644 (file)
index 38954ef..0000000
Binary files a/telemeta/htdocs/images/map_thumbnail.png and /dev/null differ
diff --git a/telemeta/htdocs/images/marker_ok_green.png b/telemeta/htdocs/images/marker_ok_green.png
deleted file mode 100644 (file)
index be467ce..0000000
Binary files a/telemeta/htdocs/images/marker_ok_green.png and /dev/null differ
diff --git a/telemeta/htdocs/images/marker_tiny.png b/telemeta/htdocs/images/marker_tiny.png
deleted file mode 100644 (file)
index 925ec14..0000000
Binary files a/telemeta/htdocs/images/marker_tiny.png and /dev/null differ
diff --git a/telemeta/htdocs/images/maximize.gif b/telemeta/htdocs/images/maximize.gif
deleted file mode 100644 (file)
index 524acd0..0000000
Binary files a/telemeta/htdocs/images/maximize.gif and /dev/null differ
diff --git a/telemeta/htdocs/images/maximize.png b/telemeta/htdocs/images/maximize.png
deleted file mode 100644 (file)
index ee95226..0000000
Binary files a/telemeta/htdocs/images/maximize.png and /dev/null differ
diff --git a/telemeta/htdocs/images/maximize_old.gif b/telemeta/htdocs/images/maximize_old.gif
deleted file mode 100644 (file)
index 524acd0..0000000
Binary files a/telemeta/htdocs/images/maximize_old.gif and /dev/null differ
diff --git a/telemeta/htdocs/images/maximize_old.png b/telemeta/htdocs/images/maximize_old.png
deleted file mode 100644 (file)
index 4cb4d62..0000000
Binary files a/telemeta/htdocs/images/maximize_old.png and /dev/null differ
diff --git a/telemeta/htdocs/images/media-record.png b/telemeta/htdocs/images/media-record.png
deleted file mode 100644 (file)
index 1dc4efd..0000000
Binary files a/telemeta/htdocs/images/media-record.png and /dev/null differ
diff --git a/telemeta/htdocs/images/minus.png b/telemeta/htdocs/images/minus.png
deleted file mode 100644 (file)
index 116a9c9..0000000
Binary files a/telemeta/htdocs/images/minus.png and /dev/null differ
diff --git a/telemeta/htdocs/images/module_playlist.png b/telemeta/htdocs/images/module_playlist.png
deleted file mode 100644 (file)
index e92f614..0000000
Binary files a/telemeta/htdocs/images/module_playlist.png and /dev/null differ
diff --git a/telemeta/htdocs/images/module_world.png b/telemeta/htdocs/images/module_world.png
deleted file mode 100644 (file)
index c1c699d..0000000
Binary files a/telemeta/htdocs/images/module_world.png and /dev/null differ
diff --git a/telemeta/htdocs/images/mp3.png b/telemeta/htdocs/images/mp3.png
deleted file mode 100644 (file)
index f6e95b3..0000000
Binary files a/telemeta/htdocs/images/mp3.png and /dev/null differ
diff --git a/telemeta/htdocs/images/next.png b/telemeta/htdocs/images/next.png
deleted file mode 100644 (file)
index e9cbecd..0000000
Binary files a/telemeta/htdocs/images/next.png and /dev/null differ
diff --git a/telemeta/htdocs/images/ogg.png b/telemeta/htdocs/images/ogg.png
deleted file mode 100644 (file)
index b63fcf4..0000000
Binary files a/telemeta/htdocs/images/ogg.png and /dev/null differ
diff --git a/telemeta/htdocs/images/ok.png b/telemeta/htdocs/images/ok.png
deleted file mode 100644 (file)
index 543710f..0000000
Binary files a/telemeta/htdocs/images/ok.png and /dev/null differ
diff --git a/telemeta/htdocs/images/password.png b/telemeta/htdocs/images/password.png
deleted file mode 100644 (file)
index 192b6f7..0000000
Binary files a/telemeta/htdocs/images/password.png and /dev/null differ
diff --git a/telemeta/htdocs/images/player_controlbg.png b/telemeta/htdocs/images/player_controlbg.png
deleted file mode 100755 (executable)
index edaf9fc..0000000
Binary files a/telemeta/htdocs/images/player_controlbg.png and /dev/null differ
diff --git a/telemeta/htdocs/images/playlist.png b/telemeta/htdocs/images/playlist.png
deleted file mode 100644 (file)
index 7330bc5..0000000
Binary files a/telemeta/htdocs/images/playlist.png and /dev/null differ
diff --git a/telemeta/htdocs/images/playlist_title.png b/telemeta/htdocs/images/playlist_title.png
deleted file mode 100644 (file)
index 5e30362..0000000
Binary files a/telemeta/htdocs/images/playlist_title.png and /dev/null differ
diff --git a/telemeta/htdocs/images/plots.png b/telemeta/htdocs/images/plots.png
deleted file mode 100644 (file)
index 311c95e..0000000
Binary files a/telemeta/htdocs/images/plots.png and /dev/null differ
diff --git a/telemeta/htdocs/images/plus.png b/telemeta/htdocs/images/plus.png
deleted file mode 100644 (file)
index 9e8caf4..0000000
Binary files a/telemeta/htdocs/images/plus.png and /dev/null differ
diff --git a/telemeta/htdocs/images/previous.png b/telemeta/htdocs/images/previous.png
deleted file mode 100644 (file)
index 52fa887..0000000
Binary files a/telemeta/htdocs/images/previous.png and /dev/null differ
diff --git a/telemeta/htdocs/images/rss.png b/telemeta/htdocs/images/rss.png
deleted file mode 100644 (file)
index 4cd49c3..0000000
Binary files a/telemeta/htdocs/images/rss.png and /dev/null differ
diff --git a/telemeta/htdocs/images/rss_red.png b/telemeta/htdocs/images/rss_red.png
deleted file mode 100644 (file)
index 5596219..0000000
Binary files a/telemeta/htdocs/images/rss_red.png and /dev/null differ
diff --git a/telemeta/htdocs/images/save.png b/telemeta/htdocs/images/save.png
deleted file mode 100644 (file)
index afc8725..0000000
Binary files a/telemeta/htdocs/images/save.png and /dev/null differ
diff --git a/telemeta/htdocs/images/save_changes.png b/telemeta/htdocs/images/save_changes.png
deleted file mode 100644 (file)
index 9a139b0..0000000
Binary files a/telemeta/htdocs/images/save_changes.png and /dev/null differ
diff --git a/telemeta/htdocs/images/search_red.png b/telemeta/htdocs/images/search_red.png
deleted file mode 100644 (file)
index 54ab50c..0000000
Binary files a/telemeta/htdocs/images/search_red.png and /dev/null differ
diff --git a/telemeta/htdocs/images/search_wh.png b/telemeta/htdocs/images/search_wh.png
deleted file mode 100644 (file)
index 2850239..0000000
Binary files a/telemeta/htdocs/images/search_wh.png and /dev/null differ
diff --git a/telemeta/htdocs/images/search_wh2.png b/telemeta/htdocs/images/search_wh2.png
deleted file mode 100644 (file)
index 054af8d..0000000
Binary files a/telemeta/htdocs/images/search_wh2.png and /dev/null differ
diff --git a/telemeta/htdocs/images/share.png b/telemeta/htdocs/images/share.png
deleted file mode 100644 (file)
index 02838a9..0000000
Binary files a/telemeta/htdocs/images/share.png and /dev/null differ
diff --git a/telemeta/htdocs/images/text-speak.png b/telemeta/htdocs/images/text-speak.png
deleted file mode 100644 (file)
index b31ebac..0000000
Binary files a/telemeta/htdocs/images/text-speak.png and /dev/null differ
diff --git a/telemeta/htdocs/images/topbar_gradient.png b/telemeta/htdocs/images/topbar_gradient.png
deleted file mode 100644 (file)
index d0605a3..0000000
Binary files a/telemeta/htdocs/images/topbar_gradient.png and /dev/null differ
diff --git a/telemeta/htdocs/images/topbar_gradient2.png b/telemeta/htdocs/images/topbar_gradient2.png
deleted file mode 100644 (file)
index 5f7ed4a..0000000
Binary files a/telemeta/htdocs/images/topbar_gradient2.png and /dev/null differ
diff --git a/telemeta/htdocs/images/transparent.png b/telemeta/htdocs/images/transparent.png
deleted file mode 100644 (file)
index e1ab124..0000000
Binary files a/telemeta/htdocs/images/transparent.png and /dev/null differ
diff --git a/telemeta/htdocs/images/tw_hd.png b/telemeta/htdocs/images/tw_hd.png
deleted file mode 100644 (file)
index 788068a..0000000
Binary files a/telemeta/htdocs/images/tw_hd.png and /dev/null differ
diff --git a/telemeta/htdocs/images/tw_hd_bg.png b/telemeta/htdocs/images/tw_hd_bg.png
deleted file mode 100644 (file)
index 4ad9e47..0000000
Binary files a/telemeta/htdocs/images/tw_hd_bg.png and /dev/null differ
diff --git a/telemeta/htdocs/images/user.png b/telemeta/htdocs/images/user.png
deleted file mode 100644 (file)
index 4f0c38a..0000000
Binary files a/telemeta/htdocs/images/user.png and /dev/null differ
diff --git a/telemeta/htdocs/images/user_red.png b/telemeta/htdocs/images/user_red.png
deleted file mode 100644 (file)
index 48fdc4c..0000000
Binary files a/telemeta/htdocs/images/user_red.png and /dev/null differ
diff --git a/telemeta/htdocs/images/user_tr.png b/telemeta/htdocs/images/user_tr.png
deleted file mode 100644 (file)
index 3dad868..0000000
Binary files a/telemeta/htdocs/images/user_tr.png and /dev/null differ
diff --git a/telemeta/htdocs/images/view-pim-notes.png b/telemeta/htdocs/images/view-pim-notes.png
deleted file mode 100644 (file)
index a89d6a0..0000000
Binary files a/telemeta/htdocs/images/view-pim-notes.png and /dev/null differ
diff --git a/telemeta/htdocs/images/visu_icon.png b/telemeta/htdocs/images/visu_icon.png
deleted file mode 100644 (file)
index 418b24b..0000000
Binary files a/telemeta/htdocs/images/visu_icon.png and /dev/null differ
diff --git a/telemeta/htdocs/images/vox.png b/telemeta/htdocs/images/vox.png
deleted file mode 100644 (file)
index 604e4ce..0000000
Binary files a/telemeta/htdocs/images/vox.png and /dev/null differ
diff --git a/telemeta/htdocs/images/vox_wh.png b/telemeta/htdocs/images/vox_wh.png
deleted file mode 100644 (file)
index e8de2da..0000000
Binary files a/telemeta/htdocs/images/vox_wh.png and /dev/null differ
diff --git a/telemeta/htdocs/images/wait.gif b/telemeta/htdocs/images/wait.gif
deleted file mode 100644 (file)
index 183fe6f..0000000
Binary files a/telemeta/htdocs/images/wait.gif and /dev/null differ
diff --git a/telemeta/htdocs/images/wait_small.gif b/telemeta/htdocs/images/wait_small.gif
deleted file mode 100644 (file)
index 155c8a5..0000000
Binary files a/telemeta/htdocs/images/wait_small.gif and /dev/null differ
diff --git a/telemeta/htdocs/images/wav.png b/telemeta/htdocs/images/wav.png
deleted file mode 100644 (file)
index 757933e..0000000
Binary files a/telemeta/htdocs/images/wav.png and /dev/null differ
diff --git a/telemeta/htdocs/images/waves.png b/telemeta/htdocs/images/waves.png
deleted file mode 100644 (file)
index 218b3e3..0000000
Binary files a/telemeta/htdocs/images/waves.png and /dev/null differ
diff --git a/telemeta/htdocs/images/webm.png b/telemeta/htdocs/images/webm.png
deleted file mode 100644 (file)
index c9be86f..0000000
Binary files a/telemeta/htdocs/images/webm.png and /dev/null differ
diff --git a/telemeta/htdocs/images/world2.png b/telemeta/htdocs/images/world2.png
deleted file mode 100644 (file)
index 39c3171..0000000
Binary files a/telemeta/htdocs/images/world2.png and /dev/null differ
diff --git a/telemeta/htdocs/images/world_red.png b/telemeta/htdocs/images/world_red.png
deleted file mode 100644 (file)
index 85ba76f..0000000
Binary files a/telemeta/htdocs/images/world_red.png and /dev/null differ
diff --git a/telemeta/htdocs/images/zoom2.png b/telemeta/htdocs/images/zoom2.png
deleted file mode 100644 (file)
index 494ffc6..0000000
Binary files a/telemeta/htdocs/images/zoom2.png and /dev/null differ
diff --git a/telemeta/htdocs/js/application.js b/telemeta/htdocs/js/application.js
deleted file mode 100644 (file)
index bde5903..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Guillaume Pellerin, Parisson
- * Copyright (c) 2011 Riccardo Zaccarelli <riccardo.zaccarelli@gmail.com>
- * Copyright (c) 2010 Olivier Guilyardi <olivier@samalyse.com>
- *
- * This file is part of TimeSide.
- *
- * TimeSide is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * TimeSide is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with TimeSide.  If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: Riccardo Zaccarelli <riccardo.zaccarelli@gmail.com>
- *          Olivier Guilyardi <olivier@samalyse.com>
- */
-
-/**
- * Class for telemeta global functions.
- * Note that the dollar sign is a reserved keyword in some browsers
- * (see http://davidwalsh.name/dollar-functions)
- * which might be in conflict with jQuery dollar sign.
- */
-
-//returns the full path of the current url location removing the last slash '/' followed by one or more '#', if any
-function urlNormalized(){
-    var sPath = window.location.href;
-    sPath = sPath.replace(/\/#*$/,"");
-    return sPath;
-}
-/**
- *sets up few stuff when the page is ready (see functions below it)
- */
-jQuery(document).ready(function() {
-    foldInfoBlocks();
-    setSelectedMenu();
-});
-
-/**
- *function inherited from old code, never touched. Guess fixes the click on the left data table, if any
- */
-function foldInfoBlocks() {
-    var $J = jQuery;
-    var extra = $J('.extraInfos');
-    extra.find('.folded dl, .folded table').css('display', 'none');
-    extra.find('h4').click(function() {
-        $J(this).parents('.extraInfos').children().toggleClass('folded').find('dl, table').toggle(100);
-        //toggle toggles the visibility of elements
-        return false;
-    });
-}
-
-/**
- * Global telemeta function which sets the current selected menu according to the current url
- */
-function setSelectedMenu(){
-    var $J = jQuery;
-    var menus = $J('#menu a');
-    //build collections/items from http:/site/collections/items,
-    //being http:/site/ = window.location.origin
-    
-    //function for normalizing paths (removes last n occurrences of the slash)
-    var normalize = function(str){
-        return str.replace(/\/+#*$/,"");
-    }
-    
-    var host = window.location.host;
-    var protocol = window.location.protocol
-    var href = normalize(window.location.href);
-     
-    if(!(host) || !(protocol) || !(href)){
-        return;
-    }
-
-    //var pageOrigin = normalize(window.location.origin); //does not exist in FF, so:
-    var pageOrigin = normalize(protocol+"//"+host);
-    var pageHref = normalize(href);
-
-    menus.each(function(){
-        ///if we are at home, the window location href corresponds to window location origin,
-        //so we select only links whose link points EXACTLY to the origin (home link)
-        var linkHref = normalize(this.href);
-        var elm = $J(this);
-
-        if(linkHref.indexOf("#") != -1){
-            var reg = new RegExp("[#]+", "g");
-            var baseHref = linkHref.split(reg);
-            linkHref = pageOrigin + "/" + baseHref[1]
-        }
-
-        if(pageOrigin===pageHref){
-            if(pageHref == linkHref){
-                elm.addClass('active');
-            }else{
-                elm.removeClass('active');
-            }
-        }else{
-            //here, on the other hand, we select if a link points to a page or super page
-            //of the current page
-            if(linkHref!=pageOrigin && pageHref.match("^"+linkHref+".*")){
-                elm.addClass('active');
-            }else{
-                elm.removeClass('active');
-            }
-        }
-        
-    })
-}
-
-
-
-
-/*****************************************************************************
- * json(param, method, onSuccesFcn(data, textStatus, jqXHR), onErrorFcn(jqXHR, textStatus, errorThrown))
- * global function to senbd/retrieve data with the server
- *
- * param: the data to be sent or retrieved.
- *   param will be converted to string, escaping quotes newlines and backslashes if necessary.
- *   param can be a javascript string, boolean, number, dictionary and array.
- *       If dictionary or array, it must contain only the above mentioned recognized types.
- *       So, eg, {[" a string"]} is fine, {[/asd/]} not
- *
- * method: the json method, eg "telemeta.update_marker". See base.py
- *
- * onSuccesFcn(data, textStatus, jqXHR) OPTIONAL --IF MISSING, NOTHING HAPPENS --
- *    A function to be called if the request succeeds with the same syntax of jQuery's ajax onSuccess function.
- *    The function gets passed three arguments
- *       The data returned from the server, formatted according to the dataType parameter;
- *       a string describing the status;
- *       and the jqXHR (in jQuery 1.4.x, XMLHttpRequest) object
- *
- * onErrorFcn(jqXHR, textStatus, errorThrown) OPTIONAL. --IF MISSING, THE DEFAULT ERROR DIALOG IS SHOWN--
- *     A function to be called if the request fails with the same syntax of jQuery ajax onError function..
- *     The function receives three arguments:
- *       The jqXHR (in jQuery 1.4.x, XMLHttpRequest) object,
- *       a string describing the type of error that occurred and
- *       an optional exception object, if one occurred.
- *       Possible values for the second argument (besides null) are "timeout", "error", "abort", and "parsererror".
- * ****************************************************************************/
-
-var json = function(param,method,onSuccessFcn,onErrorFcn){
-    //this function converts a javascript object to a string
-    var toString_ = function(string){
-        if(typeof string == "string"){
-            //escapes newlines quotes and backslashes
-            string = string.replace(/\\/g,"\\\\")
-            .replace(/\n/g,"\\n")
-            .replace(/"/g,"\\\"");
-        }
-        var array; //used for arrays and objects (see below)
-        if(typeof string == "boolean" || typeof string== "number" || typeof string == "string"){
-            string = '"'+string+'"';
-        }else if(string instanceof Array){
-            array = [];
-            for(var i = 0;i <string.length ; i++){
-                array.push(toString_(string[i])); //recursive invocation
-            }
-            string='[';
-            string+=array.join(",");
-            string+=']';
-        }else{
-            array = [];
-            for(var k in string){
-                array.push(toString_(k)+":"+toString_(string[k])); //recursive invocation
-            }
-            string='{';
-            string+=array.join(",");
-            string+='}';
-        }
-        return string;
-    };
-    
-    //creating the string to send. 
-    var param2string = toString_(param);
-    var data2send = '{"id":"jsonrpc", "params":';
-    data2send+=param2string;
-    data2send+=', "method":"'
-    data2send+=method;
-    data2send+='","jsonrpc":"1.0"}';
-    
-    var $J = jQuery;
-    $J.ajax({
-        type: "POST",
-        url: 'json/',
-        contentType: "application/json",
-        data: data2send,
-        dataType: "json",
-        success: function(data, textStatus, jqXHR){
-            if(onSuccessFcn){
-                onSuccessFcn(data, textStatus, jqXHR);
-            }
-        },
-        error: function(jqXHR, textStatus, errorThrown){
-            if(onErrorFcn){
-                onErrorFcn(jqXHR, textStatus, errorThrown);
-                return;
-            }
-            //default:
-            var details = "\n(no further info available)";
-            if(jqXHR) {
-                details="\nThe server responded witha status of "+jqXHR.status+" ("+
-                jqXHR.statusText+")\n\nDetails (request responseText):\n"+jqXHR.responseText;
-            }
-            alert("ERROR: Failed to save"+details);
-            
-        }
-    });
-
-};
-
-/**
- * function for writing to the console. Catches errors, if any (eg, console == undefined) and does nothing in case
- */
-function consolelog(text){
-    if(typeof console != 'undefined'){
-        var c = console;
-        if (c.log) {
-            c.log(text);
-        }
-    }
-}
-
-// Drop down menus
-
-$(document).ready(function () {
-     
-    $('#nav li').hover(
-        function () {
-            //show its submenu
-            $('ul', this).slideDown(200);
-        },
-        function () {
-            //hide its submenu
-            $('ul', this).slideUp(100);        
-        }
-    );
-     
-});
\ No newline at end of file
diff --git a/telemeta/htdocs/js/divmarker.js b/telemeta/htdocs/js/divmarker.js
deleted file mode 100644 (file)
index ed02710..0000000
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * Copyright (C) 2007-2011 Parisson
- * Copyright (c) 2011 Riccardo Zaccarelli <riccardo.zaccarelli@gmail.com>
- *
- * This file is part of TimeSide.
- *
- * TimeSide is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * TimeSide is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with TimeSide.  If not, see <http://www.gnu.org/licenses/>.
- *
- * Author: Riccardo Zaccarelli <riccardo.zaccarelli@gmail.com>
- */
-
-/**
- * Class representing a marker div html element for showing/editing a marker on details.
- */
-Timeside.classes.MarkerMapDiv = Timeside.classes.TimesideArray.extend({
-    init:function(containerDiv){
-        this._super();
-        var $J = this.$J;
-
-        var div = containerDiv instanceof $J ? containerDiv : $J(containerDiv);
-        div = div.length ? div.eq(0) : $J([]); //empty jQuery object
-        this.div = div
-    },
-    //overridden
-    add: function(marker, index,  isNew){
-       
-        var div = this.createMarkerDiv(index, marker);
-        if(index==this.length){
-            this.div.append(div);
-        }else{
-            this.$J( this.div.children()[index] ).before(div);
-        }
-        
-        this._super(div,index);
-        if(isNew){
-            this.setEditMode(index,true);
-        }
-        if(index<this.length){
-            //update indices. Note that this is NOT done at startup as index == this.length ALWAYS
-            var t = this;
-            var setIdx = t.setIndex;
-            this.each(index, function(i, div){
-                setIdx.apply(t,[div,i]);
-            });
-        }
-        this.stretch(div.find('.markersdivTitle'));
-        this.stretch(div.find('.markersdivDescription'));
-        return div;
-    },
-    //overridden. Do not call explicitly, use marker map.move
-    move: function(from, to, newOffset){
-        
-        //call super method
-        to = this._super(from,to);
-        if(to<0){
-            return -1;
-        }
-
-        //reflect the same changes in the document:
-        var me = this.toArray();
-        if(to!=from){
-            var div = me[to]; //me has already been updated
-            div.detach();
-            var parent = this.div;
-            if(to==this.length-1){
-                parent.append(div);
-            }else{
-                this.$J( parent.children()[to] ).before(div);
-            }
-        }
-
-        var t = this;
-        var setIdx = t.setIndex;
-
-        this.each(Math.min(from,to),Math.max(from,to)+1, function(i, div){
-            setIdx.apply(t,[div,i]);
-        });
-        this.setOffset(me[to],newOffset);
-
-        this.setEditMode(to,true);
-        return to;
-    },
-    //overridden
-    remove : function(index){
-        if(index<0 || index>=this.length){
-            return;
-        }
-        var div = this._super(index);
-        div.remove();
-        var me = this;
-        this.each(index,function(i, div){
-            me.setIndex.apply(me,[div,i]);
-        });
-    },
-    //overridden
-    makeTimeLabel: function(time){
-        return this._super(time,['hh','mm','ss','C']);
-    },
-    //overridden
-    clear: function(){
-        var divs = this._super();
-        for(var i=0; i< divs.length; i++){
-            divs[i].empty().remove();
-        }
-        return divs;
-    },
-    //if value is missing, toggles edit mode
-    //if editbutton is not present (marker not editable), this method does nothing
-    setEditMode: function(index, value){
-        
-        var div = this.toArray()[index];
-        var editButton = div.find('.markersdivEdit');
-        if(!((editButton) && (editButton.length))){
-            return;
-        }
-        var visible = editButton.is(':visible');
-
-        if(arguments.length==1){ //toggle
-            value = visible; //if edit visible, editmode = true, otherwise false
-        }else if(value!=visible){ 
-            //value is defined. if true and edit mode is NOT visible, we return cause we are already in edit mode
-            //same if false (dont edit) and edit mode is visible (not edit mode)
-            return;
-        }
-        var e_okButton = div.find('.markersdivSave');
-        var e_descriptionText = div.find('.markersdivDescription');
-        var e_titleText = div.find('.markersdivTitle');
-        var mas = div.find(".marker_author_span");
-        if(value){
-            div.css('backgroundColor','#E65911');
-            mas.css('color','#6a0307');
-            e_descriptionText.removeAttr('readonly').removeClass('markersdivUneditable');
-            e_titleText.removeAttr('readonly').removeClass('markersdivUneditable');
-            e_okButton.add(e_okButton.parent()).show(); //hiding also the parent div saves space (padding bottom hidden)
-            e_titleText.select(); 
-            editButton.hide();
-        }else{
-            e_descriptionText.attr('readonly','readonly').addClass('markersdivUneditable');
-            e_titleText.attr('readonly','readonly').addClass('markersdivUneditable');
-            e_okButton.add(e_okButton.parent()).hide(); //hiding also the parent div saves space (padding bottom hidden)
-            editButton.show();
-            div.css('backgroundColor','');
-            mas.css('color','#999'); //TODO: should be set in one declaration only. Change here and also in marker div creation
-        }
-
-        this.fire('edit',{'value':value, 'index':index});
-
-        this.stretch(e_titleText);
-    },
-
-
-    setIndex: function(div,index){
-        div.find('.ts-marker').html(index+1);
-        var me = this;
-        var e_indexLabel = div.find('.ts-marker');
-        var e_offsetLabel =div.find('.markersdivOffset');
-        e_indexLabel.add(e_offsetLabel).unbind('click').click(function(){
-            me.fire('focus', {
-                'index': index
-            });
-            return false;
-        });
-        div.find('.markersdivEdit').unbind('click').click( function(){
-            me.setEditMode(index);
-            return false; //avoid scrolling of the page on anchor click
-        });
-    },
-    /**
- * stretches jQueryElm the whole possible width. Note that text nodes are not considered!!!!
- */
-    stretch: function(jQueryElm){
-        var siblings = jQueryElm.siblings(":visible");
-        siblings = siblings.add(jQueryElm);
-        var spaceStretchable = jQueryElm.parent().width();
-        var $J = this.$J;
-        siblings.each(function(i,elm){
-            spaceStretchable -= $J(elm).outerWidth(true);
-        });
-        var w = jQueryElm.width() + spaceStretchable;
-        jQueryElm.css('width', w+'px');
-    },
-
-    setOffset: function(div,offset){
-        div.find('.markersdivOffset').html(this.makeTimeLabel(offset));
-    },
-    createMarkerDiv : function(index, marker){
-        //create html content. Use array.join cause it is usually faster than string concatenation:
-        var html_ = ['<div style="white-space:nowrap">', //whitespace no wrap is really important to keep all content of first div on one line (without it, IE displays it on 2 lines)
-        '<a href=# class="ts-marker"></a>',
-        '<a href=# class="markersdivOffset" type="text"></a>',
-        '<input class="markersdivTitle" type="text"/>',
-        '<a class="markersdivAddPlaylist" title="add to playlist"></a>',
-        '<a class="markersdivEdit" title="edit">EDIT</a>',
-        '<a class="markersdivDelete" title="delete"></a>',
-        '</div>',
-        '<div zero_top_padding><textarea class="markersdivDescription"></textarea></div>',
-        '<div zero_top_padding><a class="markersdivSave">OK</a></div>',
-        '<div zero_top_padding><span class="marker_author_span" style="font-size:75%;color:#999">'+gettrans('author')+': '+marker.author+'</span></div>'].join("");
-        var div = this.$J('<div/>').addClass("markerdiv").html(html_); //.attr('tabindex','0')
-        div.find('a').attr('href','#');
-        
-        var e_okButton = div.find('.markersdivSave');
-        var e_editButton = div.find('.markersdivEdit');
-        var e_deleteButton =  div.find('.markersdivDelete');
-        var e_addplaylistButton = div.find('.markersdivAddPlaylist');
-        var e_descriptionText = div.find('.markersdivDescription');
-        var e_titleText = div.find('.markersdivTitle');
-
-        //set defualt element values regardeless of the marker state (for debugging, comment it if not needed)
-        //e_indexLabel.attr('title',marker.toString());
-        this.setIndex(div, index);
-
-        this.setOffset(div,marker.offset);
-        
-        e_descriptionText.val(marker.desc ? marker.desc : "");
-        e_titleText.val(marker.title ? marker.title : "");
-        
-        e_okButton.add(e_okButton.parent()).hide(); //hiding also the parent div saves space (padding bottom hidden)
-        e_editButton.show();
-        e_deleteButton.show();
-        e_addplaylistButton.show();
-        e_descriptionText.attr('readonly','readonly').addClass('markersdivUneditable').unbind('focus');
-        e_titleText.attr('readonly','readonly').addClass('markersdivUneditable').unbind('focus');
-
-        
-        e_addplaylistButton.unbind('click').bind('click',function(evtObj_){
-            if(!marker.isSavedOnServer){
-                return false;
-            }
-            //make a request to the server to get the pk (id)
-            //note that marker.id (client side) is marker.public_id (server side)
-            json([marker.id],"telemeta.get_marker_id", function(data){
-                var id = data.result;
-                //TODO: we should not call global objects, rather pass them in the construcotr:
-                playlistUtils.showAddResourceToPlaylist(e_addplaylistButton,'marker',""+id,gettrans('marker added to the selected playlist'));
-            });
-            return false;
-        });
-
-        if(!marker.canBeAddedToPlaylist){
-            e_addplaylistButton.hide();
-        }
-
-        if(!marker.canBeSetEditable){ //marker is editable means that author is superuser or author == getCurrentUserName().
-            e_editButton.hide();
-            e_deleteButton.hide();
-            e_okButton.unbind('click')
-            e_deleteButton.unbind('click').hide();
-            e_editButton.remove(); //so that if edit button is not present, we do not edit (safety reasons) see this.setEditMode
-            return div;
-        }
-        
-        var me = this;
-
-        e_deleteButton.unbind('click').click( function(){
-            if(!(marker.isSavedOnServer) || confirm(gettrans('delete the marker permanently?'))){
-                me.fire('remove',{
-                    'marker':marker
-                });
-            }
-            return false; //avoid scrolling of the page on anchor click
-        });
-        
-        //action for ok button
-        e_okButton.unbind('click').click( function(){
-            //if(marker.desc !== descriptionText.val()){ //strict equality needed. See note below
-            marker.desc = e_descriptionText.val();
-            marker.title = e_titleText.val();
-            me.fire('save',{
-                'marker':marker
-            });
-            return false; //avoid scrolling of the page on anchor click
-        });
-
-
-        e_titleText.keydown(function(event){
-            if(e_okButton.is(':visible')){
-                if (event.keyCode == '13') {
-                    event.preventDefault();
-                    e_okButton.trigger('click');
-                }
-            }
-        });
-
-        return div;
-    }
-
-});
\ No newline at end of file
diff --git a/telemeta/htdocs/js/jquery.autocomplete.js b/telemeta/htdocs/js/jquery.autocomplete.js
deleted file mode 100644 (file)
index 9d12a29..0000000
+++ /dev/null
@@ -1,808 +0,0 @@
-/*
- * jQuery Autocomplete plugin 1.1
- *
- * Copyright (c) 2009 Jörn Zaefferer
- *
- * Dual licensed under the MIT and GPL licenses:
- *   http://www.opensource.org/licenses/mit-license.php
- *   http://www.gnu.org/licenses/gpl.html
- *
- * Revision: $Id: jquery.autocomplete.js 15 2009-08-22 10:30:27Z joern.zaefferer $
- */
-
-;(function($) {
-       
-$.fn.extend({
-       autocomplete: function(urlOrData, options) {
-               var isUrl = typeof urlOrData == "string";
-               options = $.extend({}, $.Autocompleter.defaults, {
-                       url: isUrl ? urlOrData : null,
-                       data: isUrl ? null : urlOrData,
-                       delay: isUrl ? $.Autocompleter.defaults.delay : 10,
-                       max: options && !options.scroll ? 10 : 150
-               }, options);
-               
-               // if highlight is set to false, replace it with a do-nothing function
-               options.highlight = options.highlight || function(value) { return value; };
-               
-               // if the formatMatch option is not specified, then use formatItem for backwards compatibility
-               options.formatMatch = options.formatMatch || options.formatItem;
-               
-               return this.each(function() {
-                       new $.Autocompleter(this, options);
-               });
-       },
-       result: function(handler) {
-               return this.bind("result", handler);
-       },
-       search: function(handler) {
-               return this.trigger("search", [handler]);
-       },
-       flushCache: function() {
-               return this.trigger("flushCache");
-       },
-       setOptions: function(options){
-               return this.trigger("setOptions", [options]);
-       },
-       unautocomplete: function() {
-               return this.trigger("unautocomplete");
-       }
-});
-
-$.Autocompleter = function(input, options) {
-
-       var KEY = {
-               UP: 38,
-               DOWN: 40,
-               DEL: 46,
-               TAB: 9,
-               RETURN: 13,
-               ESC: 27,
-               COMMA: 188,
-               PAGEUP: 33,
-               PAGEDOWN: 34,
-               BACKSPACE: 8
-       };
-
-       // Create $ object for input element
-       var $input = $(input).attr("autocomplete", "off").addClass(options.inputClass);
-
-       var timeout;
-       var previousValue = "";
-       var cache = $.Autocompleter.Cache(options);
-       var hasFocus = 0;
-       var lastKeyPressCode;
-       var config = {
-               mouseDownOnSelect: false
-       };
-       var select = $.Autocompleter.Select(options, input, selectCurrent, config);
-       
-       var blockSubmit;
-       
-       // prevent form submit in opera when selecting with return key
-       $.browser.opera && $(input.form).bind("submit.autocomplete", function() {
-               if (blockSubmit) {
-                       blockSubmit = false;
-                       return false;
-               }
-       });
-       
-       // only opera doesn't trigger keydown multiple times while pressed, others don't work with keypress at all
-       $input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) {
-               // a keypress means the input has focus
-               // avoids issue where input had focus before the autocomplete was applied
-               hasFocus = 1;
-               // track last key pressed
-               lastKeyPressCode = event.keyCode;
-               switch(event.keyCode) {
-               
-                       case KEY.UP:
-                               event.preventDefault();
-                               if ( select.visible() ) {
-                                       select.prev();
-                               } else {
-                                       onChange(0, true);
-                               }
-                               break;
-                               
-                       case KEY.DOWN:
-                               event.preventDefault();
-                               if ( select.visible() ) {
-                                       select.next();
-                               } else {
-                                       onChange(0, true);
-                               }
-                               break;
-                               
-                       case KEY.PAGEUP:
-                               event.preventDefault();
-                               if ( select.visible() ) {
-                                       select.pageUp();
-                               } else {
-                                       onChange(0, true);
-                               }
-                               break;
-                               
-                       case KEY.PAGEDOWN:
-                               event.preventDefault();
-                               if ( select.visible() ) {
-                                       select.pageDown();
-                               } else {
-                                       onChange(0, true);
-                               }
-                               break;
-                       
-                       // matches also semicolon
-                       case options.multiple && $.trim(options.multipleSeparator) == "," && KEY.COMMA:
-                       case KEY.TAB:
-                       case KEY.RETURN:
-                               if( selectCurrent() ) {
-                                       // stop default to prevent a form submit, Opera needs special handling
-                                       event.preventDefault();
-                                       blockSubmit = true;
-                                       return false;
-                               }
-                               break;
-                               
-                       case KEY.ESC:
-                               select.hide();
-                               break;
-                               
-                       default:
-                               clearTimeout(timeout);
-                               timeout = setTimeout(onChange, options.delay);
-                               break;
-               }
-       }).focus(function(){
-               // track whether the field has focus, we shouldn't process any
-               // results if the field no longer has focus
-               hasFocus++;
-       }).blur(function() {
-               hasFocus = 0;
-               if (!config.mouseDownOnSelect) {
-                       hideResults();
-               }
-       }).click(function() {
-               // show select when clicking in a focused field
-               if ( hasFocus++ > 1 && !select.visible() ) {
-                       onChange(0, true);
-               }
-       }).bind("search", function() {
-               // TODO why not just specifying both arguments?
-               var fn = (arguments.length > 1) ? arguments[1] : null;
-               function findValueCallback(q, data) {
-                       var result;
-                       if( data && data.length ) {
-                               for (var i=0; i < data.length; i++) {
-                                       if( data[i].result.toLowerCase() == q.toLowerCase() ) {
-                                               result = data[i];
-                                               break;
-                                       }
-                               }
-                       }
-                       if( typeof fn == "function" ) fn(result);
-                       else $input.trigger("result", result && [result.data, result.value]);
-               }
-               $.each(trimWords($input.val()), function(i, value) {
-                       request(value, findValueCallback, findValueCallback);
-               });
-       }).bind("flushCache", function() {
-               cache.flush();
-       }).bind("setOptions", function() {
-               $.extend(options, arguments[1]);
-               // if we've updated the data, repopulate
-               if ( "data" in arguments[1] )
-                       cache.populate();
-       }).bind("unautocomplete", function() {
-               select.unbind();
-               $input.unbind();
-               $(input.form).unbind(".autocomplete");
-       });
-       
-       
-       function selectCurrent() {
-               var selected = select.selected();
-               if( !selected )
-                       return false;
-               
-               var v = selected.result;
-               previousValue = v;
-               
-               if ( options.multiple ) {
-                       var words = trimWords($input.val());
-                       if ( words.length > 1 ) {
-                               var seperator = options.multipleSeparator.length;
-                               var cursorAt = $(input).selection().start;
-                               var wordAt, progress = 0;
-                               $.each(words, function(i, word) {
-                                       progress += word.length;
-                                       if (cursorAt <= progress) {
-                                               wordAt = i;
-                                               return false;
-                                       }
-                                       progress += seperator;
-                               });
-                               words[wordAt] = v;
-                               // TODO this should set the cursor to the right position, but it gets overriden somewhere
-                               //$.Autocompleter.Selection(input, progress + seperator, progress + seperator);
-                               v = words.join( options.multipleSeparator );
-                       }
-                       v += options.multipleSeparator;
-               }
-               
-               $input.val(v);
-               hideResultsNow();
-               $input.trigger("result", [selected.data, selected.value]);
-               return true;
-       }
-       
-       function onChange(crap, skipPrevCheck) {
-               if( lastKeyPressCode == KEY.DEL ) {
-                       select.hide();
-                       return;
-               }
-               
-               var currentValue = $input.val();
-               
-               if ( !skipPrevCheck && currentValue == previousValue )
-                       return;
-               
-               previousValue = currentValue;
-               
-               currentValue = lastWord(currentValue);
-               if ( currentValue.length >= options.minChars) {
-                       $input.addClass(options.loadingClass);
-                       if (!options.matchCase)
-                               currentValue = currentValue.toLowerCase();
-                       request(currentValue, receiveData, hideResultsNow);
-               } else {
-                       stopLoading();
-                       select.hide();
-               }
-       };
-       
-       function trimWords(value) {
-               if (!value)
-                       return [""];
-               if (!options.multiple)
-                       return [$.trim(value)];
-               return $.map(value.split(options.multipleSeparator), function(word) {
-                       return $.trim(value).length ? $.trim(word) : null;
-               });
-       }
-       
-       function lastWord(value) {
-               if ( !options.multiple )
-                       return value;
-               var words = trimWords(value);
-               if (words.length == 1) 
-                       return words[0];
-               var cursorAt = $(input).selection().start;
-               if (cursorAt == value.length) {
-                       words = trimWords(value)
-               } else {
-                       words = trimWords(value.replace(value.substring(cursorAt), ""));
-               }
-               return words[words.length - 1];
-       }
-       
-       // fills in the input box w/the first match (assumed to be the best match)
-       // q: the term entered
-       // sValue: the first matching result
-       function autoFill(q, sValue){
-               // autofill in the complete box w/the first match as long as the user hasn't entered in more data
-               // if the last user key pressed was backspace, don't autofill
-               if( options.autoFill && (lastWord($input.val()).toLowerCase() == q.toLowerCase()) && lastKeyPressCode != KEY.BACKSPACE ) {
-                       // fill in the value (keep the case the user has typed)
-                       $input.val($input.val() + sValue.substring(lastWord(previousValue).length));
-                       // select the portion of the value not typed by the user (so the next character will erase)
-                       $(input).selection(previousValue.length, previousValue.length + sValue.length);
-               }
-       };
-
-       function hideResults() {
-               clearTimeout(timeout);
-               timeout = setTimeout(hideResultsNow, 200);
-       };
-
-       function hideResultsNow() {
-               var wasVisible = select.visible();
-               select.hide();
-               clearTimeout(timeout);
-               stopLoading();
-               if (options.mustMatch) {
-                       // call search and run callback
-                       $input.search(
-                               function (result){
-                                       // if no value found, clear the input box
-                                       if( !result ) {
-                                               if (options.multiple) {
-                                                       var words = trimWords($input.val()).slice(0, -1);
-                                                       $input.val( words.join(options.multipleSeparator) + (words.length ? options.multipleSeparator : "") );
-                                               }
-                                               else {
-                                                       $input.val( "" );
-                                                       $input.trigger("result", null);
-                                               }
-                                       }
-                               }
-                       );
-               }
-       };
-
-       function receiveData(q, data) {
-               if ( data && data.length && hasFocus ) {
-                       stopLoading();
-                       select.display(data, q);
-                       autoFill(q, data[0].value);
-                       select.show();
-               } else {
-                       hideResultsNow();
-               }
-       };
-
-       function request(term, success, failure) {
-               if (!options.matchCase)
-                       term = term.toLowerCase();
-               var data = cache.load(term);
-               // recieve the cached data
-               if (data && data.length) {
-                       success(term, data);
-               // if an AJAX url has been supplied, try loading the data now
-               } else if( (typeof options.url == "string") && (options.url.length > 0) ){
-                       
-                       var extraParams = {
-                               timestamp: +new Date()
-                       };
-                       $.each(options.extraParams, function(key, param) {
-                               extraParams[key] = typeof param == "function" ? param() : param;
-                       });
-                       
-                       $.ajax({
-                               // try to leverage ajaxQueue plugin to abort previous requests
-                               mode: "abort",
-                               // limit abortion to this input
-                               port: "autocomplete" + input.name,
-                               dataType: options.dataType,
-                               url: options.url,
-                               data: $.extend({
-                                       q: lastWord(term),
-                                       limit: options.max
-                               }, extraParams),
-                               success: function(data) {
-                                       var parsed = options.parse && options.parse(data) || parse(data);
-                                       cache.add(term, parsed);
-                                       success(term, parsed);
-                               }
-                       });
-               } else {
-                       // if we have a failure, we need to empty the list -- this prevents the the [TAB] key from selecting the last successful match
-                       select.emptyList();
-                       failure(term);
-               }
-       };
-       
-       function parse(data) {
-               var parsed = [];
-               var rows = data.split("\n");
-               for (var i=0; i < rows.length; i++) {
-                       var row = $.trim(rows[i]);
-                       if (row) {
-                               row = row.split("|");
-                               parsed[parsed.length] = {
-                                       data: row,
-                                       value: row[0],
-                                       result: options.formatResult && options.formatResult(row, row[0]) || row[0]
-                               };
-                       }
-               }
-               return parsed;
-       };
-
-       function stopLoading() {
-               $input.removeClass(options.loadingClass);
-       };
-
-};
-
-$.Autocompleter.defaults = {
-       inputClass: "ac_input",
-       resultsClass: "ac_results",
-       loadingClass: "ac_loading",
-       minChars: 1,
-       delay: 400,
-       matchCase: false,
-       matchSubset: true,
-       matchContains: false,
-       cacheLength: 10,
-       max: 100,
-       mustMatch: false,
-       extraParams: {},
-       selectFirst: true,
-       formatItem: function(row) { return row[0]; },
-       formatMatch: null,
-       autoFill: false,
-       width: 0,
-       multiple: false,
-       multipleSeparator: ", ",
-       highlight: function(value, term) {
-               return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>");
-       },
-    scroll: true,
-    scrollHeight: 180
-};
-
-$.Autocompleter.Cache = function(options) {
-
-       var data = {};
-       var length = 0;
-       
-       function matchSubset(s, sub) {
-               if (!options.matchCase) 
-                       s = s.toLowerCase();
-               var i = s.indexOf(sub);
-               if (options.matchContains == "word"){
-                       i = s.toLowerCase().search("\\b" + sub.toLowerCase());
-               }
-               if (i == -1) return false;
-               return i == 0 || options.matchContains;
-       };
-       
-       function add(q, value) {
-               if (length > options.cacheLength){
-                       flush();
-               }
-               if (!data[q]){ 
-                       length++;
-               }
-               data[q] = value;
-       }
-       
-       function populate(){
-               if( !options.data ) return false;
-               // track the matches
-               var stMatchSets = {},
-                       nullData = 0;
-
-               // no url was specified, we need to adjust the cache length to make sure it fits the local data store
-               if( !options.url ) options.cacheLength = 1;
-               
-               // track all options for minChars = 0
-               stMatchSets[""] = [];
-               
-               // loop through the array and create a lookup structure
-               for ( var i = 0, ol = options.data.length; i < ol; i++ ) {
-                       var rawValue = options.data[i];
-                       // if rawValue is a string, make an array otherwise just reference the array
-                       rawValue = (typeof rawValue == "string") ? [rawValue] : rawValue;
-                       
-                       var value = options.formatMatch(rawValue, i+1, options.data.length);
-                       if ( value === false )
-                               continue;
-                               
-                       var firstChar = value.charAt(0).toLowerCase();
-                       // if no lookup array for this character exists, look it up now
-                       if( !stMatchSets[firstChar] ) 
-                               stMatchSets[firstChar] = [];
-
-                       // if the match is a string
-                       var row = {
-                               value: value,
-                               data: rawValue,
-                               result: options.formatResult && options.formatResult(rawValue) || value
-                       };
-                       
-                       // push the current match into the set list
-                       stMatchSets[firstChar].push(row);
-
-                       // keep track of minChars zero items
-                       if ( nullData++ < options.max ) {
-                               stMatchSets[""].push(row);
-                       }
-               };
-
-               // add the data items to the cache
-               $.each(stMatchSets, function(i, value) {
-                       // increase the cache size
-                       options.cacheLength++;
-                       // add to the cache
-                       add(i, value);
-               });
-       }
-       
-       // populate any existing data
-       setTimeout(populate, 25);
-       
-       function flush(){
-               data = {};
-               length = 0;
-       }
-       
-       return {
-               flush: flush,
-               add: add,
-               populate: populate,
-               load: function(q) {
-                       if (!options.cacheLength || !length)
-                               return null;
-                       /* 
-                        * if dealing w/local data and matchContains than we must make sure
-                        * to loop through all the data collections looking for matches
-                        */
-                       if( !options.url && options.matchContains ){
-                               // track all matches
-                               var csub = [];
-                               // loop through all the data grids for matches
-                               for( var k in data ){
-                                       // don't search through the stMatchSets[""] (minChars: 0) cache
-                                       // this prevents duplicates
-                                       if( k.length > 0 ){
-                                               var c = data[k];
-                                               $.each(c, function(i, x) {
-                                                       // if we've got a match, add it to the array
-                                                       if (matchSubset(x.value, q)) {
-                                                               csub.push(x);
-                                                       }
-                                               });
-                                       }
-                               }                               
-                               return csub;
-                       } else 
-                       // if the exact item exists, use it
-                       if (data[q]){
-                               return data[q];
-                       } else
-                       if (options.matchSubset) {
-                               for (var i = q.length - 1; i >= options.minChars; i--) {
-                                       var c = data[q.substr(0, i)];
-                                       if (c) {
-                                               var csub = [];
-                                               $.each(c, function(i, x) {
-                                                       if (matchSubset(x.value, q)) {
-                                                               csub[csub.length] = x;
-                                                       }
-                                               });
-                                               return csub;
-                                       }
-                               }
-                       }
-                       return null;
-               }
-       };
-};
-
-$.Autocompleter.Select = function (options, input, select, config) {
-       var CLASSES = {
-               ACTIVE: "ac_over"
-       };
-       
-       var listItems,
-               active = -1,
-               data,
-               term = "",
-               needsInit = true,
-               element,
-               list;
-       
-       // Create results
-       function init() {
-               if (!needsInit)
-                       return;
-               element = $("<div/>")
-               .hide()
-               .addClass(options.resultsClass)
-               .css("position", "absolute")
-               .appendTo(document.body);
-       
-               list = $("<ul/>").appendTo(element).mouseover( function(event) {
-                       if(target(event).nodeName && target(event).nodeName.toUpperCase() == 'LI') {
-                   active = $("li", list).removeClass(CLASSES.ACTIVE).index(target(event));
-                           $(target(event)).addClass(CLASSES.ACTIVE);            
-               }
-               }).click(function(event) {
-                       $(target(event)).addClass(CLASSES.ACTIVE);
-                       select();
-                       // TODO provide option to avoid setting focus again after selection? useful for cleanup-on-focus
-                       input.focus();
-                       return false;
-               }).mousedown(function() {
-                       config.mouseDownOnSelect = true;
-               }).mouseup(function() {
-                       config.mouseDownOnSelect = false;
-               });
-               
-               if( options.width > 0 )
-                       element.css("width", options.width);
-                       
-               needsInit = false;
-       } 
-       
-       function target(event) {
-               var element = event.target;
-               while(element && element.tagName != "LI")
-                       element = element.parentNode;
-               // more fun with IE, sometimes event.target is empty, just ignore it then
-               if(!element)
-                       return [];
-               return element;
-       }
-
-       function moveSelect(step) {
-               listItems.slice(active, active + 1).removeClass(CLASSES.ACTIVE);
-               movePosition(step);
-        var activeItem = listItems.slice(active, active + 1).addClass(CLASSES.ACTIVE);
-        if(options.scroll) {
-            var offset = 0;
-            listItems.slice(0, active).each(function() {
-                               offset += this.offsetHeight;
-                       });
-            if((offset + activeItem[0].offsetHeight - list.scrollTop()) > list[0].clientHeight) {
-                list.scrollTop(offset + activeItem[0].offsetHeight - list.innerHeight());
-            } else if(offset < list.scrollTop()) {
-                list.scrollTop(offset);
-            }
-        }
-       };
-       
-       function movePosition(step) {
-               active += step;
-               if (active < 0) {
-                       active = listItems.size() - 1;
-               } else if (active >= listItems.size()) {
-                       active = 0;
-               }
-       }
-       
-       function limitNumberOfItems(available) {
-               return options.max && options.max < available
-                       ? options.max
-                       : available;
-       }
-       
-       function fillList() {
-               list.empty();
-               var max = limitNumberOfItems(data.length);
-               for (var i=0; i < max; i++) {
-                       if (!data[i])
-                               continue;
-                       var formatted = options.formatItem(data[i].data, i+1, max, data[i].value, term);
-                       if ( formatted === false )
-                               continue;
-                       var li = $("<li/>").html( options.highlight(formatted, term) ).addClass(i%2 == 0 ? "ac_even" : "ac_odd").appendTo(list)[0];
-                       $.data(li, "ac_data", data[i]);
-               }
-               listItems = list.find("li");
-               if ( options.selectFirst ) {
-                       listItems.slice(0, 1).addClass(CLASSES.ACTIVE);
-                       active = 0;
-               }
-               // apply bgiframe if available
-               if ( $.fn.bgiframe )
-                       list.bgiframe();
-       }
-       
-       return {
-               display: function(d, q) {
-                       init();
-                       data = d;
-                       term = q;
-                       fillList();
-               },
-               next: function() {
-                       moveSelect(1);
-               },
-               prev: function() {
-                       moveSelect(-1);
-               },
-               pageUp: function() {
-                       if (active != 0 && active - 8 < 0) {
-                               moveSelect( -active );
-                       } else {
-                               moveSelect(-8);
-                       }
-               },
-               pageDown: function() {
-                       if (active != listItems.size() - 1 && active + 8 > listItems.size()) {
-                               moveSelect( listItems.size() - 1 - active );
-                       } else {
-                               moveSelect(8);
-                       }
-               },
-               hide: function() {
-                       element && element.hide();
-                       listItems && listItems.removeClass(CLASSES.ACTIVE);
-                       active = -1;
-               },
-               visible : function() {
-                       return element && element.is(":visible");
-               },
-               current: function() {
-                       return this.visible() && (listItems.filter("." + CLASSES.ACTIVE)[0] || options.selectFirst && listItems[0]);
-               },
-               show: function() {
-                       var offset = $(input).offset();
-                       element.css({
-                               width: typeof options.width == "string" || options.width > 0 ? options.width : $(input).width(),
-                               top: offset.top + input.offsetHeight,
-                               left: offset.left
-                       }).show();
-            if(options.scroll) {
-                list.scrollTop(0);
-                list.css({
-                                       maxHeight: options.scrollHeight,
-                                       overflow: 'auto'
-                               });
-                               
-                if($.browser.msie && typeof document.body.style.maxHeight === "undefined") {
-                                       var listHeight = 0;
-                                       listItems.each(function() {
-                                               listHeight += this.offsetHeight;
-                                       });
-                                       var scrollbarsVisible = listHeight > options.scrollHeight;
-                    list.css('height', scrollbarsVisible ? options.scrollHeight : listHeight );
-                                       if (!scrollbarsVisible) {
-                                               // IE doesn't recalculate width when scrollbar disappears
-                                               listItems.width( list.width() - parseInt(listItems.css("padding-left")) - parseInt(listItems.css("padding-right")) );
-                                       }
-                }
-                
-            }
-               },
-               selected: function() {
-                       var selected = listItems && listItems.filter("." + CLASSES.ACTIVE).removeClass(CLASSES.ACTIVE);
-                       return selected && selected.length && $.data(selected[0], "ac_data");
-               },
-               emptyList: function (){
-                       list && list.empty();
-               },
-               unbind: function() {
-                       element && element.remove();
-               }
-       };
-};
-
-$.fn.selection = function(start, end) {
-       if (start !== undefined) {
-               return this.each(function() {
-                       if( this.createTextRange ){
-                               var selRange = this.createTextRange();
-                               if (end === undefined || start == end) {
-                                       selRange.move("character", start);
-                                       selRange.select();
-                               } else {
-                                       selRange.collapse(true);
-                                       selRange.moveStart("character", start);
-                                       selRange.moveEnd("character", end);
-                                       selRange.select();
-                               }
-                       } else if( this.setSelectionRange ){
-                               this.setSelectionRange(start, end);
-                       } else if( this.selectionStart ){
-                               this.selectionStart = start;
-                               this.selectionEnd = end;
-                       }
-               });
-       }
-       var field = this[0];
-       if ( field.createTextRange ) {
-               var range = document.selection.createRange(),
-                       orig = field.value,
-                       teststring = "<->",
-                       textLength = range.text.length;
-               range.text = teststring;
-               var caretAt = field.value.indexOf(teststring);
-               field.value = orig;
-               this.selection(caretAt, caretAt + textLength);
-               return {
-                       start: caretAt,
-                       end: caretAt + textLength
-               }
-       } else if( field.selectionStart !== undefined ){
-               return {
-                       start: field.selectionStart,
-                       end: field.selectionEnd
-               }
-       }
-};
-
-})(jQuery);
\ No newline at end of file
diff --git a/telemeta/htdocs/js/jquery.bgiframe.js b/telemeta/htdocs/js/jquery.bgiframe.js
deleted file mode 100644 (file)
index ef8679d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-/* Copyright (c) 2006 Brandon Aaron (http://brandonaaron.net)
- * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
- * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
- *
- * $LastChangedDate: 2007-07-21 18:45:56 -0500 (Sat, 21 Jul 2007) $
- * $Rev: 2447 $
- *
- * Version 2.1.1
- */
-(function($){$.fn.bgIframe=$.fn.bgiframe=function(s){if($.browser.msie&&/6.0/.test(navigator.userAgent)){s=$.extend({top:'auto',left:'auto',width:'auto',height:'auto',opacity:true,src:'javascript:false;'},s||{});var prop=function(n){return n&&n.constructor==Number?n+'px':n;},html='<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+s.src+'"'+'style="display:block;position:absolute;z-index:-1;'+(s.opacity!==false?'filter:Alpha(Opacity=\'0\');':'')+'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')':prop(s.top))+';'+'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')':prop(s.left))+';'+'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\'px\')':prop(s.width))+';'+'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+'"/>';return this.each(function(){if($('> iframe.bgiframe',this).length==0)this.insertBefore(document.createElement(html),this.firstChild);});}return this;};})(jQuery);
\ No newline at end of file
diff --git a/telemeta/htdocs/js/locale.js b/telemeta/htdocs/js/locale.js
deleted file mode 100644 (file)
index 3f73753..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-var localeStrings = {
-    'title': gettext('title'),
-    'description': gettext('description'),
-    'delete the marker permanently?': gettext('delete the marker permanently?'),
-    'marker added to the selected playlist': gettext('marker added to the selected playlist'),
-    'item added to the selected playlist': gettext('item added to the selected playlist'),
-    'collection added to the selected playlist': gettext('collection added to the selected playlist'),
-    'resource added to the selected playlist': gettext('resource added to the selected playlist'),
-    'there are unsaved or modified markers': gettext('there are unsaved or modified markers'),
-    'If you exit the page you will loose your changes' : gettext('If you exit the page you will loose your changes'),
-    'author' : gettext('author'),
-    'Paste HTML to embed player in website': gettext('Paste HTML to embed player in website'),
-    'delete the item permanently?' : gettext('delete the item permanently?'),
-    'delete the collection permanently?' : gettext('delete the collection permanently?'),
-    'delete the playlist permanently?' : gettext('delete the playlist permanently?'),
-    'delete the resource from the playlist permanently?' : gettext('delete the resource from the playlist permanently?'),
-};
-
-function gettrans(str){
-    var loc = localeStrings; //instantiate once for faster lookup
-    return str in loc ? loc[str] : str;
-}
-
-/*
- * Copyright (C) 2007-2011 Parisson
- * Copyright (c) 2011 Riccardo Zaccarelli <riccardo.zaccarelli@gmail.com>
- * 
- * This file is part of TimeSide.
- *
- * TimeSide is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * TimeSide is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with TimeSide.  If not, see <http://www.gnu.org/licenses/>.
- *
- * Author: Riccardo Zaccarelli <riccardo.zaccarelli@gmail.com>
- */
-
-/**
- * Class for managing translations in telemeta.
- */
-
-
diff --git a/telemeta/htdocs/js/playerLoader.js b/telemeta/htdocs/js/playerLoader.js
deleted file mode 100644 (file)
index 50250d3..0000000
+++ /dev/null
@@ -1,620 +0,0 @@
-/*
- * Copyright (C) 2007-2011 Parisson
- * Copyright (c) 2011 Riccardo Zaccarelli <riccardo.zaccarelli@gmail.com>
- * Copyright (c) 2010 Olivier Guilyardi <olivier@samalyse.com>
- *
- * This file is part of TimeSide.
- *
- * TimeSide is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * TimeSide is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with TimeSide.  If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: Riccardo Zaccarelli <riccardo.zaccarelli@gmail.com>
- *          Olivier Guilyardi <olivier@samalyse.com>
- */
-
-/**
- * Class for loading a player. Requires a div#player, jQuery and all timeside javascript (player.js, markermap.js etcetera)
- */
-
-
-function togglePlayerMaximization() {
-    var $ = jQuery;
-    var view = $('#player');
-    $('#player_maximized, #player_minimized').css('display', 'none');
-    var ctr;
-    var dynamicResize = false;
-    if (view.parents('#player_maximized').length) {
-        ctr = $('#player_minimized').append(view);
-    } else {
-        ctr = $('#player_maximized').append(view);
-        dynamicResize = true;
-    }
-    ctr.css({
-        opacity: 0,
-        display: 'block'
-    });
-    var p = Timeside.player;
-    if (p){
-        p.resize();
-    }
-    ctr.animate({
-        opacity: 1
-    }, 100);
-    if (p){
-        p.setDynamicResize(dynamicResize);
-    }
-}
-
-
-
-function loadPlayer(analizerUrl, soundUrl, soundImgSize, itemId, visualizers, currentUserName, isStaffOrSuperuser){
-    var $J = jQuery;
-    var wdw = window;
-
-
-    //end(''): clears loading span, if any
-    //end('msg') if loading span is there, clear loading span. If loading span is there, display alert msg
-
-    function end(optionalErrorMsg){
-        //var $J = jQuery;
-        $J(wdw).ready(function(){
-            var elm = $J('#loading_span');
-            if(elm.length<1){
-                return;
-            }
-            elm.empty().remove();
-            if(optionalErrorMsg){
-                $J('#rightcol').hide();
-                alert(optionalErrorMsg);
-            }
-        });
-    }
-
-    //we load the player once the window is fully loaded. Note that the function Timeside.load (called within this method)
-    //is started on $J(wdw), so it will be executed immediately. The reason of a 'double' $K(wdw)
-    //is that we want to display some messages on html spans (which therefore must exist) and that if the
-    //div#player does not exist the Timeside.load throws an error that the
-    //function end (see above) will convert in an alert dialog. The problem is that the non existence of div#player
-    //is not always an error, (eg, the user not logged in and the item has only metadata public).
-    //Ideally, we should not enter here in some cases. For the moment we just catch the case div#player doesnt exist and
-    //we return
-    
-//    var maxTime = 10000;
-//    //if the loading span is still visible in 10 seconds, throw an error:
-//    setTimeout(function(){
-//        end('SoundManager is not responding. Try to:\n - Reload the page\n - Empty the cache (see browser preferences) and reload the page\n - Restart the browser');
-//    },maxTime);
-     
-    
-    var pFloat = parseFloat;
-    //load analyser xml and proceed on success:
-    $J.ajax({
-        url: analizerUrl, 
-        dataType: 'xml',
-        error:function(){
-            end('Error loading analyzer');
-        },
-        success: function(data){
-            //populatetable
-            var analyzerContentArray = []; //content is an array which we will transform in table innerHTML via the method join
-            //which is faster in some browsers than string concatenation
-            $J.each($J(data).find('data'),function(index,element){
-                var elm = $J(element);
-                analyzerContentArray.push('<tr><td>');
-                analyzerContentArray.push(elm.attr('name'));
-                analyzerContentArray.push('</td><td>');
-                analyzerContentArray.push(elm.attr('value'));
-                analyzerContentArray.push('</td><td>');
-                analyzerContentArray.push(elm.attr('unit'));
-                analyzerContentArray.push('</td></tr>');
-            });
-               
-            var duration = $J(data).find('#duration').attr('value');
-            duration = duration.split(":");
-            //format duration
-            var pin = parseInt;
-                
-            var radix = 10; //REALLY IMPORTANT. IF ANY ELEMENT OF DURATION STARTS WITH '0', THEN THE RADIX IS CONSIDERED EITHER OCTAL OR HEXADECIMAL
-            //WE WANT TO PREVENT NON 10-BASED RADIX PARSING
-            var timeInMSecs=pin(duration[0],radix)*3600+pin(duration[1],radix)*60+pFloat(duration[2],radix);
-            timeInMSecs = Math.round(timeInMSecs*1000);
-            //callback to be executed after json gets the markers (see last line below)
-            var callbackAfterMarkersLoading = function(data) {
-                var markerMap = [];
-            
-                if(data && data.result && data.result.length>0){
-                    var result = data.result;
-                
-                    //add markers to the map. No listeners associated to it (for the moment)
-                    //var mapAdd = map.add;
-                    for(var i =0; i< result.length; i++){
-
-                        var argument = result[i];
-                        var marker = {
-                            id: argument.public_id,
-                            offset: pFloat(argument.time), //IMPORTANT: IT IS A STRING!!!!!!
-                            desc: argument.description,
-                            title: argument.title,
-                            author: argument.author,
-                            isEditable: false,
-                            canBeSetEditable: isStaffOrSuperuser || (argument.author === currentUserName) ,
-                            canBeAddedToPlaylist: currentUserName ? true : false,
-                            isSavedOnServer: true
-                        };
-                        markerMap.push(marker);
-                    }
-                }
-
-                //defining the marker callback:
-                
-                var markerMode = currentUserName || false;
-                if(markerMode){
-                    //markerMode becomes a function:
-                    markerMode = function(offset){
-                        var m = {
-                            //id: uinqid_(), //will be set in markermap
-                            offset: pFloat(offset),
-                            desc: "",
-                            title: "",
-                            author: currentUserName,
-                            isEditable: false,
-                            canBeSetEditable: true,
-                            canBeAddedToPlaylist: true,
-                            isSavedOnServer: false
-                        };
-                        return m;
-                    };
-                }
-               
-
-                //creating the visualizer <select/> tag
-                
-//                var playerDiv = '#player';
-//                if(!($J(playerDiv).length)){
-//                    end(); //stop without raising error messages. If passed within Timeside.load, an error will be thrown
-//                }
-
-                var timesideConfig = {
-                    container: '#player',
-                    sound : soundUrl,
-                    soundDuration: timeInMSecs,
-                    onError: end, //globally defined (see above)
-                    markersArray: markerMap,
-                    newMarker: markerMode
-                };
-                timesideConfig.soundImage = function(width,height){
-                    var player_image_url = visualizers[""+visualizersSelectElement.val()];
-                    var _src_ = null;
-                    if (player_image_url && (width || height)) {
-                        _src_ = player_image_url.replace('WIDTH', width + '').replace('HEIGHT', height + '');
-                    }
-                    return _src_;
-                };
-                if(typeof soundImgSize === 'object' && (soundImgSize.hasOwnProperty('width') || soundImgSize.hasOwnProperty('height'))){
-                    timesideConfig.imageSize = soundImgSize;
-                }
-                //onReadyWithImage: set select visualizers:
-                 //create visualizer select element (append it later, document here could NOT be ready)
-                var visualizersSelectElement = $J('<select/>');
-                for(var name in visualizers){
-                    $J('<option/>').html(name).appendTo(visualizersSelectElement);
-                }
-               timesideConfig.onReadyWithImage = function(player){
-                   //setting up the select tag
-
-                    player.bind('waitShown', function(data){
-                        visualizersSelectElement.hide();
-                    });
-                    player.bind('waitHidden', function(data){
-                        visualizersSelectElement.css('display','inline-block');
-                    });
-
-                    //assigning event on select:
-                    visualizersSelectElement.change(
-                        function (){
-                            player.refreshImage.apply(player);
-                        });
-                    var control = player.getContainer().find('.ts-control');
-                    var ch = control.height();
-                    var margin = 3;
-                    visualizersSelectElement.css({
-                        'display': 'inline-block',
-                        'height':(ch-2*margin)+'px',
-                        'position':'absolute',
-                        'top':margin+'px',
-                        'right':margin,
-                        'margin':0
-                    });
-                    control.append(visualizersSelectElement);
-               };
-                timesideConfig.onReady = function(player){
-                    //document here is READY
-                    var markersUI = "#markers_div_id";
-                    var mapUI = new Timeside.classes.MarkerMapDiv(markersUI);
-                    player.getMarkerMap().each(function(i,marker){
-                        mapUI.add(marker,i,false);
-                    });
-                    Timeside.markerMapDiv = mapUI;
-                    //bind add marker -> markerdiv add:
-                    player.bind('markerAdded', function(data){
-                        //select the marker tab:
-                        var tab = $J('#tab_markers');
-                        if(tab && tab.length){
-                            tab.trigger('click');
-                        }
-                        mapUI.add.apply(mapUI,[data.marker, data.index, true]);
-                    });
-                    //bind move marker -> markerdiv move:
-                    player.bind('markerMoved', function(data){
-                        mapUI.move.apply(mapUI,[data.fromIndex,data.toIndex,data.marker.offset]);
-                    });
-                    //bind move marker -> markerdiv move:
-                    player.bind('markerRemoved', function(data){
-                        mapUI.remove.apply(mapUI,[data.index]);
-                    });
-
-                    //bind remove marker -> player remove -> remove marker
-                    //(wait for json success)
-                    mapUI.bind('remove',function(data){
-                        var marker = data.marker;
-                            
-                        var functionOnSuccess = function(){
-                            player.removeMarker.apply(player,[data.marker]);//map.remove + fires markerMoved on player
-                        };
-                        if(marker.isSavedOnServer){
-                            //json(param,method,onSuccessFcn,onErrorFcn){
-                            json([marker.id], "telemeta.del_marker",functionOnSuccess);
-                        }else{
-                            functionOnSuccess();
-                        }
-
-                    });
-
-                    mapUI.bind('edit',function(data){
-                        var map = player.getMarkerMap();
-                        var len = map.length;
-                        var idx = data.index;
-                        if(map && idx>=0 && idx<len){
-                            map.setEditable(idx,data.value);
-//                            map.toArray()[idx].isEditable = data.value;
-//                            player.getRuler().setEditable(idx,data.value, false);
-                        }
-                    }); 
-
-                    //bind save marker -> player save
-                    var map = player.getMarkerMap();
-                    if(map){
-                        mapUI.bind('save',function(data){
-                            var marker = data.marker;
-                            var idx = map.insertionIndex(marker);
-                            if(idx<0 || idx>=map.length){
-                                this.debug('mapUI.save: marker not found');
-                                return;
-                            }
-
-                            //var itemid = this.getItemId(); //TODO2: NOt anymore used
-                            var isSavedOnServer = marker.isSavedOnServer;
-                            var method = isSavedOnServer ? "telemeta.update_marker" : "telemeta.add_marker";
-                            var param = {
-                                'item_id':itemId,
-                                'public_id': marker.id,
-                                'time':marker.offset,
-                                'author': marker.author,
-                                'title':marker.title,
-                                'description':marker.desc
-                            };
-
-                            //function on success:
-                            //go back to the marker div to notify tha tis saved
-                            var success = function(){
-                                if(!isSavedOnServer){
-                                    marker.isSavedOnServer = true;
-                                }
-                                mapUI.setEditMode.apply(mapUI,[idx,false]);
-                            };
-                            //json(param,method,onSuccessFcn,onErrorFcn){
-                            json([param], method, success);
-                        });
-                    }
-                    //bind focus marker - > player focus
-                    mapUI.bind('focus', function(data){
-                        if(data && 'index' in data){
-                            if(data.index>=0 && data.index<map.length){
-                                var offset = map.toArray()[data.index].offset;
-                                player.setSoundPosition(offset);
-                            }
-                        }
-                    });
-                    //last things:
-                    //populate the analyzers table
-                    $J('#analyzer_div_id').find('table').find('tbody:last').append(analyzerContentArray.join(""));
-
-                    
-                    //Eventually, do 3 last things:
-                    //1) call end (without arguments simply clears the wait span and avoid subsequent calls to end(msg) to
-                    //display error messages)
-                    end();
-                    //set a warning leaving the page with unsaved markers:
-                    if(map){
-                        var confirmExit = function(){
-                            var markerUnsaved=0;
-                            map.each(function(i,marker){
-                                if(!marker.isSavedOnServer || marker.isEditable){
-                                    markerUnsaved++;
-                                }
-                            });
-                            if(markerUnsaved>0){
-                                return gettrans('there are unsaved or modified markers') +' ('+ markerUnsaved+ '). '+
-                                gettrans('If you exit the page you will loose your changes');
-                            }
-
-                        };
-                        wdw.onbeforeunload = confirmExit;
-                    }
-
-                   
-                    if(map && wdw.PopupDiv){
-                        var POPUP_TIMEOUT=3; //in seconds. Zero means: no popup, negative numbers:
-                        //popup stays infinitely on the player (until next marker cross)
-                        //a number N means: popup stays maximum N seconds on the screen
-                        if(POPUP_TIMEOUT){
-                            var popupdiv = new PopupDiv({
-                                //focusable: false,
-                                titleClass: 'markersdivTitle',
-                                //showClose:true,
-
-                                //boundsExact:true,
-                                bounds: {
-                                    top:0.4,
-                                    left:0.1,
-                                    right:0.1,
-                                    bottom:0
-                                },
-                                invoker: player.getContainer().find('.ts-wave'),
-                                defaultCloseOperation: 'hide'
-                            });
-                            var popupShowFunction = function(data){
-                                popupdiv.refresh(data.marker.desc,data.marker.title);
-                                if(!popupdiv.isShowing()){
-                                    popupdiv.show();
-                                }
-                            };
-                            if(POPUP_TIMEOUT<0){
-                                player.bind('markerCrossed',popupShowFunction);
-                            }else{
-                                var popupTimeoutId = undefined;
-                                var clearHidePopupTimeout = clearTimeout;
-                                player.bind('markerCrossed',function(data){
-                                    if(popupTimeoutId !== undefined){
-                                        clearHidePopupTimeout(popupTimeoutId);
-                                    }
-                                      popupTimeoutId=undefined;
-                                    popupShowFunction(data);
-                                    if(POPUP_TIMEOUT<0){
-                                        return;
-                                    }
-                                    var next = data.nextMarkerTimeInterval ? data.nextMarkerTimeInterval[0] :undefined;
-                                    if(next === undefined || next-data.currentSoundPosition > POPUP_TIMEOUT){
-                                        popupTimeoutId = popupdiv.setTimeout('close',POPUP_TIMEOUT*1000);
-                                    }
-                            
-                                });
-                                
-
-                            }
-                            var draggingSomeMarker = false;
-                            //now bind mouse events
-                            player.bind('markerMouseEvent', function(data){
-                                if(data.eventName === 'click' && data.index>-1){
-                                    player.setSoundPosition(data.marker.offset);
-                                    draggingSomeMarker = false; //to be sure
-                                    return;
-                                }
-                                if(data.eventName === 'mouseenter'){
-                                    if(!draggingSomeMarker && data.index>=0 && player.playState===0){
-                                        popupShowFunction(data);
-                                        return;
-                                    }
-                                }else if(data.eventName === 'dragstart'){
-                                    draggingSomeMarker = true;
-                                }else if(data.eventName === 'dragend'){
-                                    draggingSomeMarker = false;
-                                }
-                                if(popupdiv.isShowing()){
-                                    popupdiv.close();
-                                }
-                            });
-                        }
-                    }
-
-                    //set up the marker tab
-                    var tabIndex = map.length ? 1 : 0;
-                    setUpPlayerTabs($J('#tab_analysis').add($J('#tab_markers')),
-                        [$J('#analyzer_div_id'), $J('#markers_div_id')], tabIndex,
-                        'tab_selected','tab_unselected');
-                    //2)  and selects the current marker if it is present on the url
-                    var url = wdw.location.href+"";
-                    var lastPart = url.replace(/\/+$/,"").replace(/^.*\/([^\/]*)$/,"$1");
-                    var selOffs = -1;
-                    map.each(function(i,marker){
-                        if(marker.id == lastPart){
-                            selOffs = marker.offset;
-                        }
-                    });
-                    if(selOffs >= 0){
-                        player.setSoundPosition(selOffs);
-                    }
-                    //3) assing a binding to the player maximization button:
-                    $J('#player_maximized .toggle, #player_minimized .toggle').click(function() {
-                        togglePlayerMaximization();
-                        return false;
-                    });
-                    //and assing the function to the form_link element
-                    $J('#player_maximized .embed_player_frame, #player_minimized .embed_player_frame').click(function() {
-                        var player_url = urlNormalized(); //defined in application.js
-                        var size= player.getImageSize();
-                        player_url += "/player/"+size.width+"x"+size.height;
-                        var iframeSpanW = 15;
-                        var iframeSpanH = 85;
-                        var input_text = "<iframe width='"+(size.width+iframeSpanW)+"' height='"+(size.height+iframeSpanH)+
-                            "' frameborder='0' scrolling='no' marginheight='0' marginwidth='0' src='"+
-                            player_url+"'></iframe>";
-                        var ipt = $J('<input/>').attr('type','text');
-                        ipt.val(input_text);
-                        ipt.focus(function(){
-                            $J(this).select();
-                        });
-                        var p = new PopupDiv({
-                            invoker: $J(this),
-                            title: gettrans('Paste HTML to embed player in website'),
-                            content: ipt,
-                            defaultCloseOperation:'remove',
-                            focusable: 'true',
-                            onShow : function(){
-                                if(ipt.outerWidth(true)<ipt.parent().width()){
-                                    ipt.css('width',(ipt.parent().width()-(ipt.outerWidth(true)-ipt.width()))+'px');
-                                }
-                            }
-                        });
-                        p.show();
-                        return false;
-                    });
-                };
-                //and finally, load the player:
-                Timeside.load(timesideConfig);
-
-            };
-                
-            //execute all the stuff once the document is ready:
-//            var onSuccess = function(data){
-//                $J(wdw).ready(function(){
-//                    callbackAfterMarkersLoading(data);
-//                });
-//            }
-            //and niow call json method to load markers (load player also onError, no markers will be loaded)
-            json([itemId],"telemeta.get_markers", callbackAfterMarkersLoading,callbackAfterMarkersLoading);
-        }
-    });
-   
-}
-
-
-/*
-* Sets a "tab look" on some elements of the page. Takes at least 3 arguments, at most 5:
-* 1st argument: an array (or a jquery object) of html elements, ususally anchors, representing the tabs
-* 2nd argument: an array (or a jquery object) of html elements, ususally divs, representing the containers to be shown/hidden when
-*   clicking the tabs. The n-th tab will set the n-th container to visible, hiding the others. So order is important. Note that if tabs
-*   or container are jQuery objects, the html elements inside them are sorted according to the document order. That's why tabs and
-*   container can be passed also as javascript arrays, so that the binding n-th tab -> n-th container can be decided by the user
-*   regardeless on how elements are written on the page, if already present
-* 3rd argument: the selected index. If missing it defaults to zero.
-* 4th argument: selectedtab class. Applies to the selected tab after click of one tab. If missing, nothing is done
-* 5th argument the unselectedtab class. Applies to all tabs not selected after click of one tab. If missing, nothing is done
-*
-* NOTE: The last 2 arguments are mostly for customizing the tab "visual look", as some css elements (eg, (position, top, zIndex)
-* are set inside the code and cannot be changed, as they are mandatory to let tab anchor behave like desktop application tabs. Note also
-* that every tab container is set to 'visible' by means of jQuery.show()
-*
-* Examples:
-* setUpPlayerTabs([jQuery('#tab1),jQuery('#tab1)], [jQuery('#div1),jQuery('#div2)], 1);
-* sets the elements with id '#tab1' and '#tab2' as tab and assign the click events to them so that clicking tab_1 will show '#div_1'
-* (and hide '#div2') and viceversa for '#tab2'. The selected index will be 1 (second tab '#tab2')
-*/
-function setUpPlayerTabs() {//called from within controller.js once all markers have been loaded.
-    //this is because we need all divs to be visible to calculate size. selIndex is optional, it defaults to 0
-    
-    var $J = jQuery;
-    var tabs_ = arguments[0];
-    var divs_ = arguments[1]; //they might be ctually any content, div is a shoertand
-
-    //converting arguments to array: tabs
-    var tabs=[];
-    if(tabs_ instanceof $J){
-        tabs_.each(function(i,elm){
-            tabs.push(elm);
-        });
-    }else{
-        tabs = tabs_;
-    }
-    //set the overflow property of the parent tab to visible, otherwise scrollbars are displayed
-    //and the trick of setting position:relative+top:1px+zIndices (see css) doesnt work)
-    $J(tabs).each(function(i,tab){
-        var t = $J(tab).attr('href','#');
-        t.show(); //might be hidden
-        //set necessary style for the tab appearence:
-        var overflow = t.parent().css('overflow');
-        if(overflow && overflow != 'visible'){
-            t.parent().css('overflow','visible');
-        }
-    });
-    //converting arguments to array: divs
-    var divs=[];
-    if(divs_ instanceof $J){
-        divs_.each(function(i,elm){
-            divs.push(elm);
-        });
-    }else{
-        divs = divs_;
-    }
-
-    //reading remaing arguments (if any)
-    var selIndex = arguments.length>2 ? arguments[2] : 0;
-    var selectedTabClass = arguments.length>3 ? arguments[3] : undefined;
-    var unselectedTabClass = arguments.length>4 ? arguments[4] : undefined;
-
-    //function to be associate to every click on the tab (see below)
-    var tabClicked = function(index) {
-        for(var i=0; i<tabs.length; i++){
-            var t = $J(tabs[i]);
-
-            var div = $J(divs[i]);
-            var addClass = i==index ? selectedTabClass : unselectedTabClass;
-            var removeClass = i==index ? unselectedTabClass : selectedTabClass;
-            if(removeClass){
-                t.removeClass(removeClass);
-            }
-            if(addClass){
-                t.addClass(addClass);
-            }
-
-            //relevant css. Will override any css set in stylesheets
-            t.css({
-                'position':'relative',
-                'top':'1px',
-                'zIndex': (i==index ? '10' : '0')
-            });
-
-            if(i===index){
-                div.fadeIn('slow');
-            }else{
-                div.hide();
-            }
-        }
-    };
-
-    //bind clicks on tabs to the function just created
-    for (var i=0;i<tabs.length;i++){
-        // introduce a new scope (round brackets)
-        //otherwise i is retrieved from the current scope and will be always equal to tabs.length
-        //due to this loop
-        (function(tabIndex){
-            $J(tabs[i]).click(function(){
-                tabClicked(tabIndex);
-                return false;//returning false avoids scroll of the anchor to the top of the page
-            });
-        })(i);
-    }
-
-    //select the tab
-    $(tabs[selIndex]).trigger("click");
-}
diff --git a/telemeta/htdocs/js/playlist.js b/telemeta/htdocs/js/playlist.js
deleted file mode 100644 (file)
index b07bdcb..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * Copyright (C) 2007-2011 Parisson
- * Copyright (c) 2011 Riccardo Zaccarelli <riccardo.zaccarelli@gmail.com>
- *
- * This file is part of TimeSide.
- *
- * TimeSide is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * TimeSide is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with TimeSide.  If not, see <http://www.gnu.org/licenses/>.
- *
- * Author: Riccardo Zaccarelli <riccardo.zaccarelli@gmail.com>
- */
-
-/**
- * Class for managing playlists in telemeta.
- * Requires jQuery and PopupDiv
- */
-
-//default PopupDiv properties for playlists (mainly for css appearence)
-PopupDiv.popupClass = 'control component';
-PopupDiv.popupCss = {
-    'border':'1px solid #999',
-    'padding':'1ex'
-};
-PopupDiv.okButtonTitle =  'Ok';
-PopupDiv.okButtonClass =  'component_icon button icon_ok';
-PopupDiv.closeButtonTitle =  '';
-PopupDiv.closeButtonClass =  'markersdivDelete';
-PopupDiv.defaultCloseOperation = 'remove';
-PopupDiv.focusable = true;
-PopupDiv.listItemClass = "component_icon list_item icon_playlist";
-
-
-var playlistUtils = {
-    playlists : [],
-
-    addPlaylist: function(name, id){
-        this.playlists.push({
-            'name':name,
-            'id':id
-        });
-    },
-
-    addEditPlaylist: function(id, title, description){
-        this.playlists.push({
-            'id': id,
-            'title': title,
-            'description': description,
-        });
-    },
-
-    showAdd: function(anchorElement){
-
-        var t = gettrans('title');
-        var d = gettrans('description');
-        var dd = {};
-        dd[t]='';
-        dd[d]='';
-        var playlist = this;
-        new PopupDiv({
-            'content':dd,
-            invoker:anchorElement,
-            showOk:true,
-            onOk:function(data){
-                if(!data[t] && !data[d]){
-                    return;
-                }
-                //convert language
-                playlist.add({
-                    'title':data[t],
-                    'description':data[d]
-                });
-            }
-        }).show();
-
-    },
-    /**
-     * Returns an uniqid by creating the current local time in millisecond + a random number. Used for markers and some json calls
-     * Copied from Timeside.utils.uniqid (Timeside might NOT ALWAYS be loaded, see home.html when user is authenitcated)
-     *
-     */
-    uniqid : function() {
-        var d = new Date();
-        return new String(d.getTime() + '' + Math.floor(Math.random() * 1000000)).substr(0, 18);
-    },
-
-    add : function(dictionary){
-
-        if(dictionary.public_id===undefined){
-            dictionary.public_id = this.uniqid();
-        }
-        if(dictionary.user===undefined){
-            dictionary.user = CURRENT_USER_NAME;
-        }
-
-        json([dictionary],'telemeta.add_playlist',function(){
-            window.location.reload();
-        });
-    },
-
-    remove: function(id){
-        json([id],'telemeta.del_playlist',function(){
-            window.location.reload();
-        });
-    },
-
-    removeResource: function(id){
-        json([id],'telemeta.del_playlist_resource',function(){
-            window.location.reload();
-        });
-    },
-
-    update : function(dictionary){
-        json([dictionary],'telemeta.update_playlist',function(){
-        window.location.reload();
-        });
-    },
-
-    showEdit: function(anchorElement, id){
-
-        var t = gettrans('title');
-        var d = gettrans('description');
-        var dd = {};
-        var playlist = this;
-
-        var playlists = this.playlists;
-        for (var i=0; i< playlists.length; i++){
-            if (playlists[i].id == id){
-                dd[t] = playlists[i].title;
-                dd[d] = playlists[i].description;
-            }
-        }
-
-        new PopupDiv({
-            'content':dd,
-                    invoker:anchorElement,
-                    showOk:true,
-                    onOk:function(data){
-                        if(!data[t] && !data[d]){
-                            return;
-                        }
-                        //convert language
-                        playlist.update({
-                            'public_id': id,
-                            'title': data[t],
-                            'description': data[d],
-                        });
-                    }
-        }).show();
-    },
-
-    /*shows the popup for adding a resource to a playlist*/
-    showAddResourceToPlaylist: function(anchorElement, resourceType, objectId, optionalOkMessage){
-        var ar = [];
-        var playlists = this.playlists;
-        for(var i=0; i< playlists.length; i++){
-            ar.push(playlists[i].name);
-        }
-        var pl = this;
-
-        if(!ar.length){
-            pl.showAdd(anchorElement);
-        }
-
-        //var addFcn = this.addResourceToPlaylist;
-        new PopupDiv({
-            invoker:anchorElement,
-            content: ar,
-            onOk:function(data){
-                var val = data.selIndex;
-                var callbackok = undefined;
-
-                if(optionalOkMessage){
-                    callbackok = function(){
-                        var p =new PopupDiv({
-                            content : "<div class='component_icon icon_ok'>"+optionalOkMessage+"</div>",
-                            focusable: false
-
-                        });
-                        p.bind('show', function(){
-                            this.setTimeout('close',1500); //this refers to p
-                        });
-                        p.show();
-                    }
-                }
-                pl.addResourceToPlaylist.apply(pl,[playlists[val].id,resourceType,objectId,callbackok]);
-            }
-        }).show();
-
-    },
-
-    //resourceType can be: 'collection', 'item', 'marker'
-    addResourceToPlaylist: function(playlistId,resourceType,objectId, callbackOnSuccess,callbackOnError){
-        var send = {
-            'public_id':this.uniqid(),
-            'resource_type':resourceType,
-            'resource_id':objectId
-        };
-        json([playlistId,send],'telemeta.add_playlist_resource',callbackOnSuccess,callbackOnError);
-    }
-
-
-}
-
diff --git a/telemeta/htdocs/js/popupdiv-min.js b/telemeta/htdocs/js/popupdiv-min.js
deleted file mode 100644 (file)
index 2efbe63..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* popupdiv minified with packer (http://dean.edwards.name/packer/)*/
-function PopupDiv(){var a=jQuery;var b=this;var c={};if(arguments.length&&arguments[0]){c=arguments[0]}var d=a('<div/>');var e=a('<div/>').append(a('<a/>').attr('href','#').click(function(){b.close('closeClicked');return false})).append(' ').append(a('<div/>').css('clear','both'));var g=a('<div/>').css('overflow','auto');var h=a('<div/>').append(a('<a/>').attr('href','#').click(function(){b.trigger('ok');return false}));d.append(e).append(g).append(h);this.getDiv=function(){return d};var i={};this.getListeners=function(){return i};var k;var j;for(k in PopupDiv){var f=PopupDiv[k];if(PopupDiv.hasOwnProperty(k)&&(typeof f!=='function')){if(!j){j={}}j[k]=f}}if(j){var l=true;var m=undefined;if(typeof Object.getPrototypeOf!=="function"){if(typeof this.__proto__==="object"){m=this.__proto__}else{m=this;l=false}}else{m=Object.getPrototypeOf(this)}for(k in j){if(j.hasOwnProperty(k)){m[k]=j[k];if(l){delete PopupDiv[k]}}}}for(k in c){if(c.hasOwnProperty(k)){if(k==='onOk'||k==='onShow'||k==='onClose'){this.bind(k.substring(2).toLowerCase(),c[k])}else if(k=='content'){this.setContent(c[k])}else{this[k]=c[k]}}}if(!this.popupCss){this.popupCss={}}}(function(p){var $=jQuery;var z=window;var A=document;var B=$(z);var C='popup_'+(new Date().getTime());p.isClickElement=function(a){return a&&a.length==1&&a instanceof $&&a[0]!==z&&a[0]!==A&&(a.is('a')||a.is('input[type=button]')||a.is('button')||a.is('input[type=submit]'))};p.getId=function(){var a=this.getDiv();if(!(a.attr('id'))){a.attr('id',C+'_'+(new Date().getTime()))}return a.attr('id')};p.shadowOffset=4;p.invoker=B;p.bounds={'top':0.25,'left':0.25,'right':0.25,'bottom':0.25};p.boundsExact=false;p.popupClass='';p.popupCss={};p.showOk=false;p.showClose=false;p.title="";p.okButtonClass='';p.okButtonAlign='right';p.closeButtonClass='';p.titleClass='';p.okButtonTitle='Ok';p.closeButtonTitle='x';p.defaultCloseOperation='hide';p.focusable=false;p.fadInTime='fast';p.fadeOutTime=0;p.shadowOpacity=0.25;p.zIndex=10000;p.listItemClass='';p.listItemCss='';p.getFormData=function(){var c=this.find('input,select,textarea');var d={};var f=this.getFormDataAttrName();c.each(function(i,e){var a=$(e);var b=a.attr(f);if(b){d[b]=a.val()}});return d};p.find=function(a){return this.getDiv().children().eq(1).find(a)};p.bind=function(a,b){var c=this.getListeners();if(c.hasOwnProperty(a)){c[a].push(b)}else{c[a]=[b]}};p.unbind=function(a){var b=this.getListeners();if(a&&b.hasOwnProperty(a)){delete b[a]}else if(!a){for(var k in b){if(b.hasOwnProperty(k)){delete b[k]}}}};p.trigger=function(a){var b=this.getListeners();var c=this;if(b.hasOwnProperty(a)){var d=b[a];var i=0;if(a=='ok'){var e=this.getFormData();for(i=0;i<d.length;i++){d[i].apply(c,[e])}this.close('okClicked')}else if(a=='close'){var f="";if(arguments&&arguments.length>1&&typeof arguments[1]==='string'){f=arguments[1]}for(i=0;i<d.length;i++){d[i].apply(c,[f])}}else{for(i=0;i<d.length;i++){d[i].apply(c)}}}};p.setContent=function(d){var e=this.getDiv();var f=$($(e).children()[1]);f.empty();var g=this.getFormDataAttrName();if(d instanceof $){f.append(d)}else if(d instanceof Array){var j=this;var l=$('<input/>').attr('type','hidden').attr(g,'selIndex');var m=function(a,b,c){b.click(function(){c.val(a);j.trigger('ok');return false}).focus(function(){c.val(a)})};var n=$([]);for(var h=0;h<d.length;h++){var o=d[h];var a=$('<a/>').attr('href','#').html(""+o);n=n.add(a);m(h,a,l);f.append(a)}n.css({'margin':'2px'});if(this.listItemClass){n.addClass(this.listItemClass)}if(this.listItemCss){n.css(this.listItemCss)}n.css({'position':'','display':'block'});f.append(l)}else if(d&&d.constructor==Object){var p=$([]);var q=$([]);var r=[0,0];var s=function(a,b){var c=$('<div/>');if(!b){b=a;a=$('<span/>')}q=q.add(b);p=p.add(a);f.append(c.append(a).append(b));return c};var t,component;var u=Math.max;var v=undefined;var w=$([]);for(var k in d){if(d.hasOwnProperty(k)){var x=d[k];if(typeof x=='string'||typeof x=='number'){t=$('<span/>').html(k);r[0]=u(r[0],k.length);r[1]=u(r[1],x.length);component=$('<input/>').attr('type','text').val(x).attr(g,k);w=w.add(s(t,component))}else if(x===true||x===false){var y=this.getId()+"_checkbox";t=$('<input/>').attr('type','checkbox').attr(g,k).attr('id',y);if(x){t.attr('checked','checked')}else{t.removeAttr('checked')}component=$('<label/>').attr('for',y).html(k);r[1]=u(r[1],k.length);w=w.add(s($('<span/>').append(t),component))}else if(x instanceof Array){t=$('<span/>').html(k);r[0]=u(r[0],k.length);component=$('<select/>').attr('size',1).attr(g,k);for(var i=0;i<x.length;i++){component.append($('<option/>').val(x[i]).html(x[i]));r[1]=u(r[1],x[i].length)}w=w.add(s(t,component))}if(v){v.css('marginBottom','1ex')}}}w.css({'white-space':'nowrap','marginBottom':'0.5ex'});$(w[w.length-1]).css('marginBottom','');p.add(q).css({'display':'inline-block','margin':'0px','padding':'0px'});p.css({'textAlign':'right','marginRight':'0.5ex','width':Math.round((3/5)*r[0])+'em'});q.css({'width':Math.round((3/5)*u(r[0],r[1]))+'em'})}else{f.append(""+d)}};p.setFocusCycleRoot=function(b){var c=this.getDiv();var d=this.getFocusAttr();var f=this.isClickElement(this.invoker);var g=c.children();var h=$(g[0]);var j=$(g[1]);var k=$(g[2]);var l=j.find('input[type!=hidden],select,textarea,a');var m=l.length?$(l[0]):j;if(this.showClose){l=l.add(h.find('a'))}if(this.showOk||this.title){l=l.add(h.find(':text'));if(this.showOk){l=l.add(k.find('a'))}}c.add(j).css('outline','#FFF none 0px');l=l.add(c).add(j);var n="blur."+this.getId();if(!b){l.each(function(i,a){$(a).unbind(n).removeAttr('tabindex').removeAttr(d)});this.getFirstFocusableElement=function(){return undefined};if(f){this.invoker.removeAttr('tabindex').removeAttr(d)}return}if(f){this.invoker.attr('tabindex',0).attr(d,'true')}var o=A;var p=this;l.each(function(i,e){var a=$(e);a.attr(d,'true');a.attr('tabindex',i+1);a.unbind(n).bind(n,function(){setTimeout(function(){var v=o.activeElement;if((v&&$(v).attr(d))||p.__isClosing){return}p.close('focusLost')},200)})});this.getFirstFocusableElement=function(){return m}};p.getFirstFocusableElement=function(){return undefined};p.refresh=function(a,b){var c=this.isShowing();var d=this.focusable;if(a!==undefined){this.setContent(a);if(c&&d){this.setFocusCycleRoot(this.focusable)}}if(b!=undefined){if(c){this.setTitle(b)}else{this.title=b}}if(!c){return}this.setBounds();if(d){this.getFirstFocusableElement().focus()}};p.setTitle=function(a){var b=this.getDiv().children().eq(0);var c=b.contents().filter(function(){return this.nodeType==3});var d=c.get(0);if(!a){a=' '}if(d.textContent){d.textContent=a}else if(d.nodeValue){d.nodeValue=a}};p.isShowing=function(){return this.getDiv().is(':visible')};p.show=function(){var c=this.getDiv();var d=this;var e=this.invoker;var f=this.isClickElement(e);this._isClickElement=f;this.setBounds=f?this._setBoundsAsPopup:this._setBoundsInside;this.setOffset=f?this._setOffsetAsPopup:this._setOffsetInside;if(this.popupClass){c.removeClass().addClass(this.popupClass);this.popupClass=''}if(this.popupCss){c.css(this.popupCss);this.popupCss=''}this.setFocusCycleRoot(this.focusable);var g=c.children();var i=$(g[0]);var j=i.find('a').eq(0);if(this.showClose||this.title){i.css({'paddingBottom':'0.25em'});if(this.titleClass&&this.title){i.attr('class',this.titleClass);this.titleClass=''}if(this.showClose){j.css('marginLeft','0.5em').attr('class',this.closeButtonClass).html(this.closeButtonTitle).css({'display':'inline-block','float':'right'})}else{j.hide()}this.setTitle(this.title)}var k=$(g[2]);var l=k.find('a').eq(0);if(this.showOk){k.css({'paddingTop':'0.25em','textAlign':this.okButtonAlign});l.attr('class',this.okButtonClass);l.html(this.okButtonTitle);l.css({'float':'none','display':'inline-block'})}if(!c.parent().length){c.appendTo('body')}if(f){this['_tmpHandlers'+this.getId()]=undefined;var m=this.getFirstFocusableElement();if(m){var n=[];var o='click';var p=e.data("events")[o];$.each(p,function(a,b){n.push(b)});e.unbind(o);this['_tmpHandlers'+this.getId()]=n;e.unbind(o).bind(o,function(a){if(c.length&&c.is(':visible')){m.focus();return false}d.close.apply(d);return false})}}this.setBounds();var q=this._getShadow();var r=this.setOffset;var s=function(){var w=B.width();var h=B.height();d._resizeTimeInterval=setInterval(function(){var a=B.width();var b=B.height();if(a!==w||b!==h){setTimeout(function(){if(!d.isShowing()||d.__isClosing){return}if(B.width()===a&&B.height()===b){r.apply(d)}},100)}},200);d.trigger('show');if(q!==undefined){q.fadeTo(d.fadInTime,d.shadowOpacity,function(){var v=d.getFirstFocusableElement();if(v){v.focus()}})}else{var v=d.getFirstFocusableElement();if(v){v.focus()}}};c.show(this.fadInTime,function(){s()})};p.refreshShadow=function(){var a=this._getShadow();var b=this.shadowOffset;if(!b&&a!==undefined){a.remove()}else if(b){var c=this.getDiv();if(a===undefined){a=c.clone(false,false).empty().css({'backgroundColor':'#000','borderColor':'#000','display':'block','zIndex':this.zIndex-1}).removeAttr('tabindex').removeAttr(this.getFocusAttr()).fadeTo(0,0).attr('id',this.getShadowDivId()).insertAfter(c)}var d=this.getBounds.apply(this);a.css({'left':(d.x+b)+'px','top':(d.y+b)+'px','width':(d.width)+'px','height':(d.height)+'px'})}};p._getShadow=function(){var a=this.getDiv().next('div');if(a&&a.length&&a.attr('id')===this.getShadowDivId()){return a}return undefined};p._setBoundsAsPopup=function(){var a=this.invoker;this.preSizeFcn();var b=this.getDiv();var c=this.shadowOffset;var d=this.getBoundsOf(B);var e=a.offset();var f=a.outerHeight();var g=e.top-d.y;var h=d.height-f-g;var i=g>h&&b.outerHeight(false)+c>h;var j=a.outerWidth();var k=d.x+d.width-e.left;var l=e.left+j-d.x;var m=l>k&&b.outerWidth(false)+c>k;this.setMaxSize({height:(i?g:h),width:(m?l:k)});this.setMinSize({width:a.outerWidth()+this.shadowOffset});this.postSizeFcn()};p._setBoundsInside=function(){var a=this.invoker;var b=this.bounds;var c=this.boundsExact;var d=this.getDiv();this.preSizeFcn();var e=this.getBoundsOf(a);var x=e.x;var y=e.y;var w=e.width;var h=e.height;var f=parseInt;var g={top:b['top'],left:b['left'],bottom:b['bottom'],right:b['right']};for(var k in g){if(g.hasOwnProperty(k)){if(g[k]<=0){g[k]=0}else if(g[k]<=1){g[k]=k=='top'||k=='bottom'?h*g[k]:w*g[k]}else{g[k]=f(g[k])}}}var i={'width':w-g['left']-g['right']+this.shadowOffset,'height':h-g['top']-g['bottom']+this.shadowOffset};this.setMaxSize({width:i.width,height:i.height});if(c){this.setMinSize({width:i.width,height:i.height})}this.postSizeFcn()};p.preSizeFcn=function(){var a=this.getDiv();var b=a.children();b.css('display','none');var c=b.eq(1);if(this.showClose||this.title){c=c.add(b.eq(0))}if(this.showOk){c=c.add(b.eq(2))}c=c.add(a);c.css({'display':'block','float':'','overflow':'visible'});c.css({'maxHeight':'','maxWidth':'','minHeight':'','minWidth':'','height':'','width':'','overflow':'','visibility':'visible','float':''});a.css({'margin':'0px','zIndex':this.zIndex,'position':'absolute'});var d=this.getBoundsOf();a.css({'left':d.x+'px','top':d.y+'px'})};p.postSizeFcn=function(){var a=this.getDiv();var b=a.children();var c=b.eq(0);var d=b.eq(1);var e=b.eq(2);var f=(a.height()-c.outerHeight(true)-e.outerHeight(true)-(d.outerHeight(true)-d.height()));if(f>0){d.css('height',f+'px')}d.css('overflow','auto');this.setOffset()};p._setOffsetAsPopup=function(){var a=this.getDiv();var b=this.shadowOffset;var c=this.getBoundsOf(B);var d=this.invoker;var e=d.offset();var f=d.outerHeight();var g=e.top-c.y;var h=c.height-f-g;var i=g>h&&a.outerHeight(false)+b>h;var j=d.outerWidth();var k=c.x+c.width-e.left;var l=e.left+j-c.x;var m=l>k&&a.outerWidth(false)+b>k;var n={'left':m?e.left+j-a.outerWidth(true)-b:e.left,'top':(i?e.top-a.outerHeight(true):e.top+f)};a.css({'top':n.top+'px','left':n.left+'px'});this.refreshShadow()};p._setOffsetInside=function(){var a=this.getDiv();var b=this.invoker;var c=this.getBoundsOf(b);var d=this.bounds;var x=c.x;var y=c.y;var w=c.width;var h=c.height;var e=parseInt;var f={top:d['top'],left:d['left'],bottom:d['bottom'],right:d['right']};for(var k in f){if(f.hasOwnProperty(k)){if(f[k]<=0){f[k]=0}else if(f[k]<=1){f[k]=k=='top'||k=='bottom'?h*f[k]:w*f[k]}else{f[k]=e(f[k])}}}var g={'width':w-f['left']-f['right']+this.shadowOffset,'height':h-f['top']-f['bottom']+this.shadowOffset};var i=a.outerWidth(true);var j=a.outerHeight(true);var l=0;var m=0;if(i<g.width){l=(g.width-i)/2}if(j<g.height){m=(g.height-j)/2}a.css({'left':(x+f['left']+l)+'px','top':(y+f['top']+m)+'px'});this.refreshShadow()};p.getBounds=function(){return this.getBoundsOf(this.getDiv())};p.getBoundsOf=function(a){var b={x:0,y:0,width:0,height:0};if(!a||!(a instanceof $)){a=B}if(a[0]===z){b.x=a.scrollLeft();b.y=a.scrollTop()}else{var c=a.offset();b.x=c.left;b.y=c.top}b.width=a.width();b.height=a.height();return b};p.setMaxSize=function(a){var b=this.getDiv();this._convertSize(b,a);var c;if(a.hasOwnProperty('width')){if(!c){c={}}c.maxWidth=a.width+'px'}if(a.hasOwnProperty('height')){if(!c){c={}}c.maxHeight=a.height+'px'}if(c){b.css(c)}return a};p.setMinSize=function(a){var b=this.getDiv();this._convertSize(b,a);var c;if(a.hasOwnProperty('width')){if(!c){c={}}c.minWidth=a.width+'px'}if(a.hasOwnProperty('height')){if(!c){c={}}c.minHeight=a.height+'px'}if(c){b.css(c)}return a};p._convertSize=function(a,b){var c={'width':a.outerWidth(true)-a.width(),'height':a.outerHeight(true)-a.height()};if(b.hasOwnProperty('width')){b.width-=(c.width+this.shadowOffset)}if(b.hasOwnProperty('height')){b.height-=(c.height+this.shadowOffset)}};p.offset=function(a){var b=this.getDiv();b.offset(a)};p.close=function(){this.__isClosing=true;if(this._resizeTimeInterval!==undefined){clearInterval(this._resizeTimeInterval);this._resizeTimeInterval=undefined}this.setFocusCycleRoot(false);var c=this.getDiv();var d=this._getShadow();if(d!==undefined){d.remove()}var e=this;var f=this.defaultCloseOperation=='remove';c.hide(this.fadeOutTime,function(){if(f){c.remove()}var a='_tmpHandlers'+e.getId();if(e[a]){var b=e[a];delete e[a];e.invoker.unbind('click');for(var k=0;k<b.length;k++){var h=b[k];e.invoker.bind(h.type+(h.namespace?"."+h.namespace:""),h.handler)}}delete e['__isClosing'];if(arguments&&arguments.length>0&&typeof arguments[0]==='string'){e.trigger('close',arguments[0])}else{e.trigger('close')}})};p.setTimeout=function(a,b){var c=this;var t=undefined;if(a==='show'){t=setTimeout(function(){c.show()},b)}else if(a==='close'){t=setTimeout(function(){c.close()},b)}return t};p.getShadowDivId=function(){return this.getId()+"_shadow"};p.getFocusAttr=function(){return this.getId()+"_focus"};p.getFormDataAttrName=function(){return this.getId()+"_data"}})(PopupDiv.prototype);
diff --git a/telemeta/htdocs/js/popupdiv.js b/telemeta/htdocs/js/popupdiv.js
deleted file mode 100644 (file)
index a1c5a9b..0000000
+++ /dev/null
@@ -1,1319 +0,0 @@
-/*\r
- * Copyright (C) 2007-2011 Parisson\r
- * Copyright (c) 2011 Riccardo Zaccarelli <riccardo.zaccarelli@gmail.com>\r
- *\r
- * This file is part of TimeSide.\r
- *\r
- * TimeSide is free software: you can redistribute it and/or modify\r
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation, either version 2 of the License, or\r
- * (at your option) any later version.\r
- *\r
- * TimeSide is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with TimeSide.  If not, see <http://www.gnu.org/licenses/>.\r
- *\r
- * Author: Riccardo Zaccarelli <riccardo.zaccarelli@gmail.com>\r
- */\r
-\r
-/**\r
- * Class for showing non-modal dialogs such as popups or combo lists. Requires jQuery. Works in IE7+, FF, Chrome. In IE7 some dimensions\r
- * do not span the whole optimized width. Probably due to a bug in calculating the size when scrollbars are present. It works however.\r
- * This class builds an absolutely positioned div for popup forms, message dialogs or listitem popup (emilating the\r
- * <select> tag element popup). If you're scared about the doc, scroll below to see some examples.\r
- * Usage:\r
- * var p = new PopupDiv(dictionary); p.show(); or simply new PopupDiv(dictionary).show();\r
- * dictionary is an object with the following parameters (In brackets the default value if missing). None of them is mandatory, but\r
- * at least the property 'content' should be specified, unless showing an empty div is what you want to get)\r
- * content (""): the popup content. Can be:\r
- *      1) a dictionnary of key:val pairs (form filling popup). Each pair represents a row in the popup. The row will be a div with\r
- *          a <span> with innerHTML=key followed by an <input> with value = val. The popup takes care of <span>s and <input>s horizontal alignement so there should be\r
- *          no need of extra css). The type of <input> is determined as follows:\r
- *          a) val is boolean: <input type=checkbox>\r
- *          b) val is an array of strings: <select> tag (non multi select. Yes, it is not an <input> tag in the strict term...)\r
- *          c) otherwise: <input type=text> with val.toString as value\r
- *          If showOk is true (see below), a click on the ok anchor will trigger the popup onOk callback (see below) with\r
- *          argument a dictionary of (key: <input> value) pairs\r
- *      2) an array of strings for (list item popup). Each array element (string) S will be represented by a row of the popup (internally, an anchor with innerHTML=S). A click on each anchor triggers the onOk callback (see onOk below), with argument an object of the form {selIndex:N},\r
- where N is the index of the anchor being clicked\r
- *      3) a jQuery object: the content will be appended to the popup\r
- *      4) otherwise: content.toString() will be set as the popup innerHTML\r
- *        In all of these cases, object inserted in the popup via the content property can be retrieved and manipulated via the popup.find method (same syntax as in jQuery)\r
- * invoker (jQuery(window)): a jQuery object representing an html element. If invoker is:\r
- *        a clickable element (anchor, input of type button or submit, button), then the PopupDiv will behave as a <select> popuplist of invoker.\r
- *          Thus, when showing, the PopupDiv will calculate the available space nearby invoker to show up in the window corner next to invoker which best fits its size. In this case the parameter focusable (see below) is usually set to true\r
- *        Otherwise, the popupdiv will be centered inside invoker. Note that internally each popupdiv is appended to the body element, so it will\r
- *            be visually centered in invoker, it does not belong to invoker children (well, unless invoker is the jQuery('body') element). In this case the parameters bounds and/or boundsExact (see below) might be also specified\r
- * bounds ({'top':0.25, 'left':0.25, 'right':0.25, 'bottom':0.25}): if invoker is a clickable element, it is ignored. Otherwise, specifies the\r
- *      insets (margins) of the popup within invoker (internally, the popup has no margins, so bounds represent the distances from each window\r
- *      size: top, left, right, bottom). Each bounds element can be in percentage of invoker size if lower than 1 (eg, bounds.left = 0.25: popup left margin is 25% of invoker width, and so on) or as pixel measure (if greater than 1)\r
- * boundsExact (false): if invoker is a clickable element, it is ignored. Otherwise, specifies whether bounds (see above) should be a hint\r
- *      (maximum allowed margins) or an exact measure. In other words, with boundsExact the popup will have the size of the rectangle R\r
- *      determined by invoker size and bounds. Otherwise, the maximum popup size will be R, and if the popup size is included in R, it\r
- *      will be centered in R. NOTE: padding margin and border, if set via the property popupClass or popupCss (see below) might alter\r
- *      the real height and width of the rectangle (those properties are ADDED to the natural height/width of the popup)\r
- * focusable (false): boolean. When true, the popup gains the focus when shown, and disappears when losses the focus\r
- *      (popup.close() is called, see below)\r
- * showOk (false): determines whether or not an ok button should be shown at the bottom of the popup. The ok button is an <a> tag whose\r
- *      click will trigger the popup.onOk callback (see below). This parameter should always be true for form filling popup (see PopupDiv.content above) and when onOk is specified (see below)\r
- * okButtonTitle ('Ok') [see note4]: self-explanatory\r
- * onOk (null): callback. callback to be executed when the ok button is pressed. When specified, showOk must be set to true.\r
- *        The callback takes as argument a dictionary that the popup will build by retrieving all <input> <select> or <textarea>\r
- *        elements among its children: each element E whith attribute A = popup.getFormDataAttrName() (static popup method), will denote the property\r
- *        [A:E_value] of the dictionary. Elements with such attributes are automatically created when content (see above) is\r
- *        an object (form fill popup) or an array (listItem popup), but the user might provide its own custom implementation, for instance:\r
- *         popup.setContent("<input type='text' "+popup.getFormDataAttrName()+"='default value'/>");popup.showOk=true;\r
- *        After each onOk callback has been executed, popup.close() will be always called\r
- * onShow (null): callback to be executed when the popup shows up\r
- * defaultCloseOperation ('hide'): specified what to do when popup.close() is called. 'remove' calls jQuery.remove() on the popup, ie it removes the html element from the document, 'hide' or any other value simply call jQuery.hide() on the popup\r
- * onClose (null): callback to be executed when the popup .close() function is called. The callback must take one argument (string) which\r
- *        denotes wether the popup is closing  because of 1) the ok button click, 2) a lost of focus, 3) the close button click or 4)\r
- *        another reason (eg, a custom code call to popup.close()). In these cases, the string argument is\r
- *        1) "okClicked", 2) "focusLost", 3) "closeClicked" and 4) the empty string ""\r
- * showClose (false): a parameter specifying whether a close button should appear on the top-right corner of the popup. Clicking the close button\r
- *      (internally, an <a> tag) will close the popup and trigger popup.close() (and associated callbacks bindings, if any)\r
- * closeButtonTitle ('x') [see note4]: self-explanatory\r
- * title (""): a parameter specifying whether the popup should have a title. The title will be placed on the top of the popup.\r
- * shadowOffset (4): the shadow offset, in pixels. Each popup has a 'shadow' which renders a kind of 3d raised effect. Set to 0 if no shadow must be visualized\r
- * p.okButtonAlign ('right'): self-explanatory. Takes the same argument as css text-align property. The css property text-align is set on the ok button parent div, so if okButtonClass (see below) is specified it might override the button alignement behaviour\r
- * popupClass ("") [see note1+2]: the popup class(es). The top and bottom divs (housing title/close and ok buttons respectively) are not affected by this parameter\r
- * popupCss ({}) [see note1+3]: the popup css. The top and bottom divs (housing title/close and ok buttons respectively) are not affected by this parameter\r
- * okButtonClass ('') [see note1+2+4]: the ok button class\r
- * closeButtonClass ('') [see note1+2+4]: the close button class\r
- * titleClass ('') [see note1+2]: the title class\r
- * listItemClass ('') [see note1+2]: the list items css, valid only if the popup is a listitem popup (see content above):\r
- *         it applies to each popup row (internally, an <a> tag with display block)\r
- * listItemCss ('') [see note1+3]: the list items css, valid only if the popup is a listitem popup (see content above):\r
- *        it applies to each popup row (internally, an <a> tag with display block)\r
- * fadeInTime ('fast'): the fade in time when popup.show() is called. See jQuery show for possible values (briefly, a number in milliseconds or the string 'fast' or 'slow')\r
- * fadeOutTime (0): the fade out time when popup.close() is called. See jQuery show for possible values (briefly, a number in milliseconds or the string 'fast' or 'slow')\r
- * shadowOpacity (0.25): self-explanatory. 1 means shadow completely black, 0 completely transparent (bascially, no shadow)\r
- * zIndex (10000): the popup zIndex. Should be left untouched unless there are issues with other component with hight zIndex.\r
- *\r
- * [note1] IMPORTANT: For every css or class parameter, some css styles might be overridden before showing the popup because they would interfere with the correct placement and\r
- *      appearence of the popup: surely, 'display', 'position' and 'visibility' are among them. Usually, also 'size' css properties\r
- *      such as width, height, left, right ectetera. Css and class parameters are useful for customizing the popup 'visually' (eg, colors, font,\r
- *      backgrounds etcetera)\r
- * [note2]: class arguments are in the same form of jQuery.addClass() argument (ie, a string which can denote also multiple classes separated by spaces)\r
- * [note3]: css arguments are in the same form of jQuery.css() argument (ie, an object of cssName:cssValue pairs)\r
- * [note4]: to customize ok button (closeButton respectively) with css (eg, with an icon), specify a background image in the class AND an height and a width (or padding),\r
- * otherwise title and icon might overlap or, if okButtonTitle (closeButtonTitle respectively) is the empty string '', the button will be invisible. Note that the anchor has by default\r
- * display = inline-block, so dimensions can be specified.\r
- *\r
- * And finally, EXAMPLES:\r
- * Given an anchor <a> (jQuery element)\r
- *      1) show a popup when clicking <a> leaving the user choose among three oprions: 'banana', 'orange' and 'apple'. The popup will\r
- *      behave as a default popup hiding when it looses focus\r
- *      //setup parameters\r
- *      var choices = ['banana','oranges','apples'];\r
- *      var dict = {\r
- *          content: choices,\r
- *          onOk: function(data){\r
- *              var fruitChosen = choices[data.selIndex];\r
- *              //.. do something with the selected fruit....\r
- *          },\r
- *          focusable: true,\r
- *          invoker: a,\r
- *          defaultCloseOperation: ' remove'\r
- *      }\r
- *      //bind the click event of the anchor:\r
- *      a.click(function(){ new PopupDiv(dict).show();});\r
- *\r
- *      1) show a popup when clicking <a> leaving the user choose the fruit as text. The popup will close either when ok or close are clicked\r
- *      //setup parameters\r
- *      var choices = {'yourFruit':'banana'}; //banana will be the default value when the popup shows\r
- *      var dict = {\r
- *          content: choices,\r
- *          showClose: true,\r
- *          showOk: true,\r
- *          onOk: function(data){\r
- *              var fruitChosen = data['yourFruit'];\r
- *              //.. do something with the selected fruit....\r
- *          },\r
- *          invoker: a\r
- *      }\r
- *      //bind the click event of the anchor:\r
- *      a.click(function(){ new PopupDiv(dict).show();});\r
- *\r
- *      3) show a message dialog which expires after 1500 milliseconds. No invoker specified means the popup will be centered in screen\r
- *      new PopupDiv.show({\r
- *          content: "i'm gonna disappear!", //one could also input "<span>i'm gonna disappear!</span>" or jQuery('<span/>').html("i'm gonna disappear!")\r
- *          onShow: function(){\r
- *              var me = this; //this refers to the popup\r
- *              setTimeout(function(){\r
- *                  this.close();\r
- *              }, 1500);\r
- *          }\r
- *      });\r
- */\r
-function PopupDiv() {\r
-    var $J = jQuery;\r
-    var me = this;\r
-    var data = {};\r
-    if(arguments.length && arguments[0]){\r
-        data= arguments[0];\r
-    }\r
-    //var wdw = $J(window);\r
-    var div  = $J('<div/>');\r
-    //we use an input rather than a span for two reasons:\r
-    //1: span with overflow:hidden have problems in vertical align with the close button in FF and IE\r
-    //2: if text title overlaps, with a span it is not selectable, with an input it is\r
-    //we however append a span to calculate the input width, not really ortodox I know. See setTitle (below)\r
-    var header = $J('<div/>').append($J('<a/>').attr('href','#').click(function(){\r
-        me.close('closeClicked');\r
-        return false;\r
-    })).append(' ').append($J('<div/>').css('clear','both')); //.css('float','right');\r
-    var container = $J('<div/>').css('overflow','auto');\r
-    var footer = $J('<div/>').append($J('<a/>').attr('href','#').click(function(){\r
-        me.trigger('ok');\r
-        return false;\r
-    }));\r
-    //header.find('*').add(footer.find('*')).css('display','none');\r
-    div.append(header).append(container).append(footer);\r
-\r
-    //defining immediately the method getDiv (because it is used below)\r
-    this.getDiv = function(){\r
-        return div;\r
-    };\r
-    //setting functions:\r
-\r
-    var listeners = {};\r
-    this.getListeners = function(){\r
-        return listeners;\r
-    };\r
-\r
-\r
-    //setting static properties, if any.\r
-    //The idea is that static PopupDiv properties SPP (eg, PopupDiv.shadowOffset = 5) must define default PopupDiv properties values\r
-    //and they should be added to the current PopupDiv\r
-    //instance prototype ONCE (properties in the prototype are shared between all PopupDiv instances)\r
-    //and then deleted from the PopupDiv function.\r
-    //The problem is how to access the prototype: nor __proto__ neither Object.getPrototypeOf(this) are cross browser\r
-    //(see http://ejohn.org/blog/objectgetprototypeof/, which suggests to rewrite a global Object.getPrototypeOf(arg), which\r
-    //however does not work if arg constructor has been manipulated). Eventually, we do the following:\r
-    //Find a prototype variable P: P= Object.getPrototypeOf: is it NOT a function? then P = this.__proto__. Is it NOT an object?\r
-    //then P= this.\r
-    //Populate P, if P = this, we are assigning SPP to each new instance and NOT ONCE to the prototype object, which of course\r
-    //means that SPP's cannot be deleted after their first assignment. This requires more work and more memory consumption\r
-    //but it assures cross browser compatibility\r
-\r
-    var k;\r
-    var staticProps;\r
-    for(k in PopupDiv){\r
-        var f = PopupDiv[k];\r
-        if(PopupDiv.hasOwnProperty(k) && (typeof f !== 'function')){ //do not assign functions (PopupDiv.function... might be used in future as\r
-            //static functions accessible from outside\r
-            if(!staticProps){\r
-                staticProps = {};\r
-            }\r
-            staticProps[k] = f;\r
-        }\r
-    }\r
-    if(staticProps){\r
-        var remove = true;\r
-        var proto = undefined;\r
-        if ( typeof Object.getPrototypeOf !== "function" ) {\r
-            if (typeof this.__proto__ === "object" ) {\r
-                proto = this.__proto__;\r
-            } else {\r
-                // May break if the constructor has been tampered with:\r
-                // proto =  this.constructor.prototype;\r
-                //so we assign static properties to this instance BUT we DO NOT remove static properties\r
-                proto = this;\r
-                remove = false;\r
-            }\r
-        }else{\r
-            proto = Object.getPrototypeOf(this);\r
-        }\r
-        for(k in staticProps){\r
-            if(staticProps.hasOwnProperty(k)){\r
-                proto[k] = staticProps[k];\r
-                if(remove){\r
-                    delete PopupDiv[k];\r
-                }\r
-            }\r
-        }\r
-    }\r
-\r
-    //setting instance-specific properties:\r
-    for(k in data){\r
-        if(data.hasOwnProperty(k)){\r
-            if(k === 'onOk' || k === 'onShow' || k === 'onClose'){\r
-                this.bind(k.substring(2).toLowerCase(),data[k]);\r
-            }else if(k == 'content'){\r
-                this.setContent(data[k]);\r
-            }else {\r
-                this[k] = data[k];\r
-            }\r
-        }\r
-    }\r
-\r
-    if(!this.popupCss){\r
-        this.popupCss = {}; //workaround to update css the first time we call show\r
-    //note that {} evaluates to true, but jQueryElement.css({}) is harmless\r
-    }\r
-\r
-\r
-}\r
-\r
-//populating the prototype object:\r
-(function(p){\r
-    //in the functions below, this refers to the new Popup instance, not to the prototype\r
-\r
-    //private static variables\r
-    var $ = jQuery;\r
-    var w_ = window;\r
-    var d_ = document;\r
-    var wdw = $(w_);\r
-    var popupStaticId = 'popup_'+(new Date().getTime());\r
-\r
-    p.isClickElement = function(element){\r
-        return element && element.length==1 && element instanceof $ && element[0] !== w_ && element[0] !== d_ &&\r
-        (element.is('a') || element.is('input[type=button]') || element.is('button') ||\r
-            element.is('input[type=submit]'));\r
-    };\r
-\r
-    p.getId = function(){\r
-        var div = this.getDiv();\r
-        if(!(div.attr('id'))){\r
-            div.attr('id',popupStaticId+'_'+(new Date().getTime()));\r
-        }\r
-        return div.attr('id');\r
-    };\r
-\r
-\r
-    //default properties which can be overridden\r
-    p.shadowOffset = 4; //zero means: no shadow\r
-    p.invoker = wdw;\r
-    p.bounds = {\r
-        'top':0.25,\r
-        'left':0.25,\r
-        'right':0.25,\r
-        'bottom':0.25\r
-    }; //note that sepcifying top+bottom>=1 there is undefined behaviour (in chrome, offset is set but height takes all available space)\r
-    p.boundsExact = false;\r
-    p.popupClass = '';\r
-    p.popupCss = {};\r
-    p.showOk = false;\r
-    p.showClose=false;\r
-    p.title = "";\r
-    p.okButtonClass =  '';\r
-    p.okButtonAlign =  'right';\r
-    p.closeButtonClass =  '';\r
-    p.titleClass =  '';\r
-    p.okButtonTitle =  'Ok';\r
-    p.closeButtonTitle =  'x';\r
-    p.defaultCloseOperation = 'hide';\r
-    p.focusable = false;\r
-    p.fadInTime = 'fast';\r
-    p.fadeOutTime = 0;\r
-    p.shadowOpacity = 0.25;\r
-    p.zIndex = 10000;\r
-    p.listItemClass = '';\r
-    p.listItemCss = '';\r
-\r
-    //returns the data associated to this popup. Basically, it searches for all input, select or textarea with attribute\r
-    //this.getFormDataAttrName(). The use of a custom attribute is cross browser, note that some attributes, eg name, are\r
-    //not (name is not safe in IE for instance)\r
-    p.getFormData = function(){\r
-        var elms = this.find('input,select,textarea');\r
-        var ret = {};\r
-        var att = this.getFormDataAttrName();\r
-        elms.each(function(i,e){\r
-            var ee = $(e);\r
-            var key = ee.attr(att);\r
-            if(key){\r
-                ret[key] = ee.val();\r
-            }\r
-        });\r
-        return ret;\r
-    };\r
-\r
-    //methods:\r
-    p.find = function(argumentAsInJQueryFind){\r
-        return this.getDiv().children().eq(1).find(argumentAsInJQueryFind);\r
-    };\r
-\r
-    p.bind = function(eventName, callback){ //eventname: show, close or ok\r
-        var listeners = this.getListeners();\r
-        if(listeners.hasOwnProperty(eventName)){\r
-            listeners[eventName].push(callback);\r
-        }else{\r
-            listeners[eventName] = [callback];\r
-        }\r
-    };\r
-\r
-\r
-    p.unbind = function(eventName){\r
-        var listeners = this.getListeners();\r
-        if(eventName && listeners.hasOwnProperty(eventName)){\r
-            delete listeners[eventName];\r
-        }else if(!eventName){\r
-            for(var k in listeners){\r
-                if(listeners.hasOwnProperty(k)){\r
-                    delete listeners[k];\r
-                }\r
-            }\r
-        }\r
-    };\r
-\r
-    p.trigger = function(eventName){\r
-        var listeners = this.getListeners();\r
-        var me = this;\r
-        if(listeners.hasOwnProperty(eventName)){\r
-            var callbacks = listeners[eventName];\r
-            var i = 0;\r
-            if(eventName == 'ok'){\r
-                var data = this.getFormData();\r
-                for(i=0; i<callbacks.length; i++){\r
-                    callbacks[i].apply(me,[data]);\r
-                }\r
-                this.close('okClicked');\r
-            }else if(eventName == 'close'){\r
-                var str = "";\r
-                if(arguments && arguments.length>1 && typeof arguments[1] === 'string'){\r
-                    str = arguments[1];\r
-                }\r
-                for(i=0; i<callbacks.length; i++){\r
-                    callbacks[i].apply(me,[str]);\r
-                }\r
-            }else{\r
-                for(i=0; i<callbacks.length; i++){\r
-                    callbacks[i].apply(me);\r
-                }\r
-            }\r
-        }\r
-    };\r
-\r
-    p.setContent = function(content){\r
-        var div = this.getDiv();\r
-        var container =   $($(div).children()[1]);\r
-        //div.appendTo('body'); //necessary to properly display the div size\r
-        container.empty();\r
-        var att = this.getFormDataAttrName();\r
-        if(content instanceof $){\r
-            container.append(content);\r
-        }else if(content instanceof Array){\r
-\r
-            var me = this;\r
-            //var name = this.getListItemName();\r
-            var input = $('<input/>').attr('type','hidden').attr(att,'selIndex');\r
-            var setEvents = function(idx,anchor,input){\r
-                anchor.click(function(){\r
-                    input.val(idx);\r
-                    me.trigger('ok');\r
-                    return false;\r
-                }).focus(function(){ //focus because we need to get the value if ok is present\r
-                    input.val(idx);\r
-                })\r
-            };\r
-            var listItems = $([]);\r
-            for(var h=0; h<content.length; h++){\r
-                var item = content[h];\r
-                var a = $('<a/>').attr('href','#').html(""+item); //.css('whiteSpace','nowrap');\r
-                listItems = listItems.add(a);\r
-                setEvents(h,a,input);\r
-                container.append(a);\r
-            }\r
-            //set css and class on all listitem anchor:\r
-            //set margin to properly display the outline (border focus)\r
-            //this css can be overridden (see lines below) as it is not strictly necessary\r
-            listItems.css({\r
-                'margin':'2px'\r
-            });\r
-            if(this.listItemClass){\r
-                listItems.addClass(this.listItemClass);\r
-            }\r
-            if(this.listItemCss){\r
-                listItems.css(this.listItemCss);\r
-            }\r
-            //override css which are necessary to properly display the listItem:\r
-            listItems.css({\r
-                'position' : '',\r
-                'display':'block'\r
-            });\r
-            container.append(input);\r
-        }else if(content && content.constructor == Object){\r
-            var leftElements = $([]);\r
-            var rightElements = $([]);\r
-            var maxw = [0,0];\r
-            var insert = function(e1,e2){\r
-                var lineDiv = $('<div/>');\r
-                if(!e2){\r
-                    e2=e1;\r
-                    e1 = $('<span/>');\r
-                }\r
-                rightElements = rightElements.add(e2);\r
-                leftElements = leftElements.add(e1);\r
-                container.append(lineDiv.append(e1).append(e2));\r
-                return lineDiv;\r
-            };\r
-            var title, component;\r
-\r
-            var max = Math.max; //instantiate once\r
-            var lineDiv = undefined;\r
-            var lineDivs = $([]);\r
-            for(var k in content){\r
-                if(content.hasOwnProperty(k)){\r
-                    var val = content[k];\r
-                    if(typeof val == 'string' || typeof val == 'number'){\r
-                        title = $('<span/>').html(k);\r
-                        maxw[0] = max(maxw[0],k.length);\r
-                        maxw[1] = max(maxw[1],val.length);\r
-                        component = $('<input/>').attr('type','text').val(val).attr(att,k);\r
-                        lineDivs = lineDivs.add(insert(title,component));\r
-                    }else if(val === true || val === false){\r
-                        var id = this.getId()+"_checkbox";\r
-                        title = $('<input/>').attr('type','checkbox').attr(att,k).attr('id',id);\r
-                        if(val){\r
-                            title.attr('checked','checked');\r
-                        }else{\r
-                            title.removeAttr('checked');\r
-                        }\r
-                        component = $('<label/>').attr('for',id).html(k);\r
-                        maxw[1] = max(maxw[1],k.length);\r
-                        lineDivs = lineDivs.add(insert($('<span/>').append(title),component));\r
-                    }else if(val instanceof Array){\r
-                        title = $('<span/>').html(k);\r
-                        maxw[0] = max(maxw[0],k.length);\r
-                        component = $('<select/>').attr('size',1).attr(att,k);\r
-                        for(var i=0; i< val.length; i++){\r
-                            component.append($('<option/>').val(val[i]).html(val[i]));\r
-                            maxw[1] = max(maxw[1],val[i].length);\r
-                        }\r
-                        lineDivs = lineDivs.add(insert(title,component));\r
-                    }\r
-                    if(lineDiv){\r
-                        lineDiv.css('marginBottom','1ex');\r
-                    }\r
-                }\r
-            }\r
-            lineDivs.css({\r
-                'white-space': 'nowrap',\r
-                'marginBottom': '0.5ex'\r
-            });\r
-            //last div erase marginBottom\r
-            $(lineDivs[lineDivs.length-1]).css('marginBottom','');\r
-\r
-\r
-            //display: inline-block below assures that width are properly set\r
-            //IE 6/7 accepts the value only on elements with a natural display: inline.\r
-            //(see http://www.quirksmode.org/css/display.html#t03)\r
-            //span and anchors are among them\r
-            //(see http://www.maxdesign.com.au/articles/inline/)\r
-            leftElements.add(rightElements).css({\r
-                'display':'inline-block',\r
-                'margin':'0px',\r
-                'padding':'0px'\r
-            });\r
-            leftElements.css({\r
-                'textAlign':'right',\r
-                'marginRight':'0.5ex',\r
-                'width':Math.round((3/5)*maxw[0])+'em'\r
-            });\r
-            rightElements.css({\r
-                'width':Math.round((3/5)*max(maxw[0], maxw[1]))+'em' //approximate width\r
-            }); //might be zero if default values are all ""\r
-        }else{\r
-            container.append(""+content);\r
-        }\r
-    };\r
-\r
-    p.setFocusCycleRoot = function(value){\r
-        //var value = this.focusable;\r
-        var popup = this.getDiv();\r
-        var focusAttr = this.getFocusAttr();\r
-        var invokerIsClickable = this.isClickElement(this.invoker);\r
-        var children_ = popup.children();\r
-        var topDiv = $(children_[0]);\r
-        var centralDiv = $(children_[1]);\r
-        var bottomDiv = $(children_[2]);\r
-        var elementsWithFocus =  centralDiv.find('input[type!=hidden],select,textarea,a'); //input:not(:hidden),select,textarea,a,\r
-\r
-        //set the element with focus by default if there is no focusable element inside the popup\r
-        var ret = elementsWithFocus.length ? $(elementsWithFocus[0]) : centralDiv;\r
-\r
-        if(this.showClose){\r
-            elementsWithFocus =elementsWithFocus.add(topDiv.find('a'));\r
-        }\r
-        if(this.showOk || this.title){\r
-            elementsWithFocus = elementsWithFocus.add(topDiv.find(':text'));\r
-            if(this.showOk){\r
-                elementsWithFocus = elementsWithFocus.add(bottomDiv.find('a'));\r
-            }\r
-        }\r
-        popup.add(centralDiv).css('outline','#FFF none 0px'); //DO NOT SHOW BORDER FOCUS FOR DIVS (NICER). Doesnt work in IE7\r
-        elementsWithFocus = elementsWithFocus.add(popup).add(centralDiv);\r
-        //we add the popup div cause in case of padding clicking on the popup padding should NOT hide the popup\r
-        //we add the centralDiv cause, if scrollbars are present, then moving the scrollbars sets the focus to the\r
-        //centralDiv in IE and therefore the popup would hide\r
-\r
-        \r
-        var focusNameSpace = "blur."+this.getId();\r
-        if(!value){\r
-            elementsWithFocus.each(function(i,elm){\r
-                $(elm).unbind(focusNameSpace).removeAttr('tabindex').removeAttr(focusAttr);\r
-            });\r
-            this.getFirstFocusableElement = function(){\r
-                return undefined;\r
-            };\r
-            if(invokerIsClickable){\r
-                this.invoker.removeAttr('tabindex').removeAttr(focusAttr);\r
-            }\r
-            return;\r
-        }\r
-        if(invokerIsClickable){\r
-            this.invoker.attr('tabindex',0).attr(focusAttr,'true');\r
-        }\r
-        var doc_ = d_; //closure (see nested function below)\r
-\r
-        //now all elements (including header and footer)\r
-\r
-        var me = this;\r
-        //bind the blur to each focusable element:\r
-        elementsWithFocus.each(function(i,e){\r
-            var ee = $(e);\r
-            ee.attr(focusAttr,'true');\r
-            ee.attr('tabindex',i+1);\r
-            ee.unbind(focusNameSpace).bind(focusNameSpace,function(){\r
-                //wait 250msec to see if the focus has been given to another popup focusable element: if yes, do nothing\r
-                //otherwise execute callback\r
-                setTimeout(function(){\r
-                    var v = doc_.activeElement;\r
-                    \r
-                    if((v && $(v).attr(focusAttr)) || me.__isClosing){\r
-                        //if we are closing, we will call back this method which removes the focus attributes, bt meanwhile the\r
-                        //timeout should execute\r
-                        return;\r
-                    }\r
-\r
-                    me.close('focusLost');\r
-                },200)\r
-            }); //set here another time delay. 300 seems to be the good compromise between visual hide and safetiness that\r
-        //meanwhile the focus has already been given to the next component\r
-        });\r
-        this.getFirstFocusableElement = function(){\r
-            return ret;\r
-        }\r
-    };\r
-    p.getFirstFocusableElement = function(){\r
-        return undefined;\r
-    };\r
-\r
-    p.refresh = function(content, title){\r
-        var showing = this.isShowing();\r
-        var focusable = this.focusable;\r
-        if(content!==undefined){\r
-            this.setContent(content);\r
-            if(showing && focusable){\r
-                this.setFocusCycleRoot(this.focusable);\r
-            }\r
-        }\r
-        if(title!=undefined){\r
-            if(showing){\r
-                this.setTitle(title);\r
-            }else{\r
-                this.title = title;\r
-            }\r
-        }\r
-        if(!showing){\r
-            return; //show(), when called, will update size and other stuff written in this method here bwloe\r
-        }\r
-        this.setBounds();\r
-        \r
-        \r
-        if(focusable){\r
-            this.getFirstFocusableElement().focus();\r
-        }\r
-    };\r
-\r
-    p.setTitle = function(title){\r
-        var subdiv = this.getDiv().children().eq(0);\r
-\r
-\r
-        var text = subdiv.contents().filter(function() {\r
-            return this.nodeType == 3;\r
-        });\r
-        \r
-        var node = text.get(0);\r
-        if(!title){\r
-            //if title is the empty string, apparently the text node seems to be "deleted", so resetting\r
-            //the title later has no effect. Setting a white space is not really perfect, as we could have extra space. However,\r
-            //if assures at least a minimum width if the container is empty\r
-            title=' ';\r
-        }\r
-        if (node.textContent) {\r
-            node.textContent = title;\r
-        } else if (node.nodeValue) {\r
-            node.nodeValue = title;\r
-        }\r
-    };\r
-\r
-    p.isShowing = function(){\r
-        return this.getDiv().is(':visible');\r
-    };\r
-\r
-    p.show = function(){\r
-        var div = this.getDiv();\r
-        var me = this;\r
-        var invoker = this.invoker;\r
-        var isClickElement = this.isClickElement(invoker);\r
-        this._isClickElement = isClickElement;\r
-        this.setBounds = isClickElement ? this._setBoundsAsPopup : this._setBoundsInside;\r
-        this.setOffset = isClickElement ? this._setOffsetAsPopup : this._setOffsetInside;\r
-\r
-        if(this.popupClass){\r
-            //this.popupClass might be in the prototype (not set by user)\r
-            div.removeClass().addClass(this.popupClass);\r
-            this.popupClass = ''; //override prototype property\r
-        }\r
-        if(this.popupCss){\r
-            //this.popupCss might be in the prototype (not set by user)\r
-            div.css(this.popupCss);\r
-            this.popupCss = ''; //override prototype property\r
-        }\r
-        \r
-\r
-        this.setFocusCycleRoot(this.focusable);\r
-\r
-        var subdiv = div.children();\r
-        //configure buttons. Text and classes are added here cause might have been changed\r
-        var topDiv = $(subdiv[0]);\r
-        var closeBtn = topDiv.find('a').eq(0);\r
-\r
-        if(this.showClose || this.title){\r
-            topDiv.css({\r
-                'paddingBottom':'0.25em'\r
-            //,'whiteSpace':'nowrap'\r
-            }); //add padding to bottom\r
-            //warning: do NOT use real numbers such as 0.5ex cause browsers round it in a different manner\r
-            //whiteSpace is FUNDAMENTAL in calculating the popup div in case the title is the longest (max width) element\r
-            //in the popup div. We will set the same whitespace css also on the title (see below)\r
-\r
-            if(this.titleClass && this.title){\r
-                topDiv.attr('class',this.titleClass);\r
-                this.titleClass='';\r
-            }\r
-\r
-\r
-            if(this.showClose){\r
-                closeBtn.css('marginLeft','0.5em').attr('class',this.closeButtonClass).html(this.closeButtonTitle).css({\r
-                    'display':'inline-block',\r
-                    'float':'right'\r
-                //warning: do NOT use real numbers such as 0.5ex cause browsers round it in a different manner\r
-                //inline-block in order to retrieve/set width and height on the element\r
-                });\r
-            }else{\r
-                closeBtn.hide(); //margin:0 is to be sure, as afterwards we must span the title the whole popup width\r
-            }\r
-            this.setTitle(this.title);\r
-        }\r
-\r
-        var bottomDiv = $(subdiv[2]);\r
-        var okButton = bottomDiv.find('a').eq(0);\r
-        //see note above about why we dont use okButton.is(':visible')\r
-        if(this.showOk){\r
-            bottomDiv.css({\r
-                'paddingTop':'0.25em',\r
-                'textAlign':this.okButtonAlign\r
-            }); //add padding to bottom\r
-            //warning: do NOT use real numbers such as 0.5ex cause browsers round it in a different manner\r
-            okButton.attr('class', this.okButtonClass); //removes all existing classes, if any\r
-            okButton.html(this.okButtonTitle);\r
-            okButton.css({\r
-                'float':'none',\r
-                'display':'inline-block'\r
-            }); //in order to set width and height on the element\r
-        }\r
-\r
-        if(!div.parent().length){ //to be done before setsetBounds\r
-            div.appendTo('body');\r
-        }\r
-\r
-        \r
-        if(isClickElement){\r
-            //storing click events, when showing clicking on an event must give the focus to the popup\r
-            //old handlers will be restored in close()\r
-            this['_tmpHandlers'+this.getId()] = undefined;\r
-            var focusElm = this.getFirstFocusableElement();\r
-            if(focusElm){\r
-                var oldHandlers = [];\r
-                var type = 'click';\r
-                var clickEvents =invoker.data("events")[type];\r
-                $.each(clickEvents, function(key, value) {\r
-                    oldHandlers.push(value);\r
-                });\r
-                invoker.unbind(type); //remove (temporarily) the binding to the event.\r
-                //for instance, if we show the popup by clicking invoker, when the popup is shown do nothing\r
-                //on clicking invoker until popup.hide is called\r
-\r
-                this['_tmpHandlers'+this.getId()] = oldHandlers;\r
-                invoker.unbind(type).bind(type,function(evt){\r
-                    //let the invoker have focus and let it be recognized as an element which does not blur the popup:\r
-                    //invoker.attr('tabindex',0).attr(focusAttr,'true');\r
-                    if(div.length && div.is(':visible')){\r
-                        focusElm.focus();\r
-                        return false;\r
-                    }\r
-                    //something wrong: close the popup and restore the hanlers\r
-                    me.close.apply(me);\r
-                    return false;\r
-                });\r
-            }\r
-\r
-        }\r
-        this.setBounds();\r
-       \r
-        var shadow = this._getShadow();\r
-        var place = this.setOffset;\r
-        var postShowFcn = function(){\r
-            //adding window resize interval to track window changes\r
-            var w = wdw.width();\r
-            var h = wdw.height();\r
-            me._resizeTimeInterval = setInterval(function(){\r
-                var w2 = wdw.width();\r
-                var h2 = wdw.height();\r
-                if(w2!==w || h2 !==h){\r
-                    setTimeout(function(){\r
-                        if(!me.isShowing() || me.__isClosing){\r
-                            return;\r
-                        }\r
-                        if(wdw.width()===w2 && wdw.height()===h2){\r
-                            place.apply(me);\r
-                        }\r
-                    },100);\r
-                }\r
-            },200);\r
-\r
-\r
-            me.trigger('show');\r
-            if(shadow !== undefined){\r
-                shadow.fadeTo(me.fadInTime,me.shadowOpacity, function(){\r
-                    var v = me.getFirstFocusableElement();\r
-                    if(v){\r
-                        v.focus();\r
-                    }\r
-                });\r
-            }else{\r
-                var v = me.getFirstFocusableElement();\r
-                if(v){\r
-                    v.focus();\r
-                }\r
-            }\r
-            \r
-        };\r
-\r
-        div.show(this.fadInTime,function(){\r
-            postShowFcn();\r
-        });\r
-    };\r
-    //div must be visible\r
-    p.refreshShadow = function(){\r
-        var shadow = this._getShadow(); //$('#'+this.getShadowDivId());\r
-        var so = this.shadowOffset;\r
-        if(!so && shadow !== undefined){\r
-            shadow.remove();\r
-        //shadow = undefined;\r
-        }else if(so){\r
-            var div = this.getDiv();\r
-            if(shadow === undefined){\r
-                //creating shadow. Remove attributes tabindex (unnecessary) and especially focusAttr,\r
-                //so that clicking tab key and setting the shadow focusable hides the popup. If one wants the shadow not to hide the popup. keep\r
-                //focusAttr BUT insert shadow in the focus cycle root (see method)\r
-                shadow = div.clone(false,false).empty().css({\r
-                    'backgroundColor':'#000',\r
-                    'borderColor':'#000',\r
-                    'display':'block',\r
-                    'zIndex':this.zIndex-1\r
-                }).removeAttr('tabindex').removeAttr(this.getFocusAttr()).fadeTo(0,0).\r
-                attr('id',this.getShadowDivId()).insertAfter(div);\r
-            }\r
-            var rect = this.getBounds.apply(this);\r
-            shadow.css({\r
-                'left':(rect.x + so)+'px',\r
-                'top':(rect.y + so)+'px',\r
-                'width':(rect.width)+'px',\r
-                'height':(rect.height)+'px'\r
-            });\r
-        }\r
-    //return shadow;\r
-    };\r
-\r
-    p._getShadow = function(){\r
-        var next = this.getDiv().next('div');\r
-        if(next && next.length && next.attr('id') === this.getShadowDivId()){\r
-            return next;\r
-        }\r
-        return undefined;\r
-    };\r
-\r
-    p._setBoundsAsPopup = function(){\r
-        var invoker = this.invoker;\r
-\r
-        this.preSizeFcn();\r
-\r
-        var div = this.getDiv();\r
-\r
-        var shadowOffset = this.shadowOffset;\r
-        var windowRectangle = this.getBoundsOf(wdw); //returns the window rectangle\r
-\r
-        var invokerOffset = invoker.offset();\r
-\r
-        var invokerOuterHeight = invoker.outerHeight();\r
-        var spaceAbove = invokerOffset.top - windowRectangle.y;\r
-        var spaceBelow = windowRectangle.height - invokerOuterHeight - spaceAbove;\r
-        var placeAbove = spaceAbove > spaceBelow && div.outerHeight(false) + shadowOffset > spaceBelow;\r
-\r
-        var invokerOuterWidth = invoker.outerWidth();\r
-        var spaceRight = windowRectangle.x + windowRectangle.width - invokerOffset.left ;\r
-        var spaceLeft = invokerOffset.left + invokerOuterWidth - windowRectangle.x;\r
-        var placeLeft = spaceLeft > spaceRight && div.outerWidth(false) + shadowOffset > spaceRight;\r
-\r
-        \r
-        this.setMaxSize({\r
-            height : (placeAbove ? spaceAbove : spaceBelow),\r
-            width: (placeLeft ? spaceLeft : spaceRight)\r
-        }); //width will be ignored (for the moment)\r
-        //decrement of one pixel cause when the popup has to be reduced and the shadows bounds "touch" the window right or bottom sides,\r
-        //the window scrolls (and it shouldn't)\r
-\r
-        //setting the minimum size to the invoker width, minheight the same as maxHeight (see above)\r
-        this.setMinSize({\r
-            width: invoker.outerWidth()+this.shadowOffset //workaround to NOT consider the shadow, as offset below substracts the shadow\r
-        //height : spaceAbove>spaceBelow ? spaceAbove : spaceBelow //why this? because if we click the popup a\r
-        //computed height CH seems to be set. At subsequent popup show, CH will be the same UNLESS a new maxHeight lower than CH is set\r
-        //however, we want CH to change even if a new maxHeight greater than CH is set\r
-        });\r
-\r
-        \r
-        this.postSizeFcn();\r
-\r
-    };\r
-    //places and resize the popupdiv inside parent\r
-    //padding is a dict {top:,left:,bottom:..,right:,...} measuring the distance of the popupdiv from the corners, so that\r
-    //padding={top:0.25,left:0.25,bottom:0.25,right:0.25} will place the popupdiv at the center of parent\r
-    //padding={top:25,left:25,bottom:25,right:25} will place the popupdiv at distances 25 px from parent sides\r
-    //in other words, padding keys lower or euqals to 1 will be conbsidered as percentage, otherwise as absolute measures in px\r
-    p._setBoundsInside = function(){\r
-        var parent = this.invoker;\r
-        var pd = this.bounds;\r
-        var boundsExact = this.boundsExact;\r
-\r
-        var div = this.getDiv();\r
-        \r
-        this.preSizeFcn();\r
-        \r
-        var bounds = this.getBoundsOf(parent);\r
-       \r
-        \r
-        var x=bounds.x;\r
-        var y = bounds.y;\r
-        var w = bounds.width;\r
-        var h = bounds.height;\r
-\r
-        \r
-        var pInt = parseInt;\r
-        //rebuilding:\r
-\r
-        var padding = {\r
-            top: pd['top'],\r
-            left:pd['left'],\r
-            bottom:pd['bottom'],\r
-            right:pd['right']\r
-        };\r
-\r
-        for(var k in padding){\r
-            if(padding.hasOwnProperty(k)){\r
-                if(padding[k]<=0){\r
-                    padding[k]=0;\r
-                }else if(padding[k]<=1){\r
-                    padding[k] = k=='top' || k =='bottom' ? h*padding[k] : w*padding[k];\r
-                }else{\r
-                    padding[k] = pInt(padding[k]);\r
-                }\r
-            }\r
-        }\r
-\r
-        var maxSize = {\r
-            'width':w-padding['left']-padding['right']+this.shadowOffset,\r
-            'height':h-padding['top']-padding['bottom']+this.shadowOffset\r
-        };\r
-        \r
-        this.setMaxSize({\r
-            width:maxSize.width,\r
-            height:maxSize.height\r
-        }); //a copy cause the argument will be modified\r
-\r
-        if(boundsExact){\r
-            this.setMinSize({\r
-                width:maxSize.width,\r
-                height:maxSize.height\r
-            }); //a copy cause the argument will be modified\r
-\r
-        }\r
-\r
-        this.postSizeFcn();\r
-    };\r
-    \r
-    p.preSizeFcn = function(){\r
-        var div = this.getDiv();\r
-        var subdivs = div.children();\r
-        subdivs.css('display','none');\r
-        var subdivsshow = subdivs.eq(1);\r
-        if(this.showClose || this.title){\r
-            subdivsshow = subdivsshow.add(subdivs.eq(0));\r
-        }\r
-        if(this.showOk){\r
-            subdivsshow = subdivsshow.add(subdivs.eq(2));\r
-        }\r
-\r
-        subdivsshow = subdivsshow.add(div);\r
-        subdivsshow.css({\r
-            'display':'block',\r
-            'float':'',\r
-            'overflow' : 'visible'\r
-        });\r
-\r
-\r
-        //reset properties:\r
-        subdivsshow.css({\r
-            'maxHeight':'',\r
-            'maxWidth':'',\r
-            'minHeight':'',\r
-            'minWidth':'',\r
-            'height':'',\r
-            'width':'',\r
-            'overflow':'',\r
-            'visibility' : 'visible',\r
-            'float':''\r
-        });\r
-        div.css({\r
-            'margin':'0px',\r
-            'zIndex':this.zIndex,\r
-            'position':'absolute'\r
-        });\r
-\r
-\r
-        //place the div in the upperleft corner of the window\r
-        var bounds = this.getBoundsOf(); //returns the window rectangle\r
-        div.css({\r
-            'left':bounds.x+'px',\r
-            'top':bounds.y+'px'\r
-        });\r
-\r
-    //            var topDiv =subdivs.eq(0);\r
-    //            var centralDiv = subdivs.eq(1);\r
-    //            var bottomDiv = subdivs.eq(2);\r
-    //            console.log('presize');\r
-    //            console.log('width: '+ topDiv.width()+' css-minWidth: ' +topDiv.css('minWidth')+' css-width: ' +topDiv.css('width')+' css-maxWidth: ' +topDiv.css('maxWidth'));\r
-    //            console.log('width: '+centralDiv.width()+' css-minWidth: ' +centralDiv.css('minWidth')+' css-width: ' +centralDiv.css('width')+' css-maxWidth: ' +centralDiv.css('maxWidth'));\r
-    //            console.log('width: '+bottomDiv.width()+' css-minWidth: ' +bottomDiv.css('minWidth')+' css-width: ' +bottomDiv.css('width')+' css-maxWidth: ' +bottomDiv.css('maxWidth'));\r
-    //            console.log(' ' );\r
-    };\r
-    \r
-    p.postSizeFcn = function(){\r
-        \r
-        //set title and close button to span whole width, if necessary\r
-        //closeButton.outerWidth should be zero if this.showClose = false\r
-        //titleInput.outerWidth(true) should be equal to titleInput.width(), as margins borders and padding are zero, however we want to calculate it safely\r
-        var div = this.getDiv();\r
-        var subdivs = div.children();\r
-        var topDiv = subdivs.eq(0);\r
-\r
-        var centralDiv = subdivs.eq(1);\r
-        //\r
-        var bottomDiv = subdivs.eq(2);\r
-        //set central div height. We could set the central div height only if necessary, or the central div max height,\r
-        //but this has side effect in IE\r
-       \r
-        var maxHeight = (div.height()-topDiv.outerHeight(true)-bottomDiv.outerHeight(true)-\r
-            (centralDiv.outerHeight(true)-centralDiv.height()));\r
-       \r
-        //setting centralDiv maxHeight or height is actually the same, we use height to be sure...\r
-        if(maxHeight>0){\r
-            centralDiv.css('height',maxHeight+'px');\r
-        }\r
-       \r
-        //to be put AT THE END otherwise bug in IE7\r
-        centralDiv.css('overflow','auto');\r
-        //after the command above, centralDiv.hegith is set to zero in IE7.\r
-        //It might be a refresh problem cause if we display an alert then the size is properly set.\r
-        //However, put it at the end\r
-        \r
-\r
-        //                console.log('postsize');\r
-        //                console.log('width: '+ topDiv.width()+' css-minWidth: ' +topDiv.css('minWidth')+' css-width: ' +topDiv.css('width')+' css-maxWidth: ' +topDiv.css('maxWidth'));\r
-        //                console.log('width: '+centralDiv.width()+' css-minWidth: ' +centralDiv.css('minWidth')+' css-width: ' +centralDiv.css('width')+' css-maxWidth: ' +centralDiv.css('maxWidth'));\r
-        //                console.log('width: '+bottomDiv.width()+' css-minWidth: ' +bottomDiv.css('minWidth')+' css-width: ' +bottomDiv.css('width')+' css-maxWidth: ' +bottomDiv.css('maxWidth'));\r
-        //                console.log(' ' );\r
-\r
-        \r
-        this.setOffset();\r
-\r
-    };\r
-\r
-    p._setOffsetAsPopup = function(){\r
-        var div = this.getDiv();\r
-\r
-        var shadowOffset = this.shadowOffset;\r
-        var windowRectangle = this.getBoundsOf(wdw); //returns the window rectangle\r
-        var invoker = this.invoker;\r
-        var invokerOffset = invoker.offset();\r
-\r
-        var invokerOuterHeight = invoker.outerHeight();\r
-        var spaceAbove = invokerOffset.top - windowRectangle.y;\r
-        var spaceBelow = windowRectangle.height - invokerOuterHeight - spaceAbove;\r
-        var placeAbove = spaceAbove > spaceBelow && div.outerHeight(false) + shadowOffset > spaceBelow;\r
-\r
-        var invokerOuterWidth = invoker.outerWidth();\r
-        var spaceRight = windowRectangle.x + windowRectangle.width - invokerOffset.left ;\r
-        var spaceLeft = invokerOffset.left + invokerOuterWidth - windowRectangle.x;\r
-        var placeLeft = spaceLeft > spaceRight && div.outerWidth(false) + shadowOffset > spaceRight;\r
-\r
-\r
-\r
-        //setting the top and left. This must be done at last because popupDiv.outerHeight(true)\r
-        //must have been computed according to the height set above...\r
-        var offs = {\r
-            'left': placeLeft ? invokerOffset.left+ invokerOuterWidth - div.outerWidth(true)-shadowOffset : invokerOffset.left,\r
-            'top': (placeAbove ? invokerOffset.top -  div.outerHeight(true) :\r
-                invokerOffset.top + invokerOuterHeight)\r
-        };\r
-        div.css({\r
-            'top':offs.top+'px',\r
-            'left':offs.left+'px'\r
-        });\r
-        this.refreshShadow(); //repositioning the shadow\r
-    };\r
-\r
-    p._setOffsetInside = function(){\r
-       \r
-        var div = this.getDiv();\r
-\r
-        \r
-        var parent = this.invoker;\r
-        var bounds = this.getBoundsOf(parent);\r
-        var pd = this.bounds;\r
-\r
-        var x=bounds.x;\r
-        var y = bounds.y;\r
-        var w = bounds.width;\r
-        var h = bounds.height;\r
-\r
-\r
-        var pInt = parseInt;\r
-        //rebuilding:\r
-\r
-        var padding = {\r
-            top: pd['top'],\r
-            left:pd['left'],\r
-            bottom:pd['bottom'],\r
-            right:pd['right']\r
-        };\r
-\r
-        for(var k in padding){\r
-            if(padding.hasOwnProperty(k)){\r
-                if(padding[k]<=0){\r
-                    padding[k]=0;\r
-                }else if(padding[k]<=1){\r
-                    padding[k] = k=='top' || k =='bottom' ? h*padding[k] : w*padding[k];\r
-                }else{\r
-                    padding[k] = pInt(padding[k]);\r
-                }\r
-            }\r
-        }\r
-\r
-        var maxSize = {\r
-            'width':w-padding['left']-padding['right']+this.shadowOffset,\r
-            'height':h-padding['top']-padding['bottom']+this.shadowOffset\r
-        };\r
-        //we add shadowOffset cause in convertSize below we will substract the shadow. However, in this case the shadow is NOT\r
-        //counted in the size\r
-\r
-        var ww = div.outerWidth(true);\r
-        var hh = div.outerHeight(true);\r
-\r
-        var spanLeft = 0;\r
-        var spanTop = 0;\r
-        if(ww<maxSize.width){\r
-            spanLeft = (maxSize.width-ww)/2;\r
-        }\r
-        if(hh < maxSize.height){\r
-            spanTop = (maxSize.height-hh)/2;\r
-        }\r
-\r
-        div.css({\r
-            'left':(x+padding['left']+spanLeft)+'px',\r
-            'top':(y+padding['top']+spanTop)+'px'\r
-        });\r
-\r
-        this.refreshShadow(); //repositioning the shadow\r
-    };\r
-\r
-    p.getBounds = function(){\r
-        return this.getBoundsOf(this.getDiv());\r
-    };\r
-\r
-    p.getBoundsOf = function(jQueryElement){\r
-        var ret = {\r
-            x:0,\r
-            y:0,\r
-            width:0,\r
-            height:0\r
-        };\r
-        if(!jQueryElement || !(jQueryElement instanceof $)){\r
-            jQueryElement = wdw;\r
-        }\r
-        if(jQueryElement[0] === w_){\r
-            ret.x = jQueryElement.scrollLeft();\r
-            ret.y = jQueryElement.scrollTop();\r
-        }else{\r
-            var offs = jQueryElement.offset();\r
-            ret.x = offs.left;\r
-            ret.y = offs.top;\r
-        }\r
-        ret.width = jQueryElement.width();\r
-        ret.height = jQueryElement.height();\r
-        return ret;\r
-    };\r
-    //getDiv must be sizable (preShowFcn must have been called)\r
-    p.setMaxSize = function(size){\r
-        var div = this.getDiv();\r
-        \r
-        this._convertSize(div, size);\r
-        var css;\r
-        if(size.hasOwnProperty('width')){\r
-            if(!css){\r
-                css = {};\r
-            }\r
-            css.maxWidth = size.width+'px';\r
-        }\r
-        if(size.hasOwnProperty('height')){\r
-            if(!css){\r
-                css = {};\r
-            }\r
-            css.maxHeight = size.height+'px';\r
-        }\r
-        if(css){\r
-            div.css(css);\r
-        }\r
-        return size;\r
-    };\r
-    //getDiv must be sizable (preShowFcn must have been called)\r
-    p.setMinSize = function(size){\r
-        var div = this.getDiv();\r
-        \r
-        this._convertSize(div, size);\r
-        var css;\r
-        if(size.hasOwnProperty('width')){\r
-            if(!css){\r
-                css = {};\r
-            }\r
-            css.minWidth = size.width+'px';\r
-        }\r
-        if(size.hasOwnProperty('height')){\r
-            if(!css){\r
-                css = {};\r
-            }\r
-            css.minHeight = size.height+'px';\r
-        }\r
-        if(css){\r
-            div.css(css);\r
-        }\r
-        return size;\r
-    };\r
-    //div must be display!=hidden. size is a dict with at least one of the fields 'width' and 'height'\r
-    p._convertSize = function(div, size){\r
-        var eD = {\r
-            'width': div.outerWidth(true)-div.width(),\r
-            'height':div.outerHeight(true)-div.height()\r
-        };\r
-\r
-        if(size.hasOwnProperty('width')){\r
-            size.width -= (eD.width + this.shadowOffset);\r
-        }\r
-        if(size.hasOwnProperty('height')){\r
-            size.height -= (eD.height + this.shadowOffset);\r
-        }\r
-    };\r
-\r
-    p.offset = function(offs){\r
-        var div = this.getDiv();\r
-        div.offset(offs);\r
-    };\r
-\r
-    p.close = function(){\r
-        this.__isClosing = true;\r
-        if(this._resizeTimeInterval!==undefined){\r
-            clearInterval(this._resizeTimeInterval);\r
-            this._resizeTimeInterval = undefined;\r
-        }\r
-        this.setFocusCycleRoot(false);\r
-        var div = this.getDiv();\r
-        var shadow = this._getShadow(); //$('#'+this.getShadowDivId());\r
-        if(shadow !== undefined){\r
-            shadow.remove();\r
-        }\r
-        var me = this;\r
-        var remove = this.defaultCloseOperation == 'remove';\r
-        div.hide(this.fadeOutTime, function(){\r
-\r
-            if(remove){\r
-                div.remove();\r
-            }\r
-\r
-            //restore event data on invoker, if any\r
-            var id = '_tmpHandlers'+me.getId();\r
-            if(me[id]){\r
-                var oldHandlers = me[id];\r
-                delete me[id];\r
-                me.invoker.unbind('click');\r
-                for(var k =0; k< oldHandlers.length; k++){\r
-                    var h = oldHandlers[k];\r
-                    me.invoker.bind(h.type+(h.namespace ? "."+h.namespace : ""),h.handler);\r
-                }\r
-            }\r
-\r
-            delete me['__isClosing'];\r
-            if(arguments && arguments.length>0 && typeof arguments[0] === 'string'){\r
-                me.trigger('close',arguments[0]);\r
-            }else{\r
-                me.trigger('close');\r
-            }\r
-        });\r
-\r
-    };\r
-\r
-    //sets a t=timeout and returns t. eventName can be 'show' or 'close'\r
-    p.setTimeout = function(eventName, millseconds){\r
-        var me = this;\r
-        var t=undefined;\r
-        if(eventName === 'show'){\r
-            t=setTimeout(function(){\r
-                me.show();\r
-            },millseconds);\r
-        }else if(eventName === 'close'){\r
-            t=setTimeout(function(){\r
-                me.close();\r
-            },millseconds);\r
-        }\r
-        return t;\r
-    };\r
-\r
-    p.getShadowDivId = function(){\r
-        return this.getId()+"_shadow";\r
-    };\r
-\r
-    p.getFocusAttr = function(){\r
-        return this.getId()+"_focus";\r
-    };\r
-\r
-    p.getFormDataAttrName = function(){\r
-        return this.getId()+"_data";\r
-    };\r
-\r
-})(PopupDiv.prototype);
\ No newline at end of file
diff --git a/telemeta/htdocs/js/resourcemap.js b/telemeta/htdocs/js/resourcemap.js
deleted file mode 100644 (file)
index 881b7a2..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-function ResourceMap(list, cfg) {
-    var  that      = this;
-    that.list      = null;
-    that.container = null;
-    that.map       = null;
-
-    that.init = function(list, cfg) {
-        that.cfg = cfg;
-        $(document).ready(function() {
-            that.log("init");
-            that.list = $(list);
-            that.container = $('<div/>').addClass('gmap').css({'width': '100%', 'height': 300});
-            that.list.css('display', 'none').after(that.container);
-            var resizeTimer = null;
-            $(window).resize(function() {
-                if (resizeTimer)
-                    clearTimeout(resizeTimer);
-                resizeTimer = setTimeout(that.resize, 100);
-            });
-            that.resize();
-        });
-        google.load('maps', '2');
-        google.setOnLoadCallback(function() {
-            that.createMap();
-            that.parseResources();
-            $(window).bind('unload', google.maps.Unload);
-        });
-    }
-
-    that.resize = function() {
-        if (that.container.css('display') == 'block') {
-            newHeight = that.container.height() + $(window).height() - $("#layout").height() + $('#footer').height();
-            if (newHeight < 300)
-                newHeight = 300;
-            if (newHeight != that.container.height()) {
-                that.container.height(newHeight);
-                if (that.map) {
-                    that.map.checkResize();
-                }
-            }
-
-        }
-    }
-
-    that.toggle = function(force) {
-        force = typeof(force) == "undefined" ? null : force;
-        if (force == 'list' || (!force && that.list.css('display') == 'none')) {
-            that.container.css('display', 'none');
-            that.list.css('display', 'block');
-        } else {
-            that.container.css('display', 'block');
-            that.list.css('display', 'none');
-            that.resize();
-        }
-    }
-
-    that.log = function(msg) {
-        if (typeof(console) != "undefined" && typeof(console.log) != undefined) {
-            console.log(msg);
-        }
-    }
-
-    that.makeInfoBox = function(name, link, linktitle) {
-        var info = $('<div/>').addClass('resourcemap-info');
-        info.append($('<h2/>').text(name));
-        info.append($('<a/>').attr('href', link).text(linktitle));
-        return info.wrap('<div/>').parent().html();
-    }
-
-    that.showResourceInfo = function(marker, resourceElement) {
-        var info = $('<div/>').addClass('resourcemap-info');
-        marker.openInfoWindowHtml(info.get(0));
-        var re  = /^resource-/;
-        var id  = resourceElement.attr('id').replace(re, '');
-        var uri = that.cfg.countryInfoUri.replace('RESOURCEID', id);
-        
-        $.get(uri, function(data) {
-            info.html(data);
-            //marker.openInfoWindowHtml(info.get(0));
-        });
-    }
-
-    that.parseResources = function() {
-        $('.resourcemap-element').each(function(i, e) {
-            e = $(e)
-            var input     = e.find('.resourcemap-lat');
-            if (input.length) {
-                var lat       = parseFloat(input.attr('value'));
-                var lng       = parseFloat(e.find('.resourcemap-lng').attr('value'));
-                //var name      = $.trim(e.find('.resourcemap-name').text());
-                //var link      = e.find('a').attr('href');
-                //var linktitle = e.find('a').attr('title');
-                var marker    = new google.maps.Marker(new GLatLng(lat, lng), {title: name});
-                //var info      = that.makeInfoBox(name, link, linktitle);
-                google.maps.Event.addListener(marker, "click", function() {
-                    that.showResourceInfo(marker, e);
-                    //marker.openInfoWindowHtml(info);
-                });
-                that.map.addOverlay(marker);
-            }
-        });
-    }        
-
-    that.createMap = function() {
-        that.log("GMap loaded");
-        if (google.maps.BrowserIsCompatible()) {
-            that.map = new google.maps.Map2(that.container[0]);
-            var bounds = new GLatLngBounds();
-            that.map.setCenter(new GLatLng(0, 0), that.map.getBoundsZoomLevel(bounds)); // France
-            that.map.setUIToDefault();
-        } else {
-            that.log("Browser isn't compatible with GMap ?!");
-            that.toggle();
-        }
-    }
-
-    that.init(list, cfg);
-}
diff --git a/telemeta/htdocs/js/swfobject.js b/telemeta/htdocs/js/swfobject.js
deleted file mode 100644 (file)
index e7edd42..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
- *
- * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:
- * http://www.opensource.org/licenses/mit-license.php
- *
- */
-if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;
\ No newline at end of file
diff --git a/telemeta/htdocs/js/tools-temp.js b/telemeta/htdocs/js/tools-temp.js
deleted file mode 100644 (file)
index d55ed1b..0000000
+++ /dev/null
@@ -1,252 +0,0 @@
-/** herre tools or functions mainly copied and modified from internet which might be useful
- * THIS SCRIPT IS NOT LOADED IN ANY PAGE, WE JUST WANT TO COLLECT HERE FUNCTION UTILITIES WHICH ARE NOT USED ANYMORE, BUT WHICH MIGHT
- * BE USEFUL AGAIN
- */
-var temp_utilitites = {
-
-    /**
-     * old function used to assess span width. We calculate the width of a span niw, to be more sure
-     */
-    textWidth : function(text, fontSize) {
-        var ratio = 3/5;
-        return text.length * ratio * fontSize;
-    },
-
-    //css specific functions:
-    //get computed style first (cross browser solution, from http://blog.stchur.com/2006/06/21/css-computed-style/
-    getComputedStyle : function(_elem, _style){
-        var computedStyle;
-        var $J = this.$J;
-        if(_elem instanceof $J){ //note: '_elem instanceof this.$J' doesnt work. why??
-            _elem = _elem.get(0);
-        }
-        if (typeof _elem.currentStyle != 'undefined'){
-            computedStyle = _elem.currentStyle;
-        }else{
-            computedStyle = document.defaultView.getComputedStyle(_elem, null);
-        }
-        return computedStyle[_style];
-    },
-    //returns a hex color from strColor. strColor can be one of the predefined css colors (eg, 'aliceBlue', case insensitive)
-    //or rgb (eg: rgb(12,0,45)) or an hex color (eg, '#ff98a3' or '#f8g'). Leading and trailing spaces will be omitted,
-    //case is insensitive, an empty string is returned in case of error (bad format string, parseInt errors etcetera..)
-    color : function(strColor){
-        if(!strColor){
-            return '';
-        }
-        strColor = strColor.replace(/(^\s+|\s+$)/g,'').toLowerCase();
-        if(!strColor){
-            return '';
-        }
-        var predefined_colors = {
-            aliceblue:"#f0f8ff",
-            antiquewhite:"#faebd7",
-            aqua:"#00ffff",
-            aquamarine:"#7fffd4",
-            azure:"#f0ffff",
-            beige:"#f5f5dc",
-            bisque:"#ffe4c4",
-            black:"#000000",
-            blanchedalmond:"#ffebcd",
-            blue:"#0000ff",
-            blueviolet:"#8a2be2",
-            brown:"#a52a2a",
-            burlywood:"#deb887",
-            cadetblue:"#5f9ea0",
-            chartreuse:"#7fff00",
-            chocolate:"#d2691e",
-            coral:"#ff7f50",
-            cornflowerblue:"#6495ed",
-            cornsilk:"#fff8dc",
-            crimson:"#dc143c",
-            cyan:"#00ffff",
-            darkblue:"#00008b",
-            darkcyan:"#008b8b",
-            darkgoldenrod:"#b8860b",
-            darkgray:"#a9a9a9",
-            darkgrey:"#a9a9a9",
-            darkgreen:"#006400",
-            darkkhaki:"#bdb76b",
-            darkmagenta:"#8b008b",
-            darkolivegreen:"#556b2f",
-            darkorange:"#ff8c00",
-            darkorchid:"#9932cc",
-            darkred:"#8b0000",
-            darksalmon:"#e9967a",
-            darkseagreen:"#8fbc8f",
-            darkslateblue:"#483d8b",
-            darkslategray:"#2f4f4f",
-            darkslategrey:"#2f4f4f",
-            darkturquoise:"#00ced1",
-            darkviolet:"#9400d3",
-            deeppink:"#ff1493",
-            deepskyblue:"#00bfff",
-            dimgray:"#696969",
-            dimgrey:"#696969",
-            dodgerblue:"#1e90ff",
-            firebrick:"#b22222",
-            floralwhite:"#fffaf0",
-            forestgreen:"#228b22",
-            fuchsia:"#ff00ff",
-            gainsboro:"#dcdcdc",
-            ghostwhite:"#f8f8ff",
-            gold:"#ffd700",
-            goldenrod:"#daa520",
-            gray:"#808080",
-            grey:"#808080",
-            green:"#008000",
-            greenyellow:"#adff2f",
-            honeydew:"#f0fff0",
-            hotpink:"#ff69b4",
-            indianred:"#cd5c5c",
-            indigo:"#4b0082",
-            ivory:"#fffff0",
-            khaki:"#f0e68c",
-            lavender:"#e6e6fa",
-            lavenderblush:"#fff0f5",
-            lawngreen:"#7cfc00",
-            lemonchiffon:"#fffacd",
-            lightblue:"#add8e6",
-            lightcoral:"#f08080",
-            lightcyan:"#e0ffff",
-            lightgoldenrodyellow:"#fafad2",
-            lightgray:"#d3d3d3",
-            lightgrey:"#d3d3d3",
-            lightgreen:"#90ee90",
-            lightpink:"#ffb6c1",
-            lightsalmon:"#ffa07a",
-            lightseagreen:"#20b2aa",
-            lightskyblue:"#87cefa",
-            lightslategray:"#778899",
-            lightslategrey:"#778899",
-            lightsteelblue:"#b0c4de",
-            lightyellow:"#ffffe0",
-            lime:"#00ff00",
-            limegreen:"#32cd32",
-            linen:"#faf0e6",
-            magenta:"#ff00ff",
-            maroon:"#800000",
-            mediumaquamarine:"#66cdaa",
-            mediumblue:"#0000cd",
-            mediumorchid:"#ba55d3",
-            mediumpurple:"#9370d8",
-            mediumseagreen:"#3cb371",
-            mediumslateblue:"#7b68ee",
-            mediumspringgreen:"#00fa9a",
-            mediumturquoise:"#48d1cc",
-            mediumvioletred:"#c71585",
-            midnightblue:"#191970",
-            mintcream:"#f5fffa",
-            mistyrose:"#ffe4e1",
-            moccasin:"#ffe4b5",
-            navajowhite:"#ffdead",
-            navy:"#000080",
-            oldlace:"#fdf5e6",
-            olive:"#808000",
-            olivedrab:"#6b8e23",
-            orange:"#ffa500",
-            orangered:"#ff4500",
-            orchid:"#da70d6",
-            palegoldenrod:"#eee8aa",
-            palegreen:"#98fb98",
-            paleturquoise:"#afeeee",
-            palevioletred:"#d87093",
-            papayawhip:"#ffefd5",
-            peachpuff:"#ffdab9",
-            peru:"#cd853f",
-            pink:"#ffc0cb",
-            plum:"#dda0dd",
-            powderblue:"#b0e0e6",
-            purple:"#800080",
-            red:"#ff0000",
-            rosybrown:"#bc8f8f",
-            royalblue:"#4169e1",
-            saddlebrown:"#8b4513",
-            salmon:"#fa8072",
-            sandybrown:"#f4a460",
-            seagreen:"#2e8b57",
-            seashell:"#fff5ee",
-            sienna:"#a0522d",
-            silver:"#c0c0c0",
-            skyblue:"#87ceeb",
-            slateblue:"#6a5acd",
-            slategray:"#708090",
-            slategrey:"#708090",
-            snow:"#fffafa",
-            springgreen:"#00ff7f",
-            steelblue:"#4682b4",
-            tan:"#d2b48c",
-            teal:"#008080",
-            thistle:"#d8bfd8",
-            tomato:"#ff6347",
-            turquoise:"#40e0d0",
-            violet:"#ee82ee",
-            wheat:"#f5deb3",
-            white:"#ffffff",
-            whitesmoke:"#f5f5f5",
-            yellow:"#ffff00",
-            yellowgreen:"#9acd32"
-        };
-        var cl = predefined_colors[strColor];
-        if(cl){
-            return cl;
-        }
-        var pint = parseInt;
-        //color parsers: note that the order is not random: we put first the most likely case ('#aaaaaa') and at last
-        //the less one ('rgb(...)'), this might increase performances in most cases, especially if this method is called from
-        //within a loop
-        var color_defs = [
-        {
-            re: /^#*(\w{2})(\w{2})(\w{2})$/, //example: ['#00ff00', '336699'],
-            process: function (bits){
-                return [pint(bits[1], 16),pint(bits[2], 16),pint(bits[3], 16)];
-            }
-        },
-
-        {
-            re: /^#*(\w{1})(\w{1})(\w{1})$/, //example: ['#fb0', 'f0f'],
-            process: function (bits){
-                return [pint(bits[1] + bits[1], 16),pint(bits[2] + bits[2], 16),pint(bits[3] + bits[3], 16)];
-            }
-        },
-        {
-            re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/, //example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],
-            process: function (bits){
-                return [pint(bits[1]), pint(bits[2]),pint(bits[3])];
-            }
-        }
-
-        ];
-
-        // search through the definitions to find a match
-        var nan = isNaN;
-        for (var i = 0; i < color_defs.length; i++) {
-            var re = color_defs[i].re;
-            var processor = color_defs[i].process;
-            var bits = re.exec(strColor);
-            if (bits) {
-                var channels = processor(bits);
-                if(channels.length ==3){
-                    for(var j=0; j<3; j++){
-                        var c = channels[j];
-                        c = (nan(c) || c< 0 ? 0 : (c>255 ? 255 :c));
-                        c = c.toString(16);
-                        var len = c.length;
-                        switch(len){
-                            case 1:
-                                c = '0'+c;
-                                break;
-                            case 2:
-                                break;
-                            default:
-                                return '';
-                        }
-                        channels[j] = c;
-                    }
-                    return '#'+channels.join('');
-                }
-            }
-        }
-        return '';
-    }
-}
\ No newline at end of file